From 7c5019be838db5f9494dcecb83e12b79872b13bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 25 Feb 2025 14:07:12 +0100 Subject: [PATCH 01/72] Btor2 is now in project --- settings.gradle.kts | 1 + .../btor2-frontend/src/main/antlr/Btor2.g4 | 70 ++++++ .../mit/theta/frontend/models/Btor2Const.kt | 36 ++++ .../mit/theta/frontend/models/Btor2Model.kt | 66 ++++++ .../theta/frontend/models/Btor2Operation.kt | 201 ++++++++++++++++++ .../mit/theta/frontend/models/Btor2States.kt | 105 +++++++++ .../theta/frontend/visitors/Btor2Visitor.kt | 59 +++++ .../frontend/visitors/ConstantVisitor.kt | 56 +++++ .../mit/theta/frontend/visitors/IdVisitor.kt | 30 +++ .../frontend/visitors/OperationVisitor.kt | 131 ++++++++++++ .../theta/frontend/visitors/SortVisitor.kt | 33 +++ .../theta/frontend/visitors/StateVisitor.kt | 86 ++++++++ 12 files changed, 874 insertions(+) create mode 100644 subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2States.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index f9024354e6..27c04ba06a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -25,6 +25,7 @@ include( "common/ltl-cli", "frontends/c-frontend", + "frontends/btor2-frontend", "frontends/petrinet-frontend/petrinet-model", "frontends/petrinet-frontend/petrinet-analysis", "frontends/petrinet-frontend/petrinet-xsts", diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 new file mode 100644 index 0000000000..f40f1380d5 --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -0,0 +1,70 @@ +// WARNING: this grammar is NOT an official BTOR2 grammar and will accept invalid btor2 circuits. +// Check your circuit with catbtor before using this grammar! +grammar Btor2; + +// Lexer rules +WS: [ ]+ -> skip; +NUM: [0-9]+; +PLUS: '+'; +MINUS: '-'; +UNARYOP: 'not' + | 'inc' | 'dec' | 'neg' + | 'redand' | 'redor' | 'redxor'; +TERNARYOP: 'ite' | 'write'; +BINOP: 'and' | 'nand' | 'nor' | 'or' | 'xor' | 'iff' | 'implies' + | 'eq' | 'neq' + | 'slt' | 'sle' | 'sgt' | 'sgte' + | 'ult' | 'ule' | 'ugt' | 'ugte' + | 'concat' | 'add' | 'mul' + | 'udiv' | 'urem' + | 'sdiv' | 'srem' | 'smod' + | 'saddo' | 'sdivo' | 'smulo' | 'ssubo' + | 'uaddo' | 'umulo' | 'usubo' + | 'rol' | 'ror' | 'sll' | 'sra' | 'srl' | 'read'; +SYMBOL: ~[ \r\n]+; +COMMENT: ';' ~[\r\n]+; + +// Parser rules +btor2: (line '\n')* line ('\n')*; + +line: comment | node (symbol)? (comment)?; + +comment: COMMENT; + +nid: NUM; +sid: NUM; + +node: ( array_sort | bitvec_sort ) #sort // sort declaration + | (input | state | init | next | property) #stateful + | (opidx | op) #operation + | (filled_constant | constant | constant_d | constant_h) #constantNode; + +opidx: ext | slice; + +ext: id=nid ('uext'|'sext') sid opd1=nid w=NUM; +slice: id=nid 'slice' sid opd1=nid u=NUM l=NUM; + +op: binop | unop | terop; + +binop: id=nid BINOP sid opd1=nid opd2=nid; +unop: id=nid UNARYOP sid opd1=nid; +terop: id=nid TERNARYOP sid opd1=nid opd2=nid opd3=nid; + +input: id=nid ('input') sid; + +init: id=nid 'init' sid param1=nid param2=nid; +next: id=nid 'next' sid param1=nid param2=nid; + +state: id=nid 'state' sid; + +property: id=nid property_type=('bad' | 'constraint' | 'fair' | 'output' | 'justice' ) param=nid; + +array_sort: id=sid 'sort array' sid1=sid sid2=sid; +bitvec_sort: id=sid 'sort bitvec' width=NUM; + +constant: id=nid 'const' sid bin=NUM; +constant_d: id=nid 'constd' sid (MINUS)? dec=NUM; +constant_h: id=nid 'consth' sid hex=SYMBOL; +filled_constant: id=nid fill=('one' | 'ones' | 'zero') sid; + +symbol: SYMBOL; \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt new file mode 100644 index 0000000000..072c94138f --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.models + +import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.bvtype.BvLitExpr + +data class Btor2Const(override val nid: UInt, val value: BooleanArray, override val sort: Btor2Sort) : Btor2Node(nid, sort) +{ + override fun getVar(): VarDecl<*>? { + return null + } + + override fun getExpr(): Expr<*> { + return BvLitExpr.of(value) + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt new file mode 100644 index 0000000000..4f3d12a0ed --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -0,0 +1,66 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.models + +import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.type.Expr + +public interface Btor2NodeVisitor { + fun visit(node: Btor2UnaryOperation, param: P) : R + fun visit(node: Btor2BinaryOperation, param: P) : R + fun visit(node: Btor2SliceOperation, param: P) : R + fun visit(node: Btor2ExtOperation, param: P) : R + fun visit(node: Btor2Comparison, param: P) : R + fun visit(node: Btor2Const, param: P) : R + fun visit(node: Btor2BitvecSort, param: P) : R + fun visit(node: Btor2Input, param: P) : R + fun visit(node: Btor2State, param: P) : R + fun visit(node: Btor2Init, param: P) : R + fun visit(node: Btor2Next, param: P) : R + fun visit(node: Btor2Bad, param: P) : R +} + + +object Btor2Circuit { + var nodes: MutableMap = mutableMapOf() + var sorts: MutableMap = mutableMapOf() + var inits: MutableMap = mutableMapOf() + var ops: MutableMap = mutableMapOf() + var bads : MutableMap = mutableMapOf() + var nexts: MutableMap = mutableMapOf() +} + +// sortID lookup in Btor2Sort +abstract class Btor2Node(id: UInt, btor2Sort: Btor2Sort? = null) { + abstract val nid: UInt + abstract val sort: Btor2Sort? + + open fun getVar(): VarDecl<*>? { + return null + } + + abstract fun accept(visitor: Btor2NodeVisitor, param : P): R + abstract fun getExpr(): Expr<*> + +} + +abstract class Btor2Sort(sid: UInt, width: UInt) { + abstract val sid: UInt + abstract val width: UInt +} + +data class Btor2BitvecSort(override val sid: UInt, override val width: UInt) : Btor2Sort(sid, width) \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt new file mode 100644 index 0000000000..e5435ae025 --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -0,0 +1,201 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.models + +import hu.bme.mit.theta.core.decl.Decls +import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.stmt.AssignStmt +import hu.bme.mit.theta.core.stmt.AssumeStmt +import hu.bme.mit.theta.core.stmt.Stmt +import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.abstracttype.NegExpr +import hu.bme.mit.theta.core.type.booltype.BoolType +import hu.bme.mit.theta.core.type.booltype.NotExpr +import hu.bme.mit.theta.core.type.bvtype.* + + +abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) +{ + abstract fun getStmt(negate: Boolean): Stmt + +} +// Operators +data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2UnaryOperator, val operand: Btor2Node) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("unary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + return when(operator) + { + Btor2UnaryOperator.NOT -> TODO() + Btor2UnaryOperator.INC -> TODO() + Btor2UnaryOperator.DEC -> TODO() + Btor2UnaryOperator.NEG -> TODO() + } + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + TODO("Not yet implemented") + } +} + +data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val w : UInt) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("ext_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + TODO("Not yet implemented") + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + TODO("Not yet implemented") + } +} + +data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val u : UInt, val l : UInt) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("slice_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + TODO("Not yet implemented") + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + TODO("Not yet implemented") + } +} + +data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2BinaryOperator, val op1: Btor2Node, val op2: Btor2Node) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("binary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + return when(operator) + { + Btor2BinaryOperator.ADD -> BvAddExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) + else -> TODO() + } + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + return when(operator) + { + Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) + else -> TODO() + } + } +} + +data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2ComparisonOperator, val op1: Btor2Node, val op2: Btor2Node) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("comparison_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + return when(operator) + { + Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1.getExpr() as Expr , op2.getExpr()as Expr) + else -> TODO() + } + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + val expr = when(operator) + { + Btor2ComparisonOperator.EQ -> getExpr() as Expr + else -> TODO() + } + if(negate) + { + return AssumeStmt.of(NotExpr.of(expr)) + } else { + return AssumeStmt.of(expr) + } + } +} + +enum class Btor2UnaryOperator { + NOT, + INC, + DEC, + NEG +} + +enum class Btor2ComparisonOperator { + EQ, + NEQ, + SLT, + SLE, + SGT, + SGTE, + ULT, + ULE, + UGT, + UGTE +} + +enum class Btor2BinaryOperator { + AND, + NAND, + NOR, + OR, + XOR, + ADD, + MUL, + UDIV, + UREM, + SDIV, + SREM, + SMOD +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2States.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2States.kt new file mode 100644 index 0000000000..fdcd33faa7 --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2States.kt @@ -0,0 +1,105 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.models + +import hu.bme.mit.theta.core.decl.Decls +import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.anytype.RefExpr +import hu.bme.mit.theta.core.type.bvtype.BvExprs +import hu.bme.mit.theta.core.type.bvtype.BvType + +// Inputs and States +data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort) : Btor2Node(nid, sort) +{ + val value = Decls.Var("input_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + TODO("Not yet implemented") + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + +} +data class Btor2State(override val nid: UInt, override val sort: Btor2Sort) : Btor2Node(nid, sort) { + val value = Decls.Var("state_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl? { + return value + } + + override fun getExpr(): Expr<*> { + return RefExpr.of(value) + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} +data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, val state: Btor2State, val value: Btor2Const) : Btor2Node(nid, sort) +{ + val declsVar = Decls.Var("init_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return declsVar + } + + override fun getExpr(): Expr<*> { + TODO("Not yet implemented") + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} + +data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, val state: Btor2State, val value: Btor2Node) : Btor2Node(nid, sort) +{ + val declsVar = Decls.Var("next_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return declsVar + } + + override fun getExpr(): Expr<*> { + TODO("Not yet implemented") + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} +data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) +{ + override fun getVar(): VarDecl<*>? { + return null + } + + override fun getExpr(): Expr<*> { + TODO() + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt new file mode 100644 index 0000000000..9501b90189 --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -0,0 +1,59 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import gen.Btor2BaseVisitor +import gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* + +class Btor2Visitor : Btor2BaseVisitor(){ + private val sortVisitor = SortVisitor() + private val constantVisitor = ConstantVisitor() + private val operationVisitor = OperationVisitor() + private val statefulVisitor = StateVisitor() + + override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { + for (child in ctx?.children!!) { + println(child.accept(this)) + } + return Btor2Circuit + } + + override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { + val result = sortVisitor.visit(ctx) + println(result) + Btor2Circuit.sorts[result.sid] = result + return Btor2Circuit + } + + override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { + println(constantVisitor.visit(ctx)) + return Btor2Circuit + } + + override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { + println(operationVisitor.visit(ctx)) + return Btor2Circuit + } + + override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { + println(statefulVisitor.visit(ctx)) + return Btor2Circuit + } + + +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt new file mode 100644 index 0000000000..5f0d3d0a50 --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -0,0 +1,56 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import gen.Btor2BaseVisitor +import gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* +import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts + +class ConstantVisitor : Btor2BaseVisitor() { + val idVisitor = IdVisitor() + + override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const { + check(ctx.childCount==1) + return this.visit(ctx.children[0]) + } + override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = when(ctx.fill.text) { + "one" -> { + val size = sort.width.toInt() + BooleanArray(size) { it == size - 1 } + } + "ones" -> { + val size = sort.width.toInt() + BooleanArray(size) { true } + } + "zero" -> { + val size = sort.width.toInt() + BooleanArray(size) { false } + } + else -> { + throw RuntimeException("Constant with filler shorthand needs to be one/ones/zero") + } + } + var node = Btor2Const(nid, value, sort) + Btor2Circuit.nodes[nid] = node + return node + } +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt new file mode 100644 index 0000000000..90b0959791 --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import gen.Btor2BaseVisitor +import gen.Btor2Parser + +class IdVisitor : Btor2BaseVisitor() { + override fun visitNid(ctx: Btor2Parser.NidContext): UInt { + return ctx.NUM().text.toUInt() + } + + override fun visitSid(ctx: Btor2Parser.SidContext): UInt { + return ctx.NUM().text.toUInt() + } +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt new file mode 100644 index 0000000000..b32e31586b --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -0,0 +1,131 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import gen.Btor2BaseVisitor +import gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* +import hu.bme.mit.theta.frontend.models.Btor2Circuit.nodes + +class OperationVisitor : Btor2BaseVisitor() { + val idVisitor = IdVisitor() + override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Node { + check(ctx.childCount == 1) + return ctx.children[0].accept(this) + } + + override fun visitExt(ctx: Btor2Parser.ExtContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val w = ctx.w.text.toUInt() + + check(sort.width == (opd.sort as Btor2BitvecSort).width + w) + val node = Btor2ExtOperation(nid, sort, opd, w) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + + override fun visitSlice(ctx: Btor2Parser.SliceContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val u = ctx.u.text.toUInt() + val l = ctx.l.text.toUInt() + + val node = Btor2SliceOperation(nid, sort, opd, u, l) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + + override fun visitBinop(ctx: Btor2Parser.BinopContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val opd1 = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val opd2 = nodes[ctx.opd2.text.toUInt()] as Btor2Node + + val op = when (ctx.BINOP().text) { + "and" -> Btor2BinaryOperator.AND + "nand" -> Btor2BinaryOperator.NAND + "nor" -> Btor2BinaryOperator.NOR + "or" -> Btor2BinaryOperator.OR + "xor" -> Btor2BinaryOperator.XOR + "eq" -> Btor2ComparisonOperator.EQ + "neq" -> Btor2ComparisonOperator.NEQ + "slt" -> Btor2ComparisonOperator.SLT + "sle" -> Btor2ComparisonOperator.SLE + "sgt" -> Btor2ComparisonOperator.SGT + "sgte" -> Btor2ComparisonOperator.SGTE + "ult" -> Btor2ComparisonOperator.ULT + "ule" -> Btor2ComparisonOperator.ULE + "ugt" -> Btor2ComparisonOperator.UGT + "ugte" -> Btor2ComparisonOperator.UGTE + "add" -> Btor2BinaryOperator.ADD + "mul" -> Btor2BinaryOperator.MUL + "udiv" -> Btor2BinaryOperator.UDIV + "urem" -> Btor2BinaryOperator.UREM + "sdiv" -> Btor2BinaryOperator.SDIV + "srem" -> Btor2BinaryOperator.SREM + "smod" -> Btor2BinaryOperator.SMOD + else -> throw RuntimeException("Binary operator unknown") + } + if (op is Btor2ComparisonOperator) { + val node = Btor2Comparison(nid, sort, op, opd1, opd2) + Btor2Circuit.nodes[nid] = node + return node + } + else if (op is Btor2BinaryOperator) { + val node = Btor2BinaryOperation(nid, sort, op, opd1, opd2) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + else { + throw RuntimeException("Binary operator unknown") + } + } + + override fun visitUnop(ctx: Btor2Parser.UnopContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val op = when (ctx.UNARYOP().text) { + "not" -> Btor2UnaryOperator.NOT + "inc" -> Btor2UnaryOperator.INC + "dec" -> Btor2UnaryOperator.DEC + "neg" -> Btor2UnaryOperator.NEG + else -> throw RuntimeException("Unary operator unknown") + } + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + + + val node = Btor2UnaryOperation(nid, sort, op, opd) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt new file mode 100644 index 0000000000..2f5d78abab --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import gen.Btor2BaseVisitor +import gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* + +class SortVisitor : Btor2BaseVisitor() { + override fun visitSort(ctx: Btor2Parser.SortContext): Btor2Sort { + return this.visitBitvec_sort(ctx.bitvec_sort()) + } + + override fun visitBitvec_sort(ctx: Btor2Parser.Bitvec_sortContext): Btor2Sort { + var sort = Btor2BitvecSort(ctx.id.NUM().text.toUInt(), ctx.width.text.toUInt()) + Btor2Circuit.sorts[sort.sid] = sort as Btor2Sort + return sort + } +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt new file mode 100644 index 0000000000..35fea6981f --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -0,0 +1,86 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import gen.Btor2BaseVisitor +import gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* + +class StateVisitor : Btor2BaseVisitor() { + private val idVisitor = IdVisitor() + + override fun visitStateful(ctx: Btor2Parser.StatefulContext): Btor2Node { + check(ctx.childCount==1) + return ctx.children[0].accept(this) + } + + override fun visitState(ctx: Btor2Parser.StateContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val node = Btor2State(nid, sort) + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitInput(ctx: Btor2Parser.InputContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val node = Btor2Input(nid, sort) + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitInit(ctx: Btor2Parser.InitContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid]!! + + val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State + val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Const + + + check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) + val node = Btor2Init(nid, sort, param1, param2) + Btor2Circuit.inits[nid] = node + return node + } + + override fun visitNext(ctx: Btor2Parser.NextContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State + val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Node + val node = Btor2Next(nid, sort, param1, param2) + Btor2Circuit.nexts[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitProperty(ctx: Btor2Parser.PropertyContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) + Btor2Circuit.bads[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } +} \ No newline at end of file From d5e44a11791e12474cf9a753c8140b150728ad1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 25 Feb 2025 14:51:44 +0100 Subject: [PATCH 02/72] Btor2Xcfa, tests are good and running --- .z3-trace | 0 settings.gradle.kts | 1 + .../frontends/btor2-frontend/README.md | 1 + .../frontends/btor2-frontend/build.gradle.kts | 24 +++++++ .../theta/frontend/visitors/Btor2Visitor.kt | 4 +- .../frontend/visitors/ConstantVisitor.kt | 4 +- .../mit/theta/frontend/visitors/IdVisitor.kt | 4 +- .../frontend/visitors/OperationVisitor.kt | 4 +- .../theta/frontend/visitors/SortVisitor.kt | 5 +- .../theta/frontend/visitors/StateVisitor.kt | 4 +- subprojects/xcfa/btor2xcfa/build.gradle.kts | 25 +++++++ .../Btor2XcfaBuilder.kt | 70 +++++++++++++++++++ .../btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 49 +++++++++++++ .../btor2xcfa/src/test/resources/count2.btor2 | 11 +++ subprojects/xcfa/xcfa-cli/.z3-trace | 0 15 files changed, 194 insertions(+), 12 deletions(-) create mode 100644 .z3-trace create mode 100644 subprojects/frontends/btor2-frontend/README.md create mode 100644 subprojects/frontends/btor2-frontend/build.gradle.kts create mode 100644 subprojects/xcfa/btor2xcfa/build.gradle.kts create mode 100644 subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt create mode 100644 subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 create mode 100644 subprojects/xcfa/xcfa-cli/.z3-trace diff --git a/.z3-trace b/.z3-trace new file mode 100644 index 0000000000..e69de29bb2 diff --git a/settings.gradle.kts b/settings.gradle.kts index 27c04ba06a..b8a786d662 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -43,6 +43,7 @@ include( "xcfa/xcfa", "xcfa/cat", "xcfa/c2xcfa", + "xcfa/btor2xcfa", "xcfa/litmus2xcfa", "xcfa/llvm2xcfa", "xcfa/xcfa2chc", diff --git a/subprojects/frontends/btor2-frontend/README.md b/subprojects/frontends/btor2-frontend/README.md new file mode 100644 index 0000000000..1fcddfd7d1 --- /dev/null +++ b/subprojects/frontends/btor2-frontend/README.md @@ -0,0 +1 @@ +Soon... \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/build.gradle.kts b/subprojects/frontends/btor2-frontend/build.gradle.kts new file mode 100644 index 0000000000..1f8376de5f --- /dev/null +++ b/subprojects/frontends/btor2-frontend/build.gradle.kts @@ -0,0 +1,24 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +plugins { + id("kotlin-common") + id("antlr-grammar") +} +dependencies { + implementation(project(":theta-core")) + implementation(project(":theta-common")) + implementation(project(":theta-grammar")) +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index 9501b90189..0cebe982c2 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -16,8 +16,8 @@ package hu.bme.mit.theta.frontend.visitors -import gen.Btor2BaseVisitor -import gen.Btor2Parser +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* class Btor2Visitor : Btor2BaseVisitor(){ diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt index 5f0d3d0a50..5d80c0a232 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -16,8 +16,8 @@ package hu.bme.mit.theta.frontend.visitors -import gen.Btor2BaseVisitor -import gen.Btor2Parser +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt index 90b0959791..70966e78e3 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt @@ -16,8 +16,8 @@ package hu.bme.mit.theta.frontend.visitors -import gen.Btor2BaseVisitor -import gen.Btor2Parser +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser class IdVisitor : Btor2BaseVisitor() { override fun visitNid(ctx: Btor2Parser.NidContext): UInt { diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index b32e31586b..619cf3059b 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -16,8 +16,8 @@ package hu.bme.mit.theta.frontend.visitors -import gen.Btor2BaseVisitor -import gen.Btor2Parser +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* import hu.bme.mit.theta.frontend.models.Btor2Circuit.nodes diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt index 2f5d78abab..3dcc2dc581 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt @@ -16,8 +16,9 @@ package hu.bme.mit.theta.frontend.visitors -import gen.Btor2BaseVisitor -import gen.Btor2Parser + +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* class SortVisitor : Btor2BaseVisitor() { diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index 35fea6981f..d5a4eb7487 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -16,8 +16,8 @@ package hu.bme.mit.theta.frontend.visitors -import gen.Btor2BaseVisitor -import gen.Btor2Parser +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* class StateVisitor : Btor2BaseVisitor() { diff --git a/subprojects/xcfa/btor2xcfa/build.gradle.kts b/subprojects/xcfa/btor2xcfa/build.gradle.kts new file mode 100644 index 0000000000..16ab8e9ffb --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/build.gradle.kts @@ -0,0 +1,25 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +plugins { + id("kotlin-common") +} + +dependencies { + implementation(project(":theta-common")) + implementation(project(":theta-core")) + implementation(project(":theta-xcfa")) + implementation(project(":theta-btor2-frontend")) +} diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt new file mode 100644 index 0000000000..7442bdb91a --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -0,0 +1,70 @@ +package hu.bme.mit.theta.btor2xcfa + +import hu.bme.mit.theta.core.stmt.AssignStmt +import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.bvtype.BvType +import hu.bme.mit.theta.frontend.models.Btor2Circuit +import hu.bme.mit.theta.frontend.models.Btor2Operation +import hu.bme.mit.theta.xcfa.model.* +import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager + +object Btor2XcfaBuilder{ + fun btor2xcfa(circuit: Btor2Circuit) : XCFA { + var i : Int = 1 + val xcfaBuilder = XcfaBuilder("Btor2XCFA") + val procBuilder = XcfaProcedureBuilder("main", Btor2Pass()) + xcfaBuilder.addProcedure(procBuilder) + procBuilder.createInitLoc() + + Btor2Circuit.nodes.forEach() { + it.value.getVar()?.let { varDecl -> + procBuilder.addVar(varDecl) + } + } + + var lastLoc = procBuilder.initLoc + + Btor2Circuit.inits.forEach() { + val loc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + + procBuilder.addLoc(loc) + + val edge = XcfaEdge(lastLoc,loc, StmtLabel(AssignStmt.of(it.value.state.getVar(), it.value.value.getExpr() as Expr)), EmptyMetaData) + procBuilder.addEdge(edge) + i++ + lastLoc=loc + } + + Btor2Circuit.ops.forEach() { + val loc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + + procBuilder.addLoc(loc) + + val edge = XcfaEdge(lastLoc,loc, StmtLabel(it.value.getStmt(false)), EmptyMetaData) + procBuilder.addEdge(edge) + i++ + lastLoc=loc + } + + procBuilder.createErrorLoc() + // Errorkezelése + val bad = Btor2Circuit.bads.values.first() + val op = bad.operand as Btor2Operation + // We will cast for now ¯\_(ツ)_/¯ + + procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(op.getStmt(false)),EmptyMetaData)) + val newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(op.getStmt(true)),EmptyMetaData)) + + //Circuit folytatása + val next = Btor2Circuit.nexts.values.first() + val firstLoc = procBuilder.getLocs().elementAt(1) + procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(AssignStmt.of(next.state.getVar(), next.value.getExpr() as Expr)),EmptyMetaData)) + return xcfaBuilder.build() + } + +} + +class Btor2Pass() : ProcedurePassManager() { + // No optimization for now c: +} \ No newline at end of file diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt new file mode 100644 index 0000000000..69a08c1c00 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -0,0 +1,49 @@ +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Lexer +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.btor2xcfa.Btor2XcfaBuilder +import hu.bme.mit.theta.frontend.models.Btor2Circuit +import hu.bme.mit.theta.frontend.visitors.Btor2Visitor +import hu.bme.mit.theta.xcfa.model.toDot +import org.antlr.v4.runtime.BailErrorStrategy +import org.antlr.v4.runtime.CharStreams +import org.antlr.v4.runtime.CommonTokenStream +import org.junit.jupiter.api.Test +import java.io.File + +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +class TestBtor2Xcfa { + @Test + fun testBtor2Xcfa() { + val visitor = Btor2Visitor() + val btor2File = File("src/test/resources/count2.btor2") + + val input = btor2File.readLines().joinToString("\n") + val cinput = CharStreams.fromString(input) + val lexer = Btor2Lexer(cinput) + val tokens = CommonTokenStream(lexer) + val parser = Btor2Parser(tokens) + parser.errorHandler = BailErrorStrategy() + val context = parser.btor2() + + context.accept(visitor) + + val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) + + println(xcfa.toDot()) + } +} \ No newline at end of file diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 new file mode 100644 index 0000000000..6827f0b30f --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 @@ -0,0 +1,11 @@ +1 sort bitvec 3 +2 zero 1 +3 state 1 +4 init 1 3 2 +5 one 1 +6 add 1 3 5 +7 next 1 3 6 +8 ones 1 +9 sort bitvec 1 +10 eq 9 3 8 +11 bad 10 diff --git a/subprojects/xcfa/xcfa-cli/.z3-trace b/subprojects/xcfa/xcfa-cli/.z3-trace new file mode 100644 index 0000000000..e69de29bb2 From 3cdde30f5c70a2b234ea74568027c6ea95ef3e19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Mon, 3 Mar 2025 11:31:14 +0100 Subject: [PATCH 03/72] Examples added, println changed to logger --- .../theta/frontend/visitors/Btor2Visitor.kt | 13 +- .../btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 6 +- .../btor2xcfa/src/test/resources/count4.btor2 | 11 + .../src/test/resources/factorial4even.btor2 | 26 + .../src/test/resources/noninitstate.btor2 | 17 + .../resources/ponylink-slaveTXlen-sat.btor2 | 4180 +++++++++++++++++ .../src/test/resources/recount4.btor2 | 15 + .../src/test/resources/run-examples.sh | 78 + .../src/test/resources/twocount2.btor2 | 20 + .../src/test/resources/twocount2c.btor2 | 23 + .../src/test/resources/twocount32.btor2 | 20 + 11 files changed, 4402 insertions(+), 7 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/count4.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/noninitstate.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/ponylink-slaveTXlen-sat.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/recount4.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/run-examples.sh create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/twocount2.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/twocount2c.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/twocount32.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index 0cebe982c2..dc5290fbad 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -18,6 +18,8 @@ package hu.bme.mit.theta.frontend.visitors import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.common.logging.ConsoleLogger +import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.frontend.models.* class Btor2Visitor : Btor2BaseVisitor(){ @@ -25,33 +27,34 @@ class Btor2Visitor : Btor2BaseVisitor(){ private val constantVisitor = ConstantVisitor() private val operationVisitor = OperationVisitor() private val statefulVisitor = StateVisitor() + private val logger = ConsoleLogger(Logger.Level.VERBOSE) override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { for (child in ctx?.children!!) { - println(child.accept(this)) + logger.write(Logger.Level.VERBOSE, "Visiting line: ", child.accept(this)) } return Btor2Circuit } override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { val result = sortVisitor.visit(ctx) - println(result) + logger.write(Logger.Level.VERBOSE, "Visiting sort: ", result) Btor2Circuit.sorts[result.sid] = result return Btor2Circuit } override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { - println(constantVisitor.visit(ctx)) + logger.write(Logger.Level.VERBOSE, "Visiting constant: ", constantVisitor.visit(ctx)) return Btor2Circuit } override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { - println(operationVisitor.visit(ctx)) + logger.write(Logger.Level.VERBOSE, "Visiting operation: ", operationVisitor.visit(ctx)) return Btor2Circuit } override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { - println(statefulVisitor.visit(ctx)) + logger.write(Logger.Level.VERBOSE, "Visiting stateful: ", statefulVisitor.visit(ctx)) return Btor2Circuit } diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index 69a08c1c00..1c7b41139a 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -1,6 +1,8 @@ import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Lexer import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.btor2xcfa.Btor2XcfaBuilder +import hu.bme.mit.theta.common.logging.ConsoleLogger +import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.visitors.Btor2Visitor import hu.bme.mit.theta.xcfa.model.toDot @@ -29,6 +31,7 @@ import java.io.File class TestBtor2Xcfa { @Test fun testBtor2Xcfa() { + val logger = ConsoleLogger(Logger.Level.VERBOSE) val visitor = Btor2Visitor() val btor2File = File("src/test/resources/count2.btor2") @@ -43,7 +46,6 @@ class TestBtor2Xcfa { context.accept(visitor) val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) - - println(xcfa.toDot()) + logger.write( Logger.Level.VERBOSE, "XCFA built, result: ", xcfa.toDot()) } } \ No newline at end of file diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/count4.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/count4.btor2 new file mode 100644 index 0000000000..7c89403b4b --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/count4.btor2 @@ -0,0 +1,11 @@ +1 sort bitvec 4 +2 zero 1 +3 state 1 +4 init 1 3 2 +5 one 1 +6 add 1 3 5 +7 next 1 3 6 +8 ones 1 +9 sort bitvec 1 +10 eq 9 3 8 +11 bad 10 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 new file mode 100644 index 0000000000..28146327f1 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 @@ -0,0 +1,26 @@ +; int i = 1, factorial = 1; +; assert (i <= 2 || !(factorial & 1)); +; for (;;) { +; factorial *= i; +; i++; +; assert (i <= 2 || !(factorial & 1)); +; } +1 sort bitvec 4 +2 one 1 +3 state 1 factorial +4 state 1 i +5 init 1 3 2 +6 init 1 4 2 +7 add 1 4 2 +8 mul 1 3 4 +9 next 1 4 7 +10 next 1 3 8 +11 ones 1 +12 sort bitvec 1 +13 eq 12 4 11 +14 bad 13 +15 slice 12 3 0 0 +16 constd 1 3 +17 ugt 12 4 16 +18 and 12 17 15 +19 bad 18 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/noninitstate.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/noninitstate.btor2 new file mode 100644 index 0000000000..3654c6e8bb --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/noninitstate.btor2 @@ -0,0 +1,17 @@ +1 sort bitvec 1 +2 input 1 turn +3 state 1 state0 +4 state 1 state1 +5 ite 1 -2 -3 3 +6 ite 1 2 -4 4 +7 next 1 3 5 +8 next 1 4 6 +9 eq 1 3 4 +10 one 1 +11 state 1 initially +12 init 1 11 10 +13 zero 1 +14 next 1 11 13 +15 implies 1 11 -9 +16 constraint 15 +17 bad 9 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/ponylink-slaveTXlen-sat.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/ponylink-slaveTXlen-sat.btor2 new file mode 100644 index 0000000000..7b9bb448ef --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/ponylink-slaveTXlen-sat.btor2 @@ -0,0 +1,4180 @@ +; BTOR description generated by Yosys 0.7+439 (git sha1 9337e49, clang 3.8.0-2ubuntu4 -fPIC -Os) for module main. +1 sort bitvec 1 +2 input 1 clk +3 input 1 serdes_in +4 state 1 uut.serdes_en_r +6 state 1 uut.serdes_out_r +8 state 1 $formal$ponylink-slaveTXlen-sat.sv:2951$1696_CHECK +9 const 1 0 +10 state 1 $formal$ponylink-slaveTXlen-sat.sv:2951$1696_EN +11 init 1 10 9 +12 not 1 8 +13 and 1 10 12 +14 bad 13 +15 state 1 uut.pack_8bits.packer.queue_tvalid +16 not 1 15 +17 sort bitvec 4 +18 state 17 uut.txrx.reset_counter +19 redor 1 18 +20 not 1 19 +21 and 1 16 20 +22 uext 1 21 0 in_tready +23 uext 1 20 0 resetn_out +24 uext 1 2 0 uut.clk +25 sort bitvec 9 +26 state 25 uut.pack_8bits.packer.ser_tdata +27 uext 25 26 0 uut.in_ser_tdata +28 sort bitvec 8 +29 state 28 uut.txrx.in_fifo_iptr +30 const 1 1 +31 uext 28 30 7 +32 add 28 29 31 +33 state 28 uut.txrx.peer_out_fifo_iptr +34 neq 1 32 33 +35 and 1 34 20 +36 uext 1 35 0 uut.in_ser_tready +37 state 1 uut.pack_8bits.packer.ser_tvalid +38 uext 1 37 0 uut.in_ser_tvalid +39 uext 1 21 0 uut.in_tready +40 state 1 uut.unpack_8bits.unpacker.ser_tready +41 uext 1 40 0 uut.out_ser_tready +42 state 28 uut.txrx.out_fifo_iptr +43 state 28 uut.txrx.out_fifo_optr +44 neq 1 42 43 +45 and 1 44 20 +46 uext 1 45 0 uut.out_ser_tvalid +47 uext 1 2 0 uut.pack_8bits.packer.clk +48 state 1 uut.pack_8bits.packer.queue_send_tuser +49 state 1 uut.pack_8bits.packer.queue_send_tuser2 +50 state 1 uut.pack_8bits.packer.queue_tlast +51 state 28 uut.pack_8bits.packer.queue_tuser +52 uext 1 20 0 uut.pack_8bits.packer.resetn +53 sort bitvec 32 +54 state 53 uut.pack_8bits.packer.rng +55 sort bitvec 12 +56 state 55 uut.pack_8bits.packer.rng_counter +57 sort bitvec 5 +58 state 57 uut.pack_8bits.packer.rng_cursor +59 uext 1 35 0 uut.pack_8bits.packer.ser_tready +60 uext 1 21 0 uut.pack_8bits.packer.tready +61 uext 1 20 0 uut.resetn_out +62 uext 1 4 0 uut.serdes_en +63 state 1 uut.txrx.encode_1.encoder.serdes_en +64 uext 1 63 0 uut.serdes_en_t +65 uext 1 3 0 uut.serdes_in +66 state 1 uut.serdes_in_r +67 uext 1 66 0 uut.serdes_in_t +68 uext 1 6 0 uut.serdes_out +69 state 1 uut.txrx.encode_1.encoder.serdes_out +70 uext 1 69 0 uut.serdes_out_t +71 state 53 uut.txrx.crc32.lfsr_q +72 uext 53 71 0 uut.txrx.checksum +73 state 1 uut.txrx.checksum_lock +74 not 1 73 +75 state 1 uut.txrx.send_valid +76 init 1 75 9 +77 state 1 uut.txrx.encode_1.encoder.send_ready +78 and 1 75 77 +79 ite 1 78 74 9 +80 state 1 uut.txrx.hd_send_mode +81 not 1 80 +82 state 1 uut.txrx.decode_1.decoder.recv_word_en +83 and 1 81 82 +84 ite 1 83 30 79 +85 uext 1 84 0 uut.txrx.checksum_enable +86 state 25 uut.txrx.send_word +87 sort bitvec 10 +88 state 87 uut.txrx.decode_1.decoder.recv_wbits +89 slice 1 88 0 0 +90 slice 1 88 1 1 +91 and 1 89 90 +92 slice 1 88 2 2 +93 not 1 92 +94 and 1 91 93 +95 slice 1 88 3 3 +96 not 1 95 +97 and 1 94 96 +98 and 1 92 95 +99 not 1 89 +100 and 1 98 99 +101 not 1 90 +102 and 1 100 101 +103 or 1 97 102 +104 and 1 99 101 +105 or 1 91 104 +106 not 1 105 +107 and 1 93 96 +108 or 1 98 107 +109 not 1 108 +110 and 1 106 109 +111 or 1 103 110 +112 and 1 111 101 +113 and 1 112 93 +114 slice 1 88 4 4 +115 slice 1 88 5 5 +116 eq 1 114 115 +117 and 1 113 116 +118 and 1 106 92 +119 and 1 118 95 +120 and 1 109 89 +121 and 1 120 90 +122 or 1 119 121 +123 and 1 122 115 +124 or 1 117 123 +125 and 1 106 93 +126 and 1 125 96 +127 and 1 109 99 +128 and 1 127 101 +129 or 1 126 128 +130 and 1 129 95 +131 and 1 130 114 +132 and 1 131 115 +133 or 1 124 132 +134 and 1 111 99 +135 and 1 134 93 +136 and 1 135 116 +137 or 1 133 136 +138 not 1 114 +139 and 1 129 138 +140 or 1 137 139 +141 and 1 91 114 +142 and 1 141 115 +143 or 1 140 142 +144 and 1 107 138 +145 not 1 115 +146 and 1 144 145 +147 or 1 143 146 +148 xor 1 89 147 +149 and 1 111 90 +150 and 1 149 92 +151 and 1 150 116 +152 or 1 151 123 +153 or 1 152 132 +154 and 1 111 89 +155 and 1 154 92 +156 and 1 155 116 +157 or 1 153 156 +158 or 1 157 139 +159 or 1 158 142 +160 or 1 159 146 +161 xor 1 90 160 +162 or 1 153 136 +163 or 1 162 139 +164 and 1 104 138 +165 and 1 164 145 +166 or 1 163 165 +167 or 1 166 146 +168 xor 1 92 167 +169 or 1 133 156 +170 or 1 169 139 +171 or 1 170 142 +172 or 1 171 146 +173 xor 1 95 172 +174 and 1 129 145 +175 or 1 117 174 +176 or 1 175 132 +177 or 1 176 136 +178 or 1 177 139 +179 or 1 178 165 +180 or 1 179 146 +181 xor 1 114 180 +182 slice 1 88 9 9 +183 slice 1 88 6 6 +184 not 1 183 +185 and 1 182 184 +186 slice 1 88 8 8 +187 slice 1 88 7 7 +188 not 1 187 +189 or 1 186 188 +190 or 1 92 95 +191 or 1 190 114 +192 or 1 191 115 +193 not 1 192 +194 or 1 189 193 +195 and 1 185 194 +196 not 1 182 +197 and 1 183 196 +198 not 1 186 +199 or 1 198 187 +200 or 1 199 192 +201 and 1 197 200 +202 or 1 195 201 +203 and 1 193 187 +204 and 1 203 186 +205 or 1 202 204 +206 and 1 192 188 +207 and 1 206 198 +208 or 1 205 207 +209 or 1 189 192 +210 and 1 185 209 +211 or 1 199 193 +212 and 1 197 211 +213 or 1 210 212 +214 and 1 192 187 +215 and 1 214 186 +216 or 1 213 215 +217 and 1 193 188 +218 and 1 217 198 +219 or 1 216 218 +220 xor 1 182 186 +221 and 1 184 187 +222 and 1 221 198 +223 and 1 222 182 +224 and 1 223 192 +225 and 1 221 186 +226 and 1 225 196 +227 and 1 226 193 +228 or 1 224 227 +229 and 1 183 188 +230 and 1 229 198 +231 and 1 230 182 +232 and 1 231 192 +233 or 1 228 232 +234 and 1 229 186 +235 and 1 234 196 +236 and 1 235 193 +237 or 1 233 236 +238 not 1 237 +239 and 1 220 238 +240 and 1 225 182 +241 or 1 239 240 +242 and 1 230 196 +243 or 1 241 242 +244 and 1 98 114 +245 and 1 244 115 +246 or 1 245 146 +247 and 1 139 115 +248 and 1 247 187 +249 and 1 248 186 +250 and 1 249 182 +251 or 1 246 250 +252 and 1 122 114 +253 and 1 252 145 +254 and 1 253 188 +255 and 1 254 198 +256 and 1 255 196 +257 or 1 251 256 +258 sort bitvec 2 +259 concat 258 161 148 +260 sort bitvec 3 +261 concat 260 168 259 +262 concat 17 173 261 +263 concat 57 181 262 +264 sort bitvec 6 +265 concat 264 208 263 +266 sort bitvec 7 +267 concat 266 219 265 +268 concat 28 243 267 +269 concat 25 257 268 +270 ite 25 83 269 86 +271 uext 25 270 0 uut.txrx.checksum_word +272 uext 1 2 0 uut.txrx.clk +273 uext 1 2 0 uut.txrx.crc32.clk +274 uext 1 84 0 uut.txrx.crc32.crc_en +275 uext 53 71 0 uut.txrx.crc32.crc_out +276 slice 28 270 7 0 +277 not 28 276 +278 slice 1 270 8 8 +279 ite 28 278 277 276 +280 uext 28 279 0 uut.txrx.crc32.data_in +281 slice 1 71 24 24 +282 slice 1 71 30 30 +283 xor 1 281 282 +284 slice 1 279 0 0 +285 xor 1 283 284 +286 slice 1 279 6 6 +287 xor 1 285 286 +288 slice 1 71 25 25 +289 xor 1 281 288 +290 xor 1 289 282 +291 slice 1 71 31 31 +292 xor 1 290 291 +293 xor 1 292 284 +294 slice 1 279 1 1 +295 xor 1 293 294 +296 xor 1 295 286 +297 slice 1 279 7 7 +298 xor 1 296 297 +299 slice 1 71 26 26 +300 xor 1 289 299 +301 xor 1 300 282 +302 xor 1 301 291 +303 xor 1 302 284 +304 xor 1 303 294 +305 slice 1 279 2 2 +306 xor 1 304 305 +307 xor 1 306 286 +308 xor 1 307 297 +309 xor 1 288 299 +310 slice 1 71 27 27 +311 xor 1 309 310 +312 xor 1 311 291 +313 xor 1 312 294 +314 xor 1 313 305 +315 slice 1 279 3 3 +316 xor 1 314 315 +317 xor 1 316 297 +318 xor 1 281 299 +319 xor 1 318 310 +320 slice 1 71 28 28 +321 xor 1 319 320 +322 xor 1 321 282 +323 xor 1 322 284 +324 xor 1 323 305 +325 xor 1 324 315 +326 slice 1 279 4 4 +327 xor 1 325 326 +328 xor 1 327 286 +329 xor 1 289 310 +330 xor 1 329 320 +331 slice 1 71 29 29 +332 xor 1 330 331 +333 xor 1 332 282 +334 xor 1 333 291 +335 xor 1 334 284 +336 xor 1 335 294 +337 xor 1 336 315 +338 xor 1 337 326 +339 slice 1 279 5 5 +340 xor 1 338 339 +341 xor 1 340 286 +342 xor 1 341 297 +343 xor 1 309 320 +344 xor 1 343 331 +345 xor 1 344 282 +346 xor 1 345 291 +347 xor 1 346 294 +348 xor 1 347 305 +349 xor 1 348 326 +350 xor 1 349 339 +351 xor 1 350 286 +352 xor 1 351 297 +353 xor 1 319 331 +354 xor 1 353 291 +355 xor 1 354 284 +356 xor 1 355 305 +357 xor 1 356 315 +358 xor 1 357 339 +359 xor 1 358 297 +360 slice 1 71 0 0 +361 xor 1 360 281 +362 xor 1 361 288 +363 xor 1 362 310 +364 xor 1 363 320 +365 xor 1 364 284 +366 xor 1 365 294 +367 xor 1 366 315 +368 xor 1 367 326 +369 slice 1 71 1 1 +370 xor 1 369 288 +371 xor 1 370 299 +372 xor 1 371 320 +373 xor 1 372 331 +374 xor 1 373 294 +375 xor 1 374 305 +376 xor 1 375 326 +377 xor 1 376 339 +378 slice 1 71 2 2 +379 xor 1 378 281 +380 xor 1 379 299 +381 xor 1 380 310 +382 xor 1 381 331 +383 xor 1 382 284 +384 xor 1 383 305 +385 xor 1 384 315 +386 xor 1 385 339 +387 slice 1 71 3 3 +388 xor 1 387 281 +389 xor 1 388 288 +390 xor 1 389 310 +391 xor 1 390 320 +392 xor 1 391 284 +393 xor 1 392 294 +394 xor 1 393 315 +395 xor 1 394 326 +396 slice 1 71 4 4 +397 xor 1 396 281 +398 xor 1 397 288 +399 xor 1 398 299 +400 xor 1 399 320 +401 xor 1 400 331 +402 xor 1 401 282 +403 xor 1 402 284 +404 xor 1 403 294 +405 xor 1 404 305 +406 xor 1 405 326 +407 xor 1 406 339 +408 xor 1 407 286 +409 slice 1 71 5 5 +410 xor 1 409 288 +411 xor 1 410 299 +412 xor 1 411 310 +413 xor 1 412 331 +414 xor 1 413 282 +415 xor 1 414 291 +416 xor 1 415 294 +417 xor 1 416 305 +418 xor 1 417 315 +419 xor 1 418 339 +420 xor 1 419 286 +421 xor 1 420 297 +422 slice 1 71 6 6 +423 xor 1 422 299 +424 xor 1 423 310 +425 xor 1 424 320 +426 xor 1 425 282 +427 xor 1 426 291 +428 xor 1 427 305 +429 xor 1 428 315 +430 xor 1 429 326 +431 xor 1 430 286 +432 xor 1 431 297 +433 slice 1 71 7 7 +434 xor 1 433 310 +435 xor 1 434 320 +436 xor 1 435 331 +437 xor 1 436 291 +438 xor 1 437 315 +439 xor 1 438 326 +440 xor 1 439 339 +441 xor 1 440 297 +442 slice 1 71 8 8 +443 xor 1 442 281 +444 xor 1 443 320 +445 xor 1 444 331 +446 xor 1 445 284 +447 xor 1 446 326 +448 xor 1 447 339 +449 slice 1 71 9 9 +450 xor 1 449 288 +451 xor 1 450 331 +452 xor 1 451 282 +453 xor 1 452 294 +454 xor 1 453 339 +455 xor 1 454 286 +456 slice 1 71 10 10 +457 xor 1 456 299 +458 xor 1 457 282 +459 xor 1 458 291 +460 xor 1 459 305 +461 xor 1 460 286 +462 xor 1 461 297 +463 slice 1 71 11 11 +464 xor 1 463 310 +465 xor 1 464 291 +466 xor 1 465 315 +467 xor 1 466 297 +468 slice 1 71 12 12 +469 xor 1 468 320 +470 xor 1 469 326 +471 slice 1 71 13 13 +472 xor 1 471 331 +473 xor 1 472 339 +474 slice 1 71 14 14 +475 xor 1 474 281 +476 xor 1 475 284 +477 slice 1 71 15 15 +478 xor 1 477 281 +479 xor 1 478 288 +480 xor 1 479 282 +481 xor 1 480 284 +482 xor 1 481 294 +483 xor 1 482 286 +484 slice 1 71 16 16 +485 xor 1 484 288 +486 xor 1 485 299 +487 xor 1 486 291 +488 xor 1 487 294 +489 xor 1 488 305 +490 xor 1 489 297 +491 slice 1 71 17 17 +492 xor 1 491 299 +493 xor 1 492 310 +494 xor 1 493 305 +495 xor 1 494 315 +496 slice 1 71 18 18 +497 xor 1 496 281 +498 xor 1 497 310 +499 xor 1 498 320 +500 xor 1 499 282 +501 xor 1 500 284 +502 xor 1 501 315 +503 xor 1 502 326 +504 xor 1 503 286 +505 slice 1 71 19 19 +506 xor 1 505 288 +507 xor 1 506 320 +508 xor 1 507 331 +509 xor 1 508 291 +510 xor 1 509 294 +511 xor 1 510 326 +512 xor 1 511 339 +513 xor 1 512 297 +514 slice 1 71 20 20 +515 xor 1 514 299 +516 xor 1 515 331 +517 xor 1 516 282 +518 xor 1 517 305 +519 xor 1 518 339 +520 xor 1 519 286 +521 slice 1 71 21 21 +522 xor 1 521 310 +523 xor 1 522 282 +524 xor 1 523 291 +525 xor 1 524 315 +526 xor 1 525 286 +527 xor 1 526 297 +528 slice 1 71 22 22 +529 xor 1 528 320 +530 xor 1 529 291 +531 xor 1 530 326 +532 xor 1 531 297 +533 slice 1 71 23 23 +534 xor 1 533 331 +535 xor 1 534 339 +536 concat 258 298 287 +537 concat 260 308 536 +538 concat 17 317 537 +539 concat 57 328 538 +540 concat 264 342 539 +541 concat 266 352 540 +542 concat 28 359 541 +543 concat 25 368 542 +544 concat 87 377 543 +545 sort bitvec 11 +546 concat 545 386 544 +547 concat 55 395 546 +548 sort bitvec 13 +549 concat 548 408 547 +550 sort bitvec 14 +551 concat 550 421 549 +552 sort bitvec 15 +553 concat 552 432 551 +554 sort bitvec 16 +555 concat 554 441 553 +556 sort bitvec 17 +557 concat 556 448 555 +558 sort bitvec 18 +559 concat 558 455 557 +560 sort bitvec 19 +561 concat 560 462 559 +562 sort bitvec 20 +563 concat 562 467 561 +564 sort bitvec 21 +565 concat 564 470 563 +566 sort bitvec 22 +567 concat 566 473 565 +568 sort bitvec 23 +569 concat 568 476 567 +570 sort bitvec 24 +571 concat 570 483 569 +572 sort bitvec 25 +573 concat 572 490 571 +574 sort bitvec 26 +575 concat 574 495 573 +576 sort bitvec 27 +577 concat 576 504 575 +578 sort bitvec 28 +579 concat 578 513 577 +580 sort bitvec 29 +581 concat 580 520 579 +582 sort bitvec 30 +583 concat 582 527 581 +584 sort bitvec 31 +585 concat 584 532 583 +586 concat 53 535 585 +587 uext 53 586 0 uut.txrx.crc32.lfsr_c +588 const 25 111111100 +589 eq 1 270 588 +590 and 1 589 84 +591 uext 1 590 0 uut.txrx.crc32.rst +592 uext 1 2 0 uut.txrx.decode_1.decoder.clk +593 const 17 0000 +594 state 17 uut.txrx.decode_1.decoder.cnt +595 init 17 594 593 +596 state 17 uut.txrx.decode_1.decoder.cnt2 +597 init 17 596 593 +598 uext 1 2 0 uut.txrx.decode_1.decoder.de8b10b.clk +599 and 1 91 92 +600 and 1 599 95 +601 and 1 104 93 +602 and 1 601 96 +603 or 1 600 602 +604 and 1 183 187 +605 and 1 604 186 +606 and 1 605 182 +607 or 1 603 606 +608 and 1 184 188 +609 and 1 608 198 +610 and 1 609 196 +611 or 1 607 610 +612 and 1 139 145 +613 or 1 611 612 +614 and 1 252 115 +615 or 1 613 614 +616 and 1 114 115 +617 and 1 616 183 +618 and 1 617 187 +619 and 1 618 186 +620 or 1 615 619 +621 and 1 138 145 +622 and 1 621 184 +623 and 1 622 188 +624 and 1 623 198 +625 or 1 620 624 +626 and 1 114 145 +627 and 1 626 187 +628 and 1 627 186 +629 and 1 628 182 +630 or 1 625 629 +631 and 1 138 115 +632 and 1 631 188 +633 and 1 632 198 +634 and 1 633 196 +635 or 1 630 634 +636 not 1 122 +637 and 1 636 114 +638 and 1 637 145 +639 and 1 638 188 +640 and 1 639 198 +641 and 1 640 196 +642 or 1 635 641 +643 not 1 129 +644 and 1 643 138 +645 and 1 644 115 +646 and 1 645 187 +647 and 1 646 186 +648 and 1 647 182 +649 or 1 642 648 +650 and 1 616 188 +651 and 1 650 198 +652 and 1 651 196 +653 and 1 621 187 +654 and 1 653 186 +655 and 1 654 182 +656 or 1 652 655 +657 or 1 244 144 +658 not 1 657 +659 and 1 656 658 +660 or 1 649 659 +661 or 1 114 115 +662 and 1 122 661 +663 and 1 111 114 +664 and 1 663 115 +665 or 1 662 664 +666 or 1 604 608 +667 not 1 666 +668 and 1 667 186 +669 and 1 668 182 +670 and 1 186 182 +671 and 1 198 196 +672 or 1 670 671 +673 not 1 672 +674 and 1 673 183 +675 and 1 674 187 +676 or 1 669 675 +677 and 1 665 676 +678 or 1 660 677 +679 not 1 616 +680 and 1 129 679 +681 and 1 111 138 +682 and 1 681 145 +683 or 1 680 682 +684 and 1 667 198 +685 and 1 684 196 +686 and 1 673 184 +687 and 1 686 188 +688 or 1 685 687 +689 and 1 683 688 +690 or 1 678 689 +691 and 1 599 138 +692 and 1 691 145 +693 or 1 608 688 +694 and 1 692 693 +695 or 1 690 694 +696 and 1 601 114 +697 and 1 696 115 +698 or 1 604 676 +699 and 1 697 698 +700 or 1 695 699 +701 and 1 604 198 +702 and 1 701 196 +703 and 1 702 665 +704 or 1 700 703 +705 and 1 608 186 +706 and 1 705 182 +707 and 1 706 683 +708 or 1 704 707 +709 and 1 245 184 +710 and 1 709 188 +711 and 1 710 198 +712 or 1 708 711 +713 and 1 146 183 +714 and 1 713 187 +715 and 1 714 186 +716 or 1 712 715 +717 uext 1 716 0 uut.txrx.decode_1.decoder.de8b10b.code_err +718 uext 87 88 0 uut.txrx.decode_1.decoder.de8b10b.datain +719 uext 25 269 0 uut.txrx.decode_1.decoder.de8b10b.dataout +720 uext 1 142 0 uut.txrx.decode_1.decoder.de8b10b.decoder.abei +721 uext 1 105 0 uut.txrx.decode_1.decoder.de8b10b.decoder.aeqb +722 uext 1 89 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ai +723 uext 1 165 0 uut.txrx.decode_1.decoder.de8b10b.decoder.anbnenin +724 uext 1 148 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ao +725 uext 1 90 0 uut.txrx.decode_1.decoder.de8b10b.decoder.bi +726 uext 1 161 0 uut.txrx.decode_1.decoder.de8b10b.decoder.bo +727 uext 1 108 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ceqd +728 uext 1 92 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ci +729 uext 1 146 0 uut.txrx.decode_1.decoder.de8b10b.decoder.cndnenin +730 uext 1 168 0 uut.txrx.decode_1.decoder.de8b10b.decoder.co +731 uext 1 716 0 uut.txrx.decode_1.decoder.de8b10b.decoder.code_err +732 uext 1 147 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compa +733 uext 1 160 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compb +734 uext 1 167 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compc +735 uext 1 172 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compd +736 uext 1 180 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compe +737 uext 87 88 0 uut.txrx.decode_1.decoder.de8b10b.decoder.datain +738 uext 25 269 0 uut.txrx.decode_1.decoder.de8b10b.decoder.dataout +739 uext 1 95 0 uut.txrx.decode_1.decoder.de8b10b.decoder.di +740 uext 1 688 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp4n +741 uext 1 676 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp4p +742 state 1 uut.txrx.decode_1.decoder.de8b10b.dispout_q +743 const 266 1111100 +744 uext 87 743 3 +745 neq 1 88 744 +746 and 1 742 745 +747 and 1 111 746 +748 or 1 122 747 +749 uext 1 748 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6a +750 not 1 746 +751 and 1 129 750 +752 uext 1 751 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6a0 +753 and 1 122 746 +754 uext 1 753 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6a2 +755 not 1 751 +756 and 1 616 755 +757 and 1 748 661 +758 or 1 756 757 +759 or 1 758 753 +760 and 1 616 95 +761 or 1 759 760 +762 or 1 661 95 +763 and 1 761 762 +764 uext 1 763 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6b +765 uext 1 683 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6n +766 uext 1 665 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6p +767 and 1 746 665 +768 and 1 683 750 +769 or 1 767 768 +770 not 1 683 +771 and 1 746 770 +772 and 1 771 183 +773 and 1 772 187 +774 or 1 769 773 +775 and 1 746 89 +776 and 1 775 90 +777 and 1 776 92 +778 or 1 774 777 +779 and 1 771 676 +780 or 1 778 779 +781 not 1 665 +782 and 1 750 781 +783 and 1 782 184 +784 and 1 783 188 +785 or 1 780 784 +786 and 1 750 99 +787 and 1 786 101 +788 and 1 787 93 +789 or 1 785 788 +790 and 1 782 688 +791 or 1 789 790 +792 or 1 791 677 +793 or 1 792 689 +794 uext 1 793 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp_err +795 uext 1 746 0 uut.txrx.decode_1.decoder.de8b10b.decoder.dispin +796 or 1 702 706 +797 and 1 667 673 +798 or 1 796 797 +799 and 1 763 798 +800 or 1 676 799 +801 or 1 800 670 +802 or 1 186 182 +803 and 1 801 802 +804 uext 1 803 0 uut.txrx.decode_1.decoder.de8b10b.decoder.dispout +805 uext 1 173 0 uut.txrx.decode_1.decoder.de8b10b.decoder.do +806 uext 1 114 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ei +807 uext 1 181 0 uut.txrx.decode_1.decoder.de8b10b.decoder.eo +808 uext 1 666 0 uut.txrx.decode_1.decoder.de8b10b.decoder.feqg +809 uext 1 798 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fghj22 +810 uext 1 688 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fghjp13 +811 uext 1 676 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fghjp31 +812 uext 1 183 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fi +813 uext 1 208 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fo +814 uext 1 187 0 uut.txrx.decode_1.decoder.de8b10b.decoder.gi +815 uext 1 219 0 uut.txrx.decode_1.decoder.de8b10b.decoder.go +816 uext 1 672 0 uut.txrx.decode_1.decoder.de8b10b.decoder.heqj +817 uext 1 186 0 uut.txrx.decode_1.decoder.de8b10b.decoder.hi +818 uext 1 243 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ho +819 uext 1 115 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ii +820 uext 1 182 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ji +821 uext 1 193 0 uut.txrx.decode_1.decoder.de8b10b.decoder.k28p +822 uext 1 257 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ko +823 uext 1 602 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p04 +824 uext 1 129 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p13 +825 uext 1 132 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p13dei +826 uext 1 139 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p13en +827 uext 1 174 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p13in +828 uext 1 111 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22 +829 uext 1 156 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22aceeqi +830 uext 1 136 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22ancneeqi +831 uext 1 151 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22bceeqi +832 uext 1 117 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22bncneeqi +833 uext 1 122 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p31 +834 uext 1 123 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p31i +835 uext 1 600 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p40 +836 uext 1 793 0 uut.txrx.decode_1.decoder.de8b10b.disp_err +837 uext 1 746 0 uut.txrx.decode_1.decoder.de8b10b.dispin +838 uext 1 803 0 uut.txrx.decode_1.decoder.de8b10b.dispout +839 uext 1 82 0 uut.txrx.decode_1.decoder.de8b10b.enable +840 or 1 716 793 +841 neq 1 269 588 +842 and 1 840 841 +843 uext 1 842 0 uut.txrx.decode_1.decoder.de8b10b.recv_error +844 uext 1 63 0 uut.txrx.decode_1.decoder.de8b10b.reset +845 state 17 uut.txrx.decode_1.decoder.de8b10b.reset_state +846 state 1 uut.txrx.decode_1.decoder.de8b10b.rstdetect +847 state 1 uut.txrx.decode_1.decoder.last_bit +848 init 1 847 9 +849 uext 1 842 0 uut.txrx.decode_1.decoder.recv_error +850 uext 25 269 0 uut.txrx.decode_1.decoder.recv_word +851 uext 1 63 0 uut.txrx.decode_1.decoder.reset +852 uext 1 846 0 uut.txrx.decode_1.decoder.rstdetect +853 uext 1 66 0 uut.txrx.decode_1.decoder.serdes_in +854 state 552 uut.txrx.encode_1.encoder.buffer +855 state 552 uut.txrx.encode_1.encoder.buffer_en +856 uext 1 2 0 uut.txrx.encode_1.encoder.clk +857 const 260 000 +858 state 260 uut.txrx.encode_1.encoder.counter +859 init 260 858 857 +860 uext 1 2 0 uut.txrx.encode_1.encoder.en8b10b.clk +861 uext 25 86 0 uut.txrx.encode_1.encoder.en8b10b.datain +862 slice 1 86 0 0 +863 slice 1 86 4 4 +864 slice 1 86 3 3 +865 and 1 863 864 +866 slice 1 86 2 2 +867 not 1 866 +868 and 1 865 867 +869 slice 1 86 1 1 +870 not 1 869 +871 and 1 868 870 +872 not 1 862 +873 and 1 871 872 +874 not 1 863 +875 and 1 862 869 +876 and 1 875 867 +877 not 1 864 +878 and 1 876 877 +879 and 1 866 864 +880 and 1 879 872 +881 and 1 880 870 +882 or 1 878 881 +883 and 1 872 870 +884 or 1 875 883 +885 not 1 884 +886 and 1 867 877 +887 or 1 879 886 +888 not 1 887 +889 and 1 885 888 +890 or 1 882 889 +891 not 1 890 +892 and 1 874 891 +893 and 1 885 866 +894 and 1 893 864 +895 and 1 888 862 +896 and 1 895 869 +897 or 1 894 896 +898 not 1 897 +899 and 1 892 898 +900 or 1 873 899 +901 state 1 uut.txrx.encode_1.encoder.send_disp +902 neq 1 86 588 +903 and 1 901 902 +904 not 1 903 +905 and 1 900 904 +906 slice 1 86 8 8 +907 and 1 863 891 +908 and 1 885 867 +909 and 1 908 877 +910 and 1 888 872 +911 and 1 910 870 +912 or 1 909 911 +913 not 1 912 +914 and 1 907 913 +915 or 1 906 914 +916 and 1 874 877 +917 and 1 916 866 +918 and 1 917 869 +919 and 1 918 862 +920 or 1 915 919 +921 and 1 920 903 +922 or 1 905 921 +923 xor 1 862 922 +924 and 1 875 866 +925 and 1 924 864 +926 not 1 925 +927 and 1 869 926 +928 and 1 883 867 +929 and 1 928 877 +930 or 1 927 929 +931 xor 1 930 922 +932 or 1 929 866 +933 or 1 932 873 +934 xor 1 933 922 +935 not 1 924 +936 and 1 864 935 +937 xor 1 936 922 +938 or 1 863 912 +939 not 1 873 +940 and 1 938 939 +941 xor 1 940 922 +942 and 1 890 874 +943 and 1 863 877 +944 and 1 943 867 +945 not 1 875 +946 and 1 944 945 +947 or 1 942 946 +948 and 1 863 925 +949 or 1 947 948 +950 and 1 906 863 +951 and 1 950 864 +952 and 1 951 866 +953 and 1 952 870 +954 and 1 953 872 +955 or 1 949 954 +956 and 1 943 866 +957 and 1 956 870 +958 and 1 957 872 +959 or 1 955 958 +960 xor 1 959 922 +961 slice 1 86 5 5 +962 slice 1 86 6 6 +963 and 1 961 962 +964 slice 1 86 7 7 +965 and 1 963 964 +966 and 1 943 912 +967 and 1 874 864 +968 and 1 967 897 +969 ite 1 903 968 966 +970 or 1 906 969 +971 and 1 965 970 +972 not 1 971 +973 and 1 961 972 +974 not 1 961 +975 not 1 962 +976 and 1 974 975 +977 and 1 961 975 +978 and 1 974 962 +979 or 1 977 978 +980 and 1 906 979 +981 or 1 976 980 +982 or 1 900 915 +983 xor 1 903 982 +984 not 1 983 +985 and 1 981 984 +986 and 1 963 983 +987 or 1 985 986 +988 xor 1 973 987 +989 not 1 964 +990 and 1 976 989 +991 or 1 962 990 +992 xor 1 991 987 +993 xor 1 964 987 +994 xor 1 962 961 +995 and 1 989 994 +996 or 1 995 971 +997 xor 1 996 987 +998 concat 258 931 923 +999 concat 260 934 998 +1000 concat 17 937 999 +1001 concat 57 941 1000 +1002 concat 264 960 1001 +1003 concat 266 988 1002 +1004 concat 28 992 1003 +1005 concat 25 993 1004 +1006 concat 87 997 1005 +1007 state 1 uut.txrx.encode_1.encoder.en8b10b.lastbit +1008 not 1 1007 +1009 const 25 000000000 +1010 concat 87 1009 1008 +1011 const 25 100000000 +1012 eq 1 86 1011 +1013 ite 87 1012 1010 1006 +1014 uext 87 1013 0 uut.txrx.encode_1.encoder.en8b10b.dataout +1015 uext 87 1006 0 uut.txrx.encode_1.encoder.en8b10b.dataout_t +1016 uext 1 903 0 uut.txrx.encode_1.encoder.en8b10b.dispin +1017 or 1 976 965 +1018 xor 1 983 1017 +1019 uext 1 1018 0 uut.txrx.encode_1.encoder.en8b10b.dispout +1020 uext 1 884 0 uut.txrx.encode_1.encoder.en8b10b.encoder.aeqb +1021 uext 1 862 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ai +1022 uext 1 971 0 uut.txrx.encode_1.encoder.en8b10b.encoder.alt7 +1023 uext 1 862 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ao +1024 uext 1 869 0 uut.txrx.encode_1.encoder.en8b10b.encoder.bi +1025 uext 1 930 0 uut.txrx.encode_1.encoder.en8b10b.encoder.bo +1026 uext 1 887 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ceqd +1027 uext 1 866 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ci +1028 uext 1 933 0 uut.txrx.encode_1.encoder.en8b10b.encoder.co +1029 uext 1 987 0 uut.txrx.encode_1.encoder.en8b10b.encoder.compls4 +1030 uext 1 922 0 uut.txrx.encode_1.encoder.en8b10b.encoder.compls6 +1031 uext 25 86 0 uut.txrx.encode_1.encoder.en8b10b.encoder.datain +1032 uext 87 1006 0 uut.txrx.encode_1.encoder.en8b10b.encoder.dataout +1033 uext 1 864 0 uut.txrx.encode_1.encoder.en8b10b.encoder.di +1034 uext 1 983 0 uut.txrx.encode_1.encoder.en8b10b.encoder.disp6 +1035 uext 1 903 0 uut.txrx.encode_1.encoder.en8b10b.encoder.dispin +1036 uext 1 1018 0 uut.txrx.encode_1.encoder.en8b10b.encoder.dispout +1037 uext 1 936 0 uut.txrx.encode_1.encoder.en8b10b.encoder.do +1038 uext 1 863 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ei +1039 uext 1 940 0 uut.txrx.encode_1.encoder.en8b10b.encoder.eo +1040 uext 1 961 0 uut.txrx.encode_1.encoder.en8b10b.encoder.fi +1041 uext 1 973 0 uut.txrx.encode_1.encoder.en8b10b.encoder.fo +1042 uext 1 962 0 uut.txrx.encode_1.encoder.en8b10b.encoder.gi +1043 uext 1 991 0 uut.txrx.encode_1.encoder.en8b10b.encoder.go +1044 uext 1 964 0 uut.txrx.encode_1.encoder.en8b10b.encoder.hi +1045 uext 1 964 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ho +1046 uext 1 959 0 uut.txrx.encode_1.encoder.en8b10b.encoder.io +1047 uext 1 996 0 uut.txrx.encode_1.encoder.en8b10b.encoder.jo +1048 uext 1 906 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ki +1049 uext 1 929 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l04 +1050 uext 1 912 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l13 +1051 uext 1 890 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l22 +1052 uext 1 897 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l31 +1053 uext 1 925 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l40 +1054 uext 1 963 0 uut.txrx.encode_1.encoder.en8b10b.encoder.nd1s4 +1055 uext 1 920 0 uut.txrx.encode_1.encoder.en8b10b.encoder.nd1s6 +1056 uext 1 976 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ndos4 +1057 uext 1 900 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ndos6 +1058 uext 1 981 0 uut.txrx.encode_1.encoder.en8b10b.encoder.pd1s4 +1059 uext 1 900 0 uut.txrx.encode_1.encoder.en8b10b.encoder.pd1s6 +1060 uext 1 965 0 uut.txrx.encode_1.encoder.en8b10b.encoder.pdos4 +1061 uext 1 915 0 uut.txrx.encode_1.encoder.en8b10b.encoder.pdos6 +1062 state 1 uut.txrx.encode_1.encoder.lastbit +1063 init 1 1062 9 +1064 const 260 001 +1065 state 260 uut.txrx.encode_1.encoder.max_counter +1066 init 260 1065 1064 +1067 uext 1 1018 0 uut.txrx.encode_1.encoder.next_send_disp +1068 uext 87 1013 0 uut.txrx.encode_1.encoder.send_bits +1069 uext 1 75 0 uut.txrx.encode_1.encoder.send_valid +1070 uext 25 86 0 uut.txrx.encode_1.encoder.send_word +1071 state 1 uut.txrx.encode_1.encoder.stage2_bits +1072 state 1 uut.txrx.encode_1.encoder.stage2_enable +1073 state 1 uut.txrx.encode_1.encoder.stage2_shift +1074 state 260 uut.txrx.hd_recv_wait +1075 state 57 uut.txrx.hd_send_wait +1076 state 1 uut.txrx.hd_switch_to_recv +1077 state 1 uut.txrx.hd_switch_to_send +1078 state 53 uut.txrx.ichecksum +1079 state 25 uut.txrx.in_fifo_buffer[0] +1080 state 25 uut.txrx.in_fifo_buffer[100] +1081 state 25 uut.txrx.in_fifo_buffer[101] +1082 state 25 uut.txrx.in_fifo_buffer[102] +1083 state 25 uut.txrx.in_fifo_buffer[103] +1084 state 25 uut.txrx.in_fifo_buffer[104] +1085 state 25 uut.txrx.in_fifo_buffer[105] +1086 state 25 uut.txrx.in_fifo_buffer[106] +1087 state 25 uut.txrx.in_fifo_buffer[107] +1088 state 25 uut.txrx.in_fifo_buffer[108] +1089 state 25 uut.txrx.in_fifo_buffer[109] +1090 state 25 uut.txrx.in_fifo_buffer[10] +1091 state 25 uut.txrx.in_fifo_buffer[110] +1092 state 25 uut.txrx.in_fifo_buffer[111] +1093 state 25 uut.txrx.in_fifo_buffer[112] +1094 state 25 uut.txrx.in_fifo_buffer[113] +1095 state 25 uut.txrx.in_fifo_buffer[114] +1096 state 25 uut.txrx.in_fifo_buffer[115] +1097 state 25 uut.txrx.in_fifo_buffer[116] +1098 state 25 uut.txrx.in_fifo_buffer[117] +1099 state 25 uut.txrx.in_fifo_buffer[118] +1100 state 25 uut.txrx.in_fifo_buffer[119] +1101 state 25 uut.txrx.in_fifo_buffer[11] +1102 state 25 uut.txrx.in_fifo_buffer[120] +1103 state 25 uut.txrx.in_fifo_buffer[121] +1104 state 25 uut.txrx.in_fifo_buffer[122] +1105 state 25 uut.txrx.in_fifo_buffer[123] +1106 state 25 uut.txrx.in_fifo_buffer[124] +1107 state 25 uut.txrx.in_fifo_buffer[125] +1108 state 25 uut.txrx.in_fifo_buffer[126] +1109 state 25 uut.txrx.in_fifo_buffer[127] +1110 state 25 uut.txrx.in_fifo_buffer[128] +1111 state 25 uut.txrx.in_fifo_buffer[129] +1112 state 25 uut.txrx.in_fifo_buffer[12] +1113 state 25 uut.txrx.in_fifo_buffer[130] +1114 state 25 uut.txrx.in_fifo_buffer[131] +1115 state 25 uut.txrx.in_fifo_buffer[132] +1116 state 25 uut.txrx.in_fifo_buffer[133] +1117 state 25 uut.txrx.in_fifo_buffer[134] +1118 state 25 uut.txrx.in_fifo_buffer[135] +1119 state 25 uut.txrx.in_fifo_buffer[136] +1120 state 25 uut.txrx.in_fifo_buffer[137] +1121 state 25 uut.txrx.in_fifo_buffer[138] +1122 state 25 uut.txrx.in_fifo_buffer[139] +1123 state 25 uut.txrx.in_fifo_buffer[13] +1124 state 25 uut.txrx.in_fifo_buffer[140] +1125 state 25 uut.txrx.in_fifo_buffer[141] +1126 state 25 uut.txrx.in_fifo_buffer[142] +1127 state 25 uut.txrx.in_fifo_buffer[143] +1128 state 25 uut.txrx.in_fifo_buffer[144] +1129 state 25 uut.txrx.in_fifo_buffer[145] +1130 state 25 uut.txrx.in_fifo_buffer[146] +1131 state 25 uut.txrx.in_fifo_buffer[147] +1132 state 25 uut.txrx.in_fifo_buffer[148] +1133 state 25 uut.txrx.in_fifo_buffer[149] +1134 state 25 uut.txrx.in_fifo_buffer[14] +1135 state 25 uut.txrx.in_fifo_buffer[150] +1136 state 25 uut.txrx.in_fifo_buffer[151] +1137 state 25 uut.txrx.in_fifo_buffer[152] +1138 state 25 uut.txrx.in_fifo_buffer[153] +1139 state 25 uut.txrx.in_fifo_buffer[154] +1140 state 25 uut.txrx.in_fifo_buffer[155] +1141 state 25 uut.txrx.in_fifo_buffer[156] +1142 state 25 uut.txrx.in_fifo_buffer[157] +1143 state 25 uut.txrx.in_fifo_buffer[158] +1144 state 25 uut.txrx.in_fifo_buffer[159] +1145 state 25 uut.txrx.in_fifo_buffer[15] +1146 state 25 uut.txrx.in_fifo_buffer[160] +1147 state 25 uut.txrx.in_fifo_buffer[161] +1148 state 25 uut.txrx.in_fifo_buffer[162] +1149 state 25 uut.txrx.in_fifo_buffer[163] +1150 state 25 uut.txrx.in_fifo_buffer[164] +1151 state 25 uut.txrx.in_fifo_buffer[165] +1152 state 25 uut.txrx.in_fifo_buffer[166] +1153 state 25 uut.txrx.in_fifo_buffer[167] +1154 state 25 uut.txrx.in_fifo_buffer[168] +1155 state 25 uut.txrx.in_fifo_buffer[169] +1156 state 25 uut.txrx.in_fifo_buffer[16] +1157 state 25 uut.txrx.in_fifo_buffer[170] +1158 state 25 uut.txrx.in_fifo_buffer[171] +1159 state 25 uut.txrx.in_fifo_buffer[172] +1160 state 25 uut.txrx.in_fifo_buffer[173] +1161 state 25 uut.txrx.in_fifo_buffer[174] +1162 state 25 uut.txrx.in_fifo_buffer[175] +1163 state 25 uut.txrx.in_fifo_buffer[176] +1164 state 25 uut.txrx.in_fifo_buffer[177] +1165 state 25 uut.txrx.in_fifo_buffer[178] +1166 state 25 uut.txrx.in_fifo_buffer[179] +1167 state 25 uut.txrx.in_fifo_buffer[17] +1168 state 25 uut.txrx.in_fifo_buffer[180] +1169 state 25 uut.txrx.in_fifo_buffer[181] +1170 state 25 uut.txrx.in_fifo_buffer[182] +1171 state 25 uut.txrx.in_fifo_buffer[183] +1172 state 25 uut.txrx.in_fifo_buffer[184] +1173 state 25 uut.txrx.in_fifo_buffer[185] +1174 state 25 uut.txrx.in_fifo_buffer[186] +1175 state 25 uut.txrx.in_fifo_buffer[187] +1176 state 25 uut.txrx.in_fifo_buffer[188] +1177 state 25 uut.txrx.in_fifo_buffer[189] +1178 state 25 uut.txrx.in_fifo_buffer[18] +1179 state 25 uut.txrx.in_fifo_buffer[190] +1180 state 25 uut.txrx.in_fifo_buffer[191] +1181 state 25 uut.txrx.in_fifo_buffer[192] +1182 state 25 uut.txrx.in_fifo_buffer[193] +1183 state 25 uut.txrx.in_fifo_buffer[194] +1184 state 25 uut.txrx.in_fifo_buffer[195] +1185 state 25 uut.txrx.in_fifo_buffer[196] +1186 state 25 uut.txrx.in_fifo_buffer[197] +1187 state 25 uut.txrx.in_fifo_buffer[198] +1188 state 25 uut.txrx.in_fifo_buffer[199] +1189 state 25 uut.txrx.in_fifo_buffer[19] +1190 state 25 uut.txrx.in_fifo_buffer[1] +1191 state 25 uut.txrx.in_fifo_buffer[200] +1192 state 25 uut.txrx.in_fifo_buffer[201] +1193 state 25 uut.txrx.in_fifo_buffer[202] +1194 state 25 uut.txrx.in_fifo_buffer[203] +1195 state 25 uut.txrx.in_fifo_buffer[204] +1196 state 25 uut.txrx.in_fifo_buffer[205] +1197 state 25 uut.txrx.in_fifo_buffer[206] +1198 state 25 uut.txrx.in_fifo_buffer[207] +1199 state 25 uut.txrx.in_fifo_buffer[208] +1200 state 25 uut.txrx.in_fifo_buffer[209] +1201 state 25 uut.txrx.in_fifo_buffer[20] +1202 state 25 uut.txrx.in_fifo_buffer[210] +1203 state 25 uut.txrx.in_fifo_buffer[211] +1204 state 25 uut.txrx.in_fifo_buffer[212] +1205 state 25 uut.txrx.in_fifo_buffer[213] +1206 state 25 uut.txrx.in_fifo_buffer[214] +1207 state 25 uut.txrx.in_fifo_buffer[215] +1208 state 25 uut.txrx.in_fifo_buffer[216] +1209 state 25 uut.txrx.in_fifo_buffer[217] +1210 state 25 uut.txrx.in_fifo_buffer[218] +1211 state 25 uut.txrx.in_fifo_buffer[219] +1212 state 25 uut.txrx.in_fifo_buffer[21] +1213 state 25 uut.txrx.in_fifo_buffer[220] +1214 state 25 uut.txrx.in_fifo_buffer[221] +1215 state 25 uut.txrx.in_fifo_buffer[222] +1216 state 25 uut.txrx.in_fifo_buffer[223] +1217 state 25 uut.txrx.in_fifo_buffer[224] +1218 state 25 uut.txrx.in_fifo_buffer[225] +1219 state 25 uut.txrx.in_fifo_buffer[226] +1220 state 25 uut.txrx.in_fifo_buffer[227] +1221 state 25 uut.txrx.in_fifo_buffer[228] +1222 state 25 uut.txrx.in_fifo_buffer[229] +1223 state 25 uut.txrx.in_fifo_buffer[22] +1224 state 25 uut.txrx.in_fifo_buffer[230] +1225 state 25 uut.txrx.in_fifo_buffer[231] +1226 state 25 uut.txrx.in_fifo_buffer[232] +1227 state 25 uut.txrx.in_fifo_buffer[233] +1228 state 25 uut.txrx.in_fifo_buffer[234] +1229 state 25 uut.txrx.in_fifo_buffer[235] +1230 state 25 uut.txrx.in_fifo_buffer[236] +1231 state 25 uut.txrx.in_fifo_buffer[237] +1232 state 25 uut.txrx.in_fifo_buffer[238] +1233 state 25 uut.txrx.in_fifo_buffer[239] +1234 state 25 uut.txrx.in_fifo_buffer[23] +1235 state 25 uut.txrx.in_fifo_buffer[240] +1236 state 25 uut.txrx.in_fifo_buffer[241] +1237 state 25 uut.txrx.in_fifo_buffer[242] +1238 state 25 uut.txrx.in_fifo_buffer[243] +1239 state 25 uut.txrx.in_fifo_buffer[244] +1240 state 25 uut.txrx.in_fifo_buffer[245] +1241 state 25 uut.txrx.in_fifo_buffer[246] +1242 state 25 uut.txrx.in_fifo_buffer[247] +1243 state 25 uut.txrx.in_fifo_buffer[248] +1244 state 25 uut.txrx.in_fifo_buffer[249] +1245 state 25 uut.txrx.in_fifo_buffer[24] +1246 state 25 uut.txrx.in_fifo_buffer[250] +1247 state 25 uut.txrx.in_fifo_buffer[251] +1248 state 25 uut.txrx.in_fifo_buffer[252] +1249 state 25 uut.txrx.in_fifo_buffer[253] +1250 state 25 uut.txrx.in_fifo_buffer[254] +1251 state 25 uut.txrx.in_fifo_buffer[255] +1252 state 25 uut.txrx.in_fifo_buffer[25] +1253 state 25 uut.txrx.in_fifo_buffer[26] +1254 state 25 uut.txrx.in_fifo_buffer[27] +1255 state 25 uut.txrx.in_fifo_buffer[28] +1256 state 25 uut.txrx.in_fifo_buffer[29] +1257 state 25 uut.txrx.in_fifo_buffer[2] +1258 state 25 uut.txrx.in_fifo_buffer[30] +1259 state 25 uut.txrx.in_fifo_buffer[31] +1260 state 25 uut.txrx.in_fifo_buffer[32] +1261 state 25 uut.txrx.in_fifo_buffer[33] +1262 state 25 uut.txrx.in_fifo_buffer[34] +1263 state 25 uut.txrx.in_fifo_buffer[35] +1264 state 25 uut.txrx.in_fifo_buffer[36] +1265 state 25 uut.txrx.in_fifo_buffer[37] +1266 state 25 uut.txrx.in_fifo_buffer[38] +1267 state 25 uut.txrx.in_fifo_buffer[39] +1268 state 25 uut.txrx.in_fifo_buffer[3] +1269 state 25 uut.txrx.in_fifo_buffer[40] +1270 state 25 uut.txrx.in_fifo_buffer[41] +1271 state 25 uut.txrx.in_fifo_buffer[42] +1272 state 25 uut.txrx.in_fifo_buffer[43] +1273 state 25 uut.txrx.in_fifo_buffer[44] +1274 state 25 uut.txrx.in_fifo_buffer[45] +1275 state 25 uut.txrx.in_fifo_buffer[46] +1276 state 25 uut.txrx.in_fifo_buffer[47] +1277 state 25 uut.txrx.in_fifo_buffer[48] +1278 state 25 uut.txrx.in_fifo_buffer[49] +1279 state 25 uut.txrx.in_fifo_buffer[4] +1280 state 25 uut.txrx.in_fifo_buffer[50] +1281 state 25 uut.txrx.in_fifo_buffer[51] +1282 state 25 uut.txrx.in_fifo_buffer[52] +1283 state 25 uut.txrx.in_fifo_buffer[53] +1284 state 25 uut.txrx.in_fifo_buffer[54] +1285 state 25 uut.txrx.in_fifo_buffer[55] +1286 state 25 uut.txrx.in_fifo_buffer[56] +1287 state 25 uut.txrx.in_fifo_buffer[57] +1288 state 25 uut.txrx.in_fifo_buffer[58] +1289 state 25 uut.txrx.in_fifo_buffer[59] +1290 state 25 uut.txrx.in_fifo_buffer[5] +1291 state 25 uut.txrx.in_fifo_buffer[60] +1292 state 25 uut.txrx.in_fifo_buffer[61] +1293 state 25 uut.txrx.in_fifo_buffer[62] +1294 state 25 uut.txrx.in_fifo_buffer[63] +1295 state 25 uut.txrx.in_fifo_buffer[64] +1296 state 25 uut.txrx.in_fifo_buffer[65] +1297 state 25 uut.txrx.in_fifo_buffer[66] +1298 state 25 uut.txrx.in_fifo_buffer[67] +1299 state 25 uut.txrx.in_fifo_buffer[68] +1300 state 25 uut.txrx.in_fifo_buffer[69] +1301 state 25 uut.txrx.in_fifo_buffer[6] +1302 state 25 uut.txrx.in_fifo_buffer[70] +1303 state 25 uut.txrx.in_fifo_buffer[71] +1304 state 25 uut.txrx.in_fifo_buffer[72] +1305 state 25 uut.txrx.in_fifo_buffer[73] +1306 state 25 uut.txrx.in_fifo_buffer[74] +1307 state 25 uut.txrx.in_fifo_buffer[75] +1308 state 25 uut.txrx.in_fifo_buffer[76] +1309 state 25 uut.txrx.in_fifo_buffer[77] +1310 state 25 uut.txrx.in_fifo_buffer[78] +1311 state 25 uut.txrx.in_fifo_buffer[79] +1312 state 25 uut.txrx.in_fifo_buffer[7] +1313 state 25 uut.txrx.in_fifo_buffer[80] +1314 state 25 uut.txrx.in_fifo_buffer[81] +1315 state 25 uut.txrx.in_fifo_buffer[82] +1316 state 25 uut.txrx.in_fifo_buffer[83] +1317 state 25 uut.txrx.in_fifo_buffer[84] +1318 state 25 uut.txrx.in_fifo_buffer[85] +1319 state 25 uut.txrx.in_fifo_buffer[86] +1320 state 25 uut.txrx.in_fifo_buffer[87] +1321 state 25 uut.txrx.in_fifo_buffer[88] +1322 state 25 uut.txrx.in_fifo_buffer[89] +1323 state 25 uut.txrx.in_fifo_buffer[8] +1324 state 25 uut.txrx.in_fifo_buffer[90] +1325 state 25 uut.txrx.in_fifo_buffer[91] +1326 state 25 uut.txrx.in_fifo_buffer[92] +1327 state 25 uut.txrx.in_fifo_buffer[93] +1328 state 25 uut.txrx.in_fifo_buffer[94] +1329 state 25 uut.txrx.in_fifo_buffer[95] +1330 state 25 uut.txrx.in_fifo_buffer[96] +1331 state 25 uut.txrx.in_fifo_buffer[97] +1332 state 25 uut.txrx.in_fifo_buffer[98] +1333 state 25 uut.txrx.in_fifo_buffer[99] +1334 state 25 uut.txrx.in_fifo_buffer[9] +1335 uext 28 32 0 uut.txrx.in_fifo_iptr_nxt +1336 uext 28 33 0 uut.txrx.in_fifo_oblock +1337 state 28 uut.txrx.in_fifo_optr +1338 uext 28 30 7 +1339 add 28 1337 1338 +1340 uext 28 1339 0 uut.txrx.in_fifo_optr_nxt +1341 uext 25 26 0 uut.txrx.in_ser_tdata +1342 uext 1 35 0 uut.txrx.in_ser_tready +1343 uext 1 37 0 uut.txrx.in_ser_tvalid +1344 state 17 uut.txrx.istate +1345 state 28 uut.txrx.next_sent_gpio +1346 state 28 uut.txrx.next_sent_gpio_at +1347 state 17 uut.txrx.ostate +1348 state 266 uut.txrx.ostate_counter +1349 state 1 uut.txrx.ostate_reset +1350 uext 28 30 7 +1351 add 28 43 1350 +1352 uext 28 1351 0 uut.txrx.out_fifo_optr_nxt +1353 uext 1 40 0 uut.txrx.out_ser_tready +1354 uext 1 45 0 uut.txrx.out_ser_tvalid +1355 state 28 uut.txrx.peer_out_fifo_iptr_next +1356 uext 1 842 0 uut.txrx.recv_error +1357 uext 25 269 0 uut.txrx.recv_word +1358 uext 1 82 0 uut.txrx.recv_word_en +1359 uext 1 20 0 uut.txrx.resetn_out +1360 uext 1 846 0 uut.txrx.rstdetect +1361 uext 1 77 0 uut.txrx.send_ready +1362 state 25 uut.txrx.sent_gpio +1363 uext 1 63 0 uut.txrx.serdes_en +1364 uext 1 66 0 uut.txrx.serdes_in +1365 uext 1 69 0 uut.txrx.serdes_out +1366 state 28 uut.txrx.work_out_fifo_iptr +1367 state 1 uut.txrx.work_out_fifo_iptr_apply +1368 uext 28 30 7 +1369 add 28 1366 1368 +1370 uext 28 1369 0 uut.txrx.work_out_fifo_iptr_nxt +1371 uext 1 2 0 uut.unpack_8bits.unpacker.clk +1372 uext 1 20 0 uut.unpack_8bits.unpacker.resetn +1373 uext 1 45 0 uut.unpack_8bits.unpacker.ser_tvalid +1374 sort bitvec 228 +1375 const 1374 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1376 state 1374 xfer_shreg +1377 init 1374 1376 1375 +1378 next 1 4 63 +1379 next 1 6 69 +1380 slice 1 1376 227 227 +1381 slice 1 1376 226 226 +1382 concat 258 1381 1380 +1383 slice 1 1376 225 225 +1384 concat 260 1383 1382 +1385 slice 1 1376 224 224 +1386 concat 17 1385 1384 +1387 slice 1 1376 223 223 +1388 concat 57 1387 1386 +1389 slice 1 1376 222 222 +1390 concat 264 1389 1388 +1391 slice 1 1376 221 221 +1392 concat 266 1391 1390 +1393 slice 1 1376 220 220 +1394 concat 28 1393 1392 +1395 slice 1 1376 219 219 +1396 concat 25 1395 1394 +1397 slice 1 1376 218 218 +1398 concat 87 1397 1396 +1399 slice 1 1376 217 217 +1400 concat 545 1399 1398 +1401 slice 1 1376 216 216 +1402 concat 55 1401 1400 +1403 slice 1 1376 215 215 +1404 concat 548 1403 1402 +1405 slice 1 1376 214 214 +1406 concat 550 1405 1404 +1407 slice 1 1376 213 213 +1408 concat 552 1407 1406 +1409 slice 1 1376 212 212 +1410 concat 554 1409 1408 +1411 slice 1 1376 211 211 +1412 concat 556 1411 1410 +1413 slice 1 1376 210 210 +1414 concat 558 1413 1412 +1415 slice 1 1376 209 209 +1416 concat 560 1415 1414 +1417 slice 1 1376 208 208 +1418 concat 562 1417 1416 +1419 slice 1 1376 207 207 +1420 concat 564 1419 1418 +1421 slice 1 1376 206 206 +1422 concat 566 1421 1420 +1423 slice 1 1376 205 205 +1424 concat 568 1423 1422 +1425 slice 1 1376 204 204 +1426 concat 570 1425 1424 +1427 slice 1 1376 203 203 +1428 concat 572 1427 1426 +1429 slice 1 1376 202 202 +1430 concat 574 1429 1428 +1431 slice 1 1376 201 201 +1432 concat 576 1431 1430 +1433 slice 1 1376 200 200 +1434 concat 578 1433 1432 +1435 slice 1 1376 199 199 +1436 concat 580 1435 1434 +1437 slice 1 1376 198 198 +1438 concat 582 1437 1436 +1439 slice 1 1376 197 197 +1440 concat 584 1439 1438 +1441 slice 1 1376 196 196 +1442 concat 53 1441 1440 +1443 slice 1 1376 195 195 +1444 sort bitvec 33 +1445 concat 1444 1443 1442 +1446 slice 1 1376 194 194 +1447 sort bitvec 34 +1448 concat 1447 1446 1445 +1449 slice 1 1376 193 193 +1450 sort bitvec 35 +1451 concat 1450 1449 1448 +1452 slice 1 1376 192 192 +1453 sort bitvec 36 +1454 concat 1453 1452 1451 +1455 slice 1 1376 191 191 +1456 sort bitvec 37 +1457 concat 1456 1455 1454 +1458 slice 1 1376 190 190 +1459 sort bitvec 38 +1460 concat 1459 1458 1457 +1461 slice 1 1376 189 189 +1462 sort bitvec 39 +1463 concat 1462 1461 1460 +1464 slice 1 1376 188 188 +1465 sort bitvec 40 +1466 concat 1465 1464 1463 +1467 slice 1 1376 187 187 +1468 sort bitvec 41 +1469 concat 1468 1467 1466 +1470 slice 1 1376 186 186 +1471 sort bitvec 42 +1472 concat 1471 1470 1469 +1473 slice 1 1376 185 185 +1474 sort bitvec 43 +1475 concat 1474 1473 1472 +1476 slice 1 1376 184 184 +1477 sort bitvec 44 +1478 concat 1477 1476 1475 +1479 slice 1 1376 183 183 +1480 sort bitvec 45 +1481 concat 1480 1479 1478 +1482 slice 1 1376 182 182 +1483 sort bitvec 46 +1484 concat 1483 1482 1481 +1485 slice 1 1376 181 181 +1486 sort bitvec 47 +1487 concat 1486 1485 1484 +1488 slice 1 1376 180 180 +1489 sort bitvec 48 +1490 concat 1489 1488 1487 +1491 slice 1 1376 179 179 +1492 sort bitvec 49 +1493 concat 1492 1491 1490 +1494 slice 1 1376 178 178 +1495 sort bitvec 50 +1496 concat 1495 1494 1493 +1497 slice 1 1376 177 177 +1498 sort bitvec 51 +1499 concat 1498 1497 1496 +1500 slice 1 1376 176 176 +1501 sort bitvec 52 +1502 concat 1501 1500 1499 +1503 slice 1 1376 175 175 +1504 sort bitvec 53 +1505 concat 1504 1503 1502 +1506 slice 1 1376 174 174 +1507 sort bitvec 54 +1508 concat 1507 1506 1505 +1509 slice 1 1376 173 173 +1510 sort bitvec 55 +1511 concat 1510 1509 1508 +1512 slice 1 1376 172 172 +1513 sort bitvec 56 +1514 concat 1513 1512 1511 +1515 slice 1 1376 171 171 +1516 sort bitvec 57 +1517 concat 1516 1515 1514 +1518 slice 1 1376 170 170 +1519 sort bitvec 58 +1520 concat 1519 1518 1517 +1521 slice 1 1376 169 169 +1522 sort bitvec 59 +1523 concat 1522 1521 1520 +1524 slice 1 1376 168 168 +1525 sort bitvec 60 +1526 concat 1525 1524 1523 +1527 slice 1 1376 167 167 +1528 sort bitvec 61 +1529 concat 1528 1527 1526 +1530 slice 1 1376 166 166 +1531 sort bitvec 62 +1532 concat 1531 1530 1529 +1533 slice 1 1376 165 165 +1534 sort bitvec 63 +1535 concat 1534 1533 1532 +1536 slice 1 1376 164 164 +1537 sort bitvec 64 +1538 concat 1537 1536 1535 +1539 slice 1 1376 163 163 +1540 sort bitvec 65 +1541 concat 1540 1539 1538 +1542 slice 1 1376 162 162 +1543 sort bitvec 66 +1544 concat 1543 1542 1541 +1545 slice 1 1376 161 161 +1546 sort bitvec 67 +1547 concat 1546 1545 1544 +1548 slice 1 1376 160 160 +1549 sort bitvec 68 +1550 concat 1549 1548 1547 +1551 slice 1 1376 159 159 +1552 sort bitvec 69 +1553 concat 1552 1551 1550 +1554 slice 1 1376 158 158 +1555 sort bitvec 70 +1556 concat 1555 1554 1553 +1557 slice 1 1376 157 157 +1558 sort bitvec 71 +1559 concat 1558 1557 1556 +1560 slice 1 1376 156 156 +1561 sort bitvec 72 +1562 concat 1561 1560 1559 +1563 slice 1 1376 155 155 +1564 sort bitvec 73 +1565 concat 1564 1563 1562 +1566 slice 1 1376 154 154 +1567 sort bitvec 74 +1568 concat 1567 1566 1565 +1569 slice 1 1376 153 153 +1570 sort bitvec 75 +1571 concat 1570 1569 1568 +1572 slice 1 1376 152 152 +1573 sort bitvec 76 +1574 concat 1573 1572 1571 +1575 slice 1 1376 151 151 +1576 sort bitvec 77 +1577 concat 1576 1575 1574 +1578 slice 1 1376 150 150 +1579 sort bitvec 78 +1580 concat 1579 1578 1577 +1581 slice 1 1376 149 149 +1582 sort bitvec 79 +1583 concat 1582 1581 1580 +1584 slice 1 1376 148 148 +1585 sort bitvec 80 +1586 concat 1585 1584 1583 +1587 slice 1 1376 147 147 +1588 sort bitvec 81 +1589 concat 1588 1587 1586 +1590 slice 1 1376 146 146 +1591 sort bitvec 82 +1592 concat 1591 1590 1589 +1593 slice 1 1376 145 145 +1594 sort bitvec 83 +1595 concat 1594 1593 1592 +1596 slice 1 1376 144 144 +1597 sort bitvec 84 +1598 concat 1597 1596 1595 +1599 slice 1 1376 143 143 +1600 sort bitvec 85 +1601 concat 1600 1599 1598 +1602 slice 1 1376 142 142 +1603 sort bitvec 86 +1604 concat 1603 1602 1601 +1605 slice 1 1376 141 141 +1606 sort bitvec 87 +1607 concat 1606 1605 1604 +1608 slice 1 1376 140 140 +1609 sort bitvec 88 +1610 concat 1609 1608 1607 +1611 slice 1 1376 139 139 +1612 sort bitvec 89 +1613 concat 1612 1611 1610 +1614 slice 1 1376 138 138 +1615 sort bitvec 90 +1616 concat 1615 1614 1613 +1617 slice 1 1376 137 137 +1618 sort bitvec 91 +1619 concat 1618 1617 1616 +1620 slice 1 1376 136 136 +1621 sort bitvec 92 +1622 concat 1621 1620 1619 +1623 slice 1 1376 135 135 +1624 sort bitvec 93 +1625 concat 1624 1623 1622 +1626 slice 1 1376 134 134 +1627 sort bitvec 94 +1628 concat 1627 1626 1625 +1629 slice 1 1376 133 133 +1630 sort bitvec 95 +1631 concat 1630 1629 1628 +1632 slice 1 1376 132 132 +1633 sort bitvec 96 +1634 concat 1633 1632 1631 +1635 slice 1 1376 131 131 +1636 sort bitvec 97 +1637 concat 1636 1635 1634 +1638 slice 1 1376 130 130 +1639 sort bitvec 98 +1640 concat 1639 1638 1637 +1641 slice 1 1376 129 129 +1642 sort bitvec 99 +1643 concat 1642 1641 1640 +1644 slice 1 1376 128 128 +1645 sort bitvec 100 +1646 concat 1645 1644 1643 +1647 slice 1 1376 127 127 +1648 sort bitvec 101 +1649 concat 1648 1647 1646 +1650 slice 1 1376 126 126 +1651 sort bitvec 102 +1652 concat 1651 1650 1649 +1653 slice 1 1376 125 125 +1654 sort bitvec 103 +1655 concat 1654 1653 1652 +1656 slice 1 1376 124 124 +1657 sort bitvec 104 +1658 concat 1657 1656 1655 +1659 slice 1 1376 123 123 +1660 sort bitvec 105 +1661 concat 1660 1659 1658 +1662 slice 1 1376 122 122 +1663 sort bitvec 106 +1664 concat 1663 1662 1661 +1665 slice 1 1376 121 121 +1666 sort bitvec 107 +1667 concat 1666 1665 1664 +1668 slice 1 1376 120 120 +1669 sort bitvec 108 +1670 concat 1669 1668 1667 +1671 slice 1 1376 119 119 +1672 sort bitvec 109 +1673 concat 1672 1671 1670 +1674 slice 1 1376 118 118 +1675 sort bitvec 110 +1676 concat 1675 1674 1673 +1677 slice 1 1376 117 117 +1678 sort bitvec 111 +1679 concat 1678 1677 1676 +1680 slice 1 1376 116 116 +1681 sort bitvec 112 +1682 concat 1681 1680 1679 +1683 slice 1 1376 115 115 +1684 sort bitvec 113 +1685 concat 1684 1683 1682 +1686 slice 1 1376 114 114 +1687 sort bitvec 114 +1688 concat 1687 1686 1685 +1689 slice 1 1376 113 113 +1690 sort bitvec 115 +1691 concat 1690 1689 1688 +1692 slice 1 1376 112 112 +1693 sort bitvec 116 +1694 concat 1693 1692 1691 +1695 slice 1 1376 111 111 +1696 sort bitvec 117 +1697 concat 1696 1695 1694 +1698 slice 1 1376 110 110 +1699 sort bitvec 118 +1700 concat 1699 1698 1697 +1701 slice 1 1376 109 109 +1702 sort bitvec 119 +1703 concat 1702 1701 1700 +1704 slice 1 1376 108 108 +1705 sort bitvec 120 +1706 concat 1705 1704 1703 +1707 slice 1 1376 107 107 +1708 sort bitvec 121 +1709 concat 1708 1707 1706 +1710 slice 1 1376 106 106 +1711 sort bitvec 122 +1712 concat 1711 1710 1709 +1713 slice 1 1376 105 105 +1714 sort bitvec 123 +1715 concat 1714 1713 1712 +1716 slice 1 1376 104 104 +1717 sort bitvec 124 +1718 concat 1717 1716 1715 +1719 slice 1 1376 103 103 +1720 sort bitvec 125 +1721 concat 1720 1719 1718 +1722 slice 1 1376 102 102 +1723 sort bitvec 126 +1724 concat 1723 1722 1721 +1725 slice 1 1376 101 101 +1726 sort bitvec 127 +1727 concat 1726 1725 1724 +1728 slice 1 1376 100 100 +1729 sort bitvec 128 +1730 concat 1729 1728 1727 +1731 slice 1 1376 99 99 +1732 sort bitvec 129 +1733 concat 1732 1731 1730 +1734 slice 1 1376 98 98 +1735 sort bitvec 130 +1736 concat 1735 1734 1733 +1737 slice 1 1376 97 97 +1738 sort bitvec 131 +1739 concat 1738 1737 1736 +1740 slice 1 1376 96 96 +1741 sort bitvec 132 +1742 concat 1741 1740 1739 +1743 slice 1 1376 95 95 +1744 sort bitvec 133 +1745 concat 1744 1743 1742 +1746 slice 1 1376 94 94 +1747 sort bitvec 134 +1748 concat 1747 1746 1745 +1749 slice 1 1376 93 93 +1750 sort bitvec 135 +1751 concat 1750 1749 1748 +1752 slice 1 1376 92 92 +1753 sort bitvec 136 +1754 concat 1753 1752 1751 +1755 slice 1 1376 91 91 +1756 sort bitvec 137 +1757 concat 1756 1755 1754 +1758 slice 1 1376 90 90 +1759 sort bitvec 138 +1760 concat 1759 1758 1757 +1761 slice 1 1376 89 89 +1762 sort bitvec 139 +1763 concat 1762 1761 1760 +1764 slice 1 1376 88 88 +1765 sort bitvec 140 +1766 concat 1765 1764 1763 +1767 slice 1 1376 87 87 +1768 sort bitvec 141 +1769 concat 1768 1767 1766 +1770 slice 1 1376 86 86 +1771 sort bitvec 142 +1772 concat 1771 1770 1769 +1773 slice 1 1376 85 85 +1774 sort bitvec 143 +1775 concat 1774 1773 1772 +1776 slice 1 1376 84 84 +1777 sort bitvec 144 +1778 concat 1777 1776 1775 +1779 slice 1 1376 83 83 +1780 sort bitvec 145 +1781 concat 1780 1779 1778 +1782 slice 1 1376 82 82 +1783 sort bitvec 146 +1784 concat 1783 1782 1781 +1785 slice 1 1376 81 81 +1786 sort bitvec 147 +1787 concat 1786 1785 1784 +1788 slice 1 1376 80 80 +1789 sort bitvec 148 +1790 concat 1789 1788 1787 +1791 slice 1 1376 79 79 +1792 sort bitvec 149 +1793 concat 1792 1791 1790 +1794 slice 1 1376 78 78 +1795 sort bitvec 150 +1796 concat 1795 1794 1793 +1797 slice 1 1376 77 77 +1798 sort bitvec 151 +1799 concat 1798 1797 1796 +1800 slice 1 1376 76 76 +1801 sort bitvec 152 +1802 concat 1801 1800 1799 +1803 slice 1 1376 75 75 +1804 sort bitvec 153 +1805 concat 1804 1803 1802 +1806 slice 1 1376 74 74 +1807 sort bitvec 154 +1808 concat 1807 1806 1805 +1809 slice 1 1376 73 73 +1810 sort bitvec 155 +1811 concat 1810 1809 1808 +1812 slice 1 1376 72 72 +1813 sort bitvec 156 +1814 concat 1813 1812 1811 +1815 slice 1 1376 71 71 +1816 sort bitvec 157 +1817 concat 1816 1815 1814 +1818 slice 1 1376 70 70 +1819 sort bitvec 158 +1820 concat 1819 1818 1817 +1821 slice 1 1376 69 69 +1822 sort bitvec 159 +1823 concat 1822 1821 1820 +1824 slice 1 1376 68 68 +1825 sort bitvec 160 +1826 concat 1825 1824 1823 +1827 slice 1 1376 67 67 +1828 sort bitvec 161 +1829 concat 1828 1827 1826 +1830 slice 1 1376 66 66 +1831 sort bitvec 162 +1832 concat 1831 1830 1829 +1833 slice 1 1376 65 65 +1834 sort bitvec 163 +1835 concat 1834 1833 1832 +1836 slice 1 1376 64 64 +1837 sort bitvec 164 +1838 concat 1837 1836 1835 +1839 slice 1 1376 63 63 +1840 sort bitvec 165 +1841 concat 1840 1839 1838 +1842 slice 1 1376 62 62 +1843 sort bitvec 166 +1844 concat 1843 1842 1841 +1845 slice 1 1376 61 61 +1846 sort bitvec 167 +1847 concat 1846 1845 1844 +1848 slice 1 1376 60 60 +1849 sort bitvec 168 +1850 concat 1849 1848 1847 +1851 slice 1 1376 59 59 +1852 sort bitvec 169 +1853 concat 1852 1851 1850 +1854 slice 1 1376 58 58 +1855 sort bitvec 170 +1856 concat 1855 1854 1853 +1857 slice 1 1376 57 57 +1858 sort bitvec 171 +1859 concat 1858 1857 1856 +1860 slice 1 1376 56 56 +1861 sort bitvec 172 +1862 concat 1861 1860 1859 +1863 slice 1 1376 55 55 +1864 sort bitvec 173 +1865 concat 1864 1863 1862 +1866 slice 1 1376 54 54 +1867 sort bitvec 174 +1868 concat 1867 1866 1865 +1869 slice 1 1376 53 53 +1870 sort bitvec 175 +1871 concat 1870 1869 1868 +1872 slice 1 1376 52 52 +1873 sort bitvec 176 +1874 concat 1873 1872 1871 +1875 slice 1 1376 51 51 +1876 sort bitvec 177 +1877 concat 1876 1875 1874 +1878 slice 1 1376 50 50 +1879 sort bitvec 178 +1880 concat 1879 1878 1877 +1881 slice 1 1376 49 49 +1882 sort bitvec 179 +1883 concat 1882 1881 1880 +1884 slice 1 1376 48 48 +1885 sort bitvec 180 +1886 concat 1885 1884 1883 +1887 slice 1 1376 47 47 +1888 sort bitvec 181 +1889 concat 1888 1887 1886 +1890 slice 1 1376 46 46 +1891 sort bitvec 182 +1892 concat 1891 1890 1889 +1893 slice 1 1376 45 45 +1894 sort bitvec 183 +1895 concat 1894 1893 1892 +1896 slice 1 1376 44 44 +1897 sort bitvec 184 +1898 concat 1897 1896 1895 +1899 slice 1 1376 43 43 +1900 sort bitvec 185 +1901 concat 1900 1899 1898 +1902 slice 1 1376 42 42 +1903 sort bitvec 186 +1904 concat 1903 1902 1901 +1905 slice 1 1376 41 41 +1906 sort bitvec 187 +1907 concat 1906 1905 1904 +1908 slice 1 1376 40 40 +1909 sort bitvec 188 +1910 concat 1909 1908 1907 +1911 slice 1 1376 39 39 +1912 sort bitvec 189 +1913 concat 1912 1911 1910 +1914 slice 1 1376 38 38 +1915 sort bitvec 190 +1916 concat 1915 1914 1913 +1917 slice 1 1376 37 37 +1918 sort bitvec 191 +1919 concat 1918 1917 1916 +1920 slice 1 1376 36 36 +1921 sort bitvec 192 +1922 concat 1921 1920 1919 +1923 slice 1 1376 35 35 +1924 sort bitvec 193 +1925 concat 1924 1923 1922 +1926 slice 1 1376 34 34 +1927 sort bitvec 194 +1928 concat 1927 1926 1925 +1929 slice 1 1376 33 33 +1930 sort bitvec 195 +1931 concat 1930 1929 1928 +1932 slice 1 1376 32 32 +1933 sort bitvec 196 +1934 concat 1933 1932 1931 +1935 slice 1 1376 31 31 +1936 sort bitvec 197 +1937 concat 1936 1935 1934 +1938 slice 1 1376 30 30 +1939 sort bitvec 198 +1940 concat 1939 1938 1937 +1941 slice 1 1376 29 29 +1942 sort bitvec 199 +1943 concat 1942 1941 1940 +1944 slice 1 1376 28 28 +1945 sort bitvec 200 +1946 concat 1945 1944 1943 +1947 slice 1 1376 27 27 +1948 sort bitvec 201 +1949 concat 1948 1947 1946 +1950 slice 1 1376 26 26 +1951 sort bitvec 202 +1952 concat 1951 1950 1949 +1953 slice 1 1376 25 25 +1954 sort bitvec 203 +1955 concat 1954 1953 1952 +1956 slice 1 1376 24 24 +1957 sort bitvec 204 +1958 concat 1957 1956 1955 +1959 slice 1 1376 23 23 +1960 sort bitvec 205 +1961 concat 1960 1959 1958 +1962 slice 1 1376 22 22 +1963 sort bitvec 206 +1964 concat 1963 1962 1961 +1965 slice 1 1376 21 21 +1966 sort bitvec 207 +1967 concat 1966 1965 1964 +1968 slice 1 1376 20 20 +1969 sort bitvec 208 +1970 concat 1969 1968 1967 +1971 slice 1 1376 19 19 +1972 sort bitvec 209 +1973 concat 1972 1971 1970 +1974 slice 1 1376 18 18 +1975 sort bitvec 210 +1976 concat 1975 1974 1973 +1977 slice 1 1376 17 17 +1978 sort bitvec 211 +1979 concat 1978 1977 1976 +1980 slice 1 1376 16 16 +1981 sort bitvec 212 +1982 concat 1981 1980 1979 +1983 slice 1 1376 15 15 +1984 sort bitvec 213 +1985 concat 1984 1983 1982 +1986 slice 1 1376 14 14 +1987 sort bitvec 214 +1988 concat 1987 1986 1985 +1989 slice 1 1376 13 13 +1990 sort bitvec 215 +1991 concat 1990 1989 1988 +1992 slice 1 1376 12 12 +1993 sort bitvec 216 +1994 concat 1993 1992 1991 +1995 slice 1 1376 11 11 +1996 sort bitvec 217 +1997 concat 1996 1995 1994 +1998 slice 1 1376 10 10 +1999 sort bitvec 218 +2000 concat 1999 1998 1997 +2001 slice 1 1376 9 9 +2002 sort bitvec 219 +2003 concat 2002 2001 2000 +2004 slice 1 1376 8 8 +2005 sort bitvec 220 +2006 concat 2005 2004 2003 +2007 slice 1 1376 7 7 +2008 sort bitvec 221 +2009 concat 2008 2007 2006 +2010 slice 1 1376 6 6 +2011 sort bitvec 222 +2012 concat 2011 2010 2009 +2013 slice 1 1376 5 5 +2014 sort bitvec 223 +2015 concat 2014 2013 2012 +2016 slice 1 1376 4 4 +2017 sort bitvec 224 +2018 concat 2017 2016 2015 +2019 slice 1 1376 3 3 +2020 sort bitvec 225 +2021 concat 2020 2019 2018 +2022 slice 1 1376 2 2 +2023 sort bitvec 226 +2024 concat 2023 2022 2021 +2025 slice 1 1376 1 1 +2026 sort bitvec 227 +2027 concat 2026 2025 2024 +2028 slice 1 1376 0 0 +2029 concat 1374 2028 2027 +2030 redand 1 2029 +2031 not 1 2030 +2032 next 1 8 2031 +2033 next 1 10 30 +2034 ite 1 21 30 15 +2035 ite 1 15 9 2034 +2036 ite 1 49 2034 2035 +2037 or 1 49 15 +2038 ite 1 2037 2036 2034 +2039 ite 1 48 2034 2038 +2040 ite 1 50 2034 2039 +2041 redor 1 58 +2042 ite 1 2041 2034 2040 +2043 not 1 37 +2044 or 1 2043 35 +2045 ite 1 2044 2042 2034 +2046 ite 1 20 2045 9 +2047 next 1 15 2046 +2048 uext 17 30 3 +2049 sub 17 18 2048 +2050 redor 1 18 +2051 ite 17 2050 2049 18 +2052 const 17 1111 +2053 const 53 00000000000000000000000000000001 +2054 redor 1 2053 +2055 and 1 2054 846 +2056 ite 17 2055 2052 2051 +2057 next 17 18 2056 +2058 slice 28 54 7 0 +2059 concat 25 9 2058 +2060 ite 25 15 2059 26 +2061 slice 28 54 7 0 +2062 xor 28 51 2061 +2063 concat 25 9 2062 +2064 ite 25 49 2063 2060 +2065 ite 25 2037 2064 26 +2066 const 25 101011100 +2067 ite 25 48 2066 2065 +2068 const 25 101111100 +2069 ite 25 50 2068 2067 +2070 slice 28 54 31 24 +2071 concat 25 9 2070 +2072 slice 28 54 23 16 +2073 concat 25 9 2072 +2074 slice 1 58 3 3 +2075 ite 25 2074 2073 2071 +2076 slice 28 54 15 8 +2077 concat 25 9 2076 +2078 slice 1 58 2 2 +2079 ite 25 2078 2077 2075 +2080 slice 1 58 1 1 +2081 ite 25 2080 2059 2079 +2082 const 25 100011100 +2083 slice 1 58 0 0 +2084 ite 25 2083 2082 2081 +2085 ite 25 2041 2084 2069 +2086 ite 25 2044 2085 26 +2087 ite 25 20 2086 26 +2088 next 25 26 2087 +2089 const 28 00000000 +2090 and 1 37 35 +2091 ite 28 2090 32 29 +2092 ite 28 20 2091 2089 +2093 next 28 29 2092 +2094 slice 28 1078 31 24 +2095 uext 25 2094 1 +2096 eq 1 269 2095 +2097 ite 28 2096 1355 33 +2098 const 17 1010 +2099 eq 1 1344 2098 +2100 const 17 1001 +2101 eq 1 1344 2100 +2102 const 17 1000 +2103 eq 1 1344 2102 +2104 const 260 110 +2105 uext 17 2104 1 +2106 eq 1 1344 2105 +2107 const 260 100 +2108 uext 17 2107 1 +2109 eq 1 1344 2108 +2110 const 258 11 +2111 uext 17 2110 2 +2112 eq 1 1344 2111 +2113 const 258 10 +2114 uext 17 2113 2 +2115 eq 1 1344 2114 +2116 uext 17 30 3 +2117 eq 1 1344 2116 +2118 redor 1 1344 +2119 not 1 2118 +2120 concat 258 2101 2099 +2121 concat 260 2103 2120 +2122 concat 17 2106 2121 +2123 concat 57 2109 2122 +2124 concat 264 2112 2123 +2125 concat 266 2115 2124 +2126 concat 28 2117 2125 +2127 concat 25 2119 2126 +2128 redor 1 2127 +2129 ite 28 2128 33 2097 +2130 eq 1 269 588 +2131 ite 28 2130 33 2129 +2132 ite 28 842 33 2131 +2133 redor 1 1074 +2134 not 1 2133 +2135 and 1 82 2134 +2136 not 1 63 +2137 and 1 2135 2136 +2138 ite 28 2137 2132 33 +2139 ite 28 80 33 2138 +2140 ite 28 20 2139 2089 +2141 next 28 33 2140 +2142 ite 1 15 30 37 +2143 ite 1 49 30 2142 +2144 ite 1 2037 2143 9 +2145 ite 1 48 30 2144 +2146 ite 1 50 30 2145 +2147 ite 1 2041 30 2146 +2148 ite 1 2044 2147 37 +2149 ite 1 20 2148 9 +2150 next 1 37 2149 +2151 not 1 40 +2152 and 1 2151 45 +2153 ite 1 2152 30 9 +2154 ite 1 20 2153 9 +2155 next 1 40 2154 +2156 ite 28 1367 1366 42 +2157 ite 28 2096 2156 42 +2158 ite 28 2128 42 2157 +2159 ite 28 2130 42 2158 +2160 ite 28 842 42 2159 +2161 ite 28 2137 2160 42 +2162 ite 28 80 42 2161 +2163 ite 28 20 2162 2089 +2164 next 28 42 2163 +2165 and 1 45 40 +2166 ite 28 2165 1351 43 +2167 ite 28 20 2166 2089 +2168 next 28 43 2167 +2169 uext 28 9 7 +2170 neq 1 51 2169 +2171 ite 1 21 2170 48 +2172 ite 1 48 9 2171 +2173 ite 1 50 2171 2172 +2174 ite 1 2041 2171 2173 +2175 ite 1 2044 2174 2171 +2176 ite 1 20 2175 9 +2177 next 1 48 2176 +2178 ite 1 21 9 49 +2179 ite 1 49 9 2178 +2180 ite 1 2037 2179 2178 +2181 ite 1 48 30 2180 +2182 ite 1 50 2178 2181 +2183 ite 1 2041 2178 2182 +2184 ite 1 2044 2183 2178 +2185 ite 1 20 2184 9 +2186 next 1 49 2185 +2187 ite 1 21 9 50 +2188 ite 1 50 9 2187 +2189 ite 1 2041 2187 2188 +2190 ite 1 2044 2189 2187 +2191 ite 1 20 2190 9 +2192 next 1 50 2191 +2193 ite 28 21 2089 51 +2194 ite 28 20 2193 2089 +2195 next 28 51 2194 +2196 const 53 00000111010110111100110100010101 +2197 const 548 0000000000000 +2198 slice 560 54 18 0 +2199 concat 53 2198 2197 +2200 xor 53 54 2199 +2201 slice 552 2200 31 17 +2202 uext 53 2201 17 +2203 xor 53 2200 2202 +2204 const 57 00000 +2205 slice 576 2203 26 0 +2206 concat 53 2205 2204 +2207 xor 53 2203 2206 +2208 ite 53 2037 2207 54 +2209 ite 53 48 54 2208 +2210 ite 53 50 54 2209 +2211 ite 53 2041 54 2210 +2212 ite 53 2044 2211 54 +2213 ite 53 20 2212 2196 +2214 next 53 54 2213 +2215 uext 55 30 11 +2216 add 55 56 2215 +2217 ite 55 2037 2216 56 +2218 ite 55 48 56 2217 +2219 ite 55 50 56 2218 +2220 const 55 000000000001 +2221 ite 55 2041 2220 2219 +2222 ite 55 2044 2221 56 +2223 ite 55 20 2222 56 +2224 next 55 56 2223 +2225 const 57 00001 +2226 redor 1 56 +2227 not 1 2226 +2228 ite 57 2227 2225 58 +2229 ite 57 2037 2228 58 +2230 ite 57 48 58 2229 +2231 ite 57 50 58 2230 +2232 slice 17 58 3 0 +2233 concat 57 2232 9 +2234 ite 57 2041 2233 2231 +2235 ite 57 2044 2234 58 +2236 ite 57 20 2235 2225 +2237 next 57 58 2236 +2238 ite 1 1073 1072 63 +2239 ite 1 20 2238 9 +2240 next 1 63 2239 +2241 next 1 66 3 +2242 ite 1 1073 1071 69 +2243 ite 1 20 2242 69 +2244 next 1 69 2243 +2245 ite 53 84 586 71 +2246 const 53 11111111111111111111111111111111 +2247 ite 53 590 2246 2245 +2248 next 53 71 2247 +2249 not 1 75 +2250 or 1 2249 77 +2251 ite 1 2250 30 73 +2252 const 17 1011 +2253 eq 1 1347 2252 +2254 eq 1 1347 2098 +2255 eq 1 1347 2100 +2256 eq 1 1347 2102 +2257 concat 258 2254 2253 +2258 concat 260 2255 2257 +2259 concat 17 2256 2258 +2260 redor 1 2259 +2261 ite 1 2260 2251 73 +2262 uext 25 9 8 +2263 eq 1 2262 1362 +2264 neq 1 29 1337 +2265 uext 266 2102 3 +2266 ult 1 1348 2265 +2267 and 1 2264 2266 +2268 ite 1 2267 73 2263 +2269 ite 1 2250 2268 73 +2270 const 260 101 +2271 uext 17 2270 1 +2272 eq 1 1347 2271 +2273 ite 1 2272 2269 2261 +2274 ite 1 2250 9 73 +2275 redor 1 1347 +2276 not 1 2275 +2277 ite 1 2276 2274 2273 +2278 not 1 1076 +2279 redor 1 1075 +2280 not 1 2279 +2281 and 1 2278 2280 +2282 ite 1 2281 2277 73 +2283 ite 1 80 2282 73 +2284 ite 1 1349 73 2283 +2285 ite 1 20 2284 73 +2286 next 1 73 2285 +2287 ite 1 77 9 75 +2288 ite 1 2250 9 75 +2289 ite 1 2250 30 75 +2290 const 17 1101 +2291 eq 1 1347 2290 +2292 const 17 1100 +2293 eq 1 1347 2292 +2294 const 260 111 +2295 uext 17 2294 1 +2296 eq 1 1347 2295 +2297 uext 17 2104 1 +2298 eq 1 1347 2297 +2299 uext 17 2107 1 +2300 eq 1 1347 2299 +2301 uext 17 2110 2 +2302 eq 1 1347 2301 +2303 uext 17 2113 2 +2304 eq 1 1347 2303 +2305 uext 17 30 3 +2306 eq 1 1347 2305 +2307 concat 258 2293 2291 +2308 concat 260 2253 2307 +2309 concat 17 2254 2308 +2310 concat 57 2255 2309 +2311 concat 264 2256 2310 +2312 concat 266 2296 2311 +2313 concat 28 2298 2312 +2314 concat 25 2272 2313 +2315 concat 87 2300 2314 +2316 concat 545 2302 2315 +2317 concat 55 2304 2316 +2318 concat 548 2306 2317 +2319 concat 550 2276 2318 +2320 redor 1 2319 +2321 ite 1 2320 2289 2288 +2322 ite 1 2281 2321 2287 +2323 ite 1 80 2322 9 +2324 const 57 10000 +2325 uext 266 2324 2 +2326 ult 1 1348 2325 +2327 ite 1 2326 30 9 +2328 and 1 2250 2280 +2329 ite 1 2328 2327 75 +2330 ite 1 1349 2329 2323 +2331 ite 1 20 2330 9 +2332 next 1 75 2331 +2333 slice 87 855 14 5 +2334 redor 1 2333 +2335 not 1 2334 +2336 and 1 2335 75 +2337 ite 1 2336 75 9 +2338 ite 1 20 2337 9 +2339 next 1 77 2338 +2340 ite 1 1076 9 80 +2341 ite 1 1077 30 2340 +2342 ite 1 20 2341 9 +2343 next 1 80 2342 +2344 slice 25 88 9 1 +2345 concat 87 66 2344 +2346 uext 17 30 3 +2347 eq 1 594 2346 +2348 ite 87 2347 2345 88 +2349 slice 25 2348 9 1 +2350 concat 87 66 2349 +2351 uext 17 2110 2 +2352 eq 1 594 2351 +2353 ite 87 2352 2350 2348 +2354 slice 25 2353 9 1 +2355 concat 87 66 2354 +2356 uext 17 2270 1 +2357 eq 1 594 2356 +2358 ite 87 2357 2355 2353 +2359 slice 25 2358 9 1 +2360 concat 87 66 2359 +2361 uext 17 2294 1 +2362 eq 1 594 2361 +2363 ite 87 2362 2360 2358 +2364 eq 1 66 847 +2365 ite 87 2364 2363 2345 +2366 uext 87 743 3 +2367 eq 1 2365 2366 +2368 uext 17 30 3 +2369 add 17 596 2368 +2370 ite 17 2347 2369 596 +2371 uext 17 30 3 +2372 add 17 2370 2371 +2373 ite 17 2352 2372 2370 +2374 uext 17 30 3 +2375 add 17 2373 2374 +2376 ite 17 2357 2375 2373 +2377 uext 17 30 3 +2378 add 17 2376 2377 +2379 ite 17 2362 2378 2376 +2380 ite 17 2364 2379 2369 +2381 eq 1 2380 2098 +2382 or 1 2367 2381 +2383 ite 1 2382 2136 9 +2384 next 1 82 2383 +2385 ite 25 2250 1011 86 +2386 ite 25 2291 2385 86 +2387 slice 28 71 31 24 +2388 concat 25 9 2387 +2389 ite 25 2250 2388 86 +2390 ite 25 2293 2389 2386 +2391 slice 28 71 23 16 +2392 concat 25 9 2391 +2393 ite 25 2250 2392 86 +2394 ite 25 2253 2393 2390 +2395 slice 28 71 15 8 +2396 concat 25 9 2395 +2397 ite 25 2250 2396 86 +2398 ite 25 2254 2397 2394 +2399 slice 28 71 7 0 +2400 concat 25 9 2399 +2401 ite 25 2250 2400 86 +2402 ite 25 2255 2401 2398 +2403 const 25 110111100 +2404 ite 25 2250 2403 86 +2405 ite 25 2256 2404 2402 +2406 ite 25 2250 1009 86 +2407 ite 25 2296 2406 2405 +2408 const 25 110011100 +2409 ite 25 2250 2408 86 +2410 ite 25 2298 2409 2407 +2411 const 264 111100 +2412 const 264 011100 +2413 uext 25 9 8 +2414 neq 1 2413 1362 +2415 ite 264 2414 2412 2411 +2416 concat 25 2104 2415 +2417 slice 1 1337 0 0 +2418 ite 25 2417 1190 1079 +2419 ite 25 2417 1268 1257 +2420 slice 1 1337 1 1 +2421 ite 25 2420 2419 2418 +2422 ite 25 2417 1290 1279 +2423 ite 25 2417 1312 1301 +2424 ite 25 2420 2423 2422 +2425 slice 1 1337 2 2 +2426 ite 25 2425 2424 2421 +2427 ite 25 2417 1334 1323 +2428 ite 25 2417 1101 1090 +2429 ite 25 2420 2428 2427 +2430 ite 25 2417 1123 1112 +2431 ite 25 2417 1145 1134 +2432 ite 25 2420 2431 2430 +2433 ite 25 2425 2432 2429 +2434 slice 1 1337 3 3 +2435 ite 25 2434 2433 2426 +2436 ite 25 2417 1167 1156 +2437 ite 25 2417 1189 1178 +2438 ite 25 2420 2437 2436 +2439 ite 25 2417 1212 1201 +2440 ite 25 2417 1234 1223 +2441 ite 25 2420 2440 2439 +2442 ite 25 2425 2441 2438 +2443 ite 25 2417 1252 1245 +2444 ite 25 2417 1254 1253 +2445 ite 25 2420 2444 2443 +2446 ite 25 2417 1256 1255 +2447 ite 25 2417 1259 1258 +2448 ite 25 2420 2447 2446 +2449 ite 25 2425 2448 2445 +2450 ite 25 2434 2449 2442 +2451 slice 1 1337 4 4 +2452 ite 25 2451 2450 2435 +2453 ite 25 2417 1261 1260 +2454 ite 25 2417 1263 1262 +2455 ite 25 2420 2454 2453 +2456 ite 25 2417 1265 1264 +2457 ite 25 2417 1267 1266 +2458 ite 25 2420 2457 2456 +2459 ite 25 2425 2458 2455 +2460 ite 25 2417 1270 1269 +2461 ite 25 2417 1272 1271 +2462 ite 25 2420 2461 2460 +2463 ite 25 2417 1274 1273 +2464 ite 25 2417 1276 1275 +2465 ite 25 2420 2464 2463 +2466 ite 25 2425 2465 2462 +2467 ite 25 2434 2466 2459 +2468 ite 25 2417 1278 1277 +2469 ite 25 2417 1281 1280 +2470 ite 25 2420 2469 2468 +2471 ite 25 2417 1283 1282 +2472 ite 25 2417 1285 1284 +2473 ite 25 2420 2472 2471 +2474 ite 25 2425 2473 2470 +2475 ite 25 2417 1287 1286 +2476 ite 25 2417 1289 1288 +2477 ite 25 2420 2476 2475 +2478 ite 25 2417 1292 1291 +2479 ite 25 2417 1294 1293 +2480 ite 25 2420 2479 2478 +2481 ite 25 2425 2480 2477 +2482 ite 25 2434 2481 2474 +2483 ite 25 2451 2482 2467 +2484 slice 1 1337 5 5 +2485 ite 25 2484 2483 2452 +2486 ite 25 2417 1296 1295 +2487 ite 25 2417 1298 1297 +2488 ite 25 2420 2487 2486 +2489 ite 25 2417 1300 1299 +2490 ite 25 2417 1303 1302 +2491 ite 25 2420 2490 2489 +2492 ite 25 2425 2491 2488 +2493 ite 25 2417 1305 1304 +2494 ite 25 2417 1307 1306 +2495 ite 25 2420 2494 2493 +2496 ite 25 2417 1309 1308 +2497 ite 25 2417 1311 1310 +2498 ite 25 2420 2497 2496 +2499 ite 25 2425 2498 2495 +2500 ite 25 2434 2499 2492 +2501 ite 25 2417 1314 1313 +2502 ite 25 2417 1316 1315 +2503 ite 25 2420 2502 2501 +2504 ite 25 2417 1318 1317 +2505 ite 25 2417 1320 1319 +2506 ite 25 2420 2505 2504 +2507 ite 25 2425 2506 2503 +2508 ite 25 2417 1322 1321 +2509 ite 25 2417 1325 1324 +2510 ite 25 2420 2509 2508 +2511 ite 25 2417 1327 1326 +2512 ite 25 2417 1329 1328 +2513 ite 25 2420 2512 2511 +2514 ite 25 2425 2513 2510 +2515 ite 25 2434 2514 2507 +2516 ite 25 2451 2515 2500 +2517 ite 25 2417 1331 1330 +2518 ite 25 2417 1333 1332 +2519 ite 25 2420 2518 2517 +2520 ite 25 2417 1081 1080 +2521 ite 25 2417 1083 1082 +2522 ite 25 2420 2521 2520 +2523 ite 25 2425 2522 2519 +2524 ite 25 2417 1085 1084 +2525 ite 25 2417 1087 1086 +2526 ite 25 2420 2525 2524 +2527 ite 25 2417 1089 1088 +2528 ite 25 2417 1092 1091 +2529 ite 25 2420 2528 2527 +2530 ite 25 2425 2529 2526 +2531 ite 25 2434 2530 2523 +2532 ite 25 2417 1094 1093 +2533 ite 25 2417 1096 1095 +2534 ite 25 2420 2533 2532 +2535 ite 25 2417 1098 1097 +2536 ite 25 2417 1100 1099 +2537 ite 25 2420 2536 2535 +2538 ite 25 2425 2537 2534 +2539 ite 25 2417 1103 1102 +2540 ite 25 2417 1105 1104 +2541 ite 25 2420 2540 2539 +2542 ite 25 2417 1107 1106 +2543 ite 25 2417 1109 1108 +2544 ite 25 2420 2543 2542 +2545 ite 25 2425 2544 2541 +2546 ite 25 2434 2545 2538 +2547 ite 25 2451 2546 2531 +2548 ite 25 2484 2547 2516 +2549 slice 1 1337 6 6 +2550 ite 25 2549 2548 2485 +2551 ite 25 2417 1111 1110 +2552 ite 25 2417 1114 1113 +2553 ite 25 2420 2552 2551 +2554 ite 25 2417 1116 1115 +2555 ite 25 2417 1118 1117 +2556 ite 25 2420 2555 2554 +2557 ite 25 2425 2556 2553 +2558 ite 25 2417 1120 1119 +2559 ite 25 2417 1122 1121 +2560 ite 25 2420 2559 2558 +2561 ite 25 2417 1125 1124 +2562 ite 25 2417 1127 1126 +2563 ite 25 2420 2562 2561 +2564 ite 25 2425 2563 2560 +2565 ite 25 2434 2564 2557 +2566 ite 25 2417 1129 1128 +2567 ite 25 2417 1131 1130 +2568 ite 25 2420 2567 2566 +2569 ite 25 2417 1133 1132 +2570 ite 25 2417 1136 1135 +2571 ite 25 2420 2570 2569 +2572 ite 25 2425 2571 2568 +2573 ite 25 2417 1138 1137 +2574 ite 25 2417 1140 1139 +2575 ite 25 2420 2574 2573 +2576 ite 25 2417 1142 1141 +2577 ite 25 2417 1144 1143 +2578 ite 25 2420 2577 2576 +2579 ite 25 2425 2578 2575 +2580 ite 25 2434 2579 2572 +2581 ite 25 2451 2580 2565 +2582 ite 25 2417 1147 1146 +2583 ite 25 2417 1149 1148 +2584 ite 25 2420 2583 2582 +2585 ite 25 2417 1151 1150 +2586 ite 25 2417 1153 1152 +2587 ite 25 2420 2586 2585 +2588 ite 25 2425 2587 2584 +2589 ite 25 2417 1155 1154 +2590 ite 25 2417 1158 1157 +2591 ite 25 2420 2590 2589 +2592 ite 25 2417 1160 1159 +2593 ite 25 2417 1162 1161 +2594 ite 25 2420 2593 2592 +2595 ite 25 2425 2594 2591 +2596 ite 25 2434 2595 2588 +2597 ite 25 2417 1164 1163 +2598 ite 25 2417 1166 1165 +2599 ite 25 2420 2598 2597 +2600 ite 25 2417 1169 1168 +2601 ite 25 2417 1171 1170 +2602 ite 25 2420 2601 2600 +2603 ite 25 2425 2602 2599 +2604 ite 25 2417 1173 1172 +2605 ite 25 2417 1175 1174 +2606 ite 25 2420 2605 2604 +2607 ite 25 2417 1177 1176 +2608 ite 25 2417 1180 1179 +2609 ite 25 2420 2608 2607 +2610 ite 25 2425 2609 2606 +2611 ite 25 2434 2610 2603 +2612 ite 25 2451 2611 2596 +2613 ite 25 2484 2612 2581 +2614 ite 25 2417 1182 1181 +2615 ite 25 2417 1184 1183 +2616 ite 25 2420 2615 2614 +2617 ite 25 2417 1186 1185 +2618 ite 25 2417 1188 1187 +2619 ite 25 2420 2618 2617 +2620 ite 25 2425 2619 2616 +2621 ite 25 2417 1192 1191 +2622 ite 25 2417 1194 1193 +2623 ite 25 2420 2622 2621 +2624 ite 25 2417 1196 1195 +2625 ite 25 2417 1198 1197 +2626 ite 25 2420 2625 2624 +2627 ite 25 2425 2626 2623 +2628 ite 25 2434 2627 2620 +2629 ite 25 2417 1200 1199 +2630 ite 25 2417 1203 1202 +2631 ite 25 2420 2630 2629 +2632 ite 25 2417 1205 1204 +2633 ite 25 2417 1207 1206 +2634 ite 25 2420 2633 2632 +2635 ite 25 2425 2634 2631 +2636 ite 25 2417 1209 1208 +2637 ite 25 2417 1211 1210 +2638 ite 25 2420 2637 2636 +2639 ite 25 2417 1214 1213 +2640 ite 25 2417 1216 1215 +2641 ite 25 2420 2640 2639 +2642 ite 25 2425 2641 2638 +2643 ite 25 2434 2642 2635 +2644 ite 25 2451 2643 2628 +2645 ite 25 2417 1218 1217 +2646 ite 25 2417 1220 1219 +2647 ite 25 2420 2646 2645 +2648 ite 25 2417 1222 1221 +2649 ite 25 2417 1225 1224 +2650 ite 25 2420 2649 2648 +2651 ite 25 2425 2650 2647 +2652 ite 25 2417 1227 1226 +2653 ite 25 2417 1229 1228 +2654 ite 25 2420 2653 2652 +2655 ite 25 2417 1231 1230 +2656 ite 25 2417 1233 1232 +2657 ite 25 2420 2656 2655 +2658 ite 25 2425 2657 2654 +2659 ite 25 2434 2658 2651 +2660 ite 25 2417 1236 1235 +2661 ite 25 2417 1238 1237 +2662 ite 25 2420 2661 2660 +2663 ite 25 2417 1240 1239 +2664 ite 25 2417 1242 1241 +2665 ite 25 2420 2664 2663 +2666 ite 25 2425 2665 2662 +2667 ite 25 2417 1244 1243 +2668 ite 25 2417 1247 1246 +2669 ite 25 2420 2668 2667 +2670 ite 25 2417 1249 1248 +2671 ite 25 2417 1251 1250 +2672 ite 25 2420 2671 2670 +2673 ite 25 2425 2672 2669 +2674 ite 25 2434 2673 2666 +2675 ite 25 2451 2674 2659 +2676 ite 25 2484 2675 2644 +2677 ite 25 2549 2676 2613 +2678 slice 1 1337 7 7 +2679 ite 25 2678 2677 2550 +2680 ite 25 2267 2679 2416 +2681 ite 25 2250 2680 86 +2682 ite 25 2272 2681 2410 +2683 concat 25 9 33 +2684 ite 25 2250 2683 86 +2685 ite 25 2300 2684 2682 +2686 concat 25 9 42 +2687 ite 25 2250 2686 86 +2688 ite 25 2302 2687 2685 +2689 const 25 001110100 +2690 ite 25 2250 2689 86 +2691 ite 25 2304 2690 2688 +2692 ite 25 2250 588 86 +2693 ite 25 2306 2692 2691 +2694 const 25 010110101 +2695 ite 25 2250 2694 86 +2696 ite 25 2276 2695 2693 +2697 ite 25 2281 2696 86 +2698 ite 25 80 2697 86 +2699 const 258 00 +2700 concat 25 2699 1348 +2701 uext 266 2052 3 +2702 eq 1 1348 2701 +2703 ite 25 2702 1011 2700 +2704 const 25 111111110 +2705 uext 266 2270 4 +2706 eq 1 1348 2705 +2707 uext 266 2107 4 +2708 eq 1 1348 2707 +2709 uext 266 2110 5 +2710 eq 1 1348 2709 +2711 uext 266 2113 5 +2712 eq 1 1348 2711 +2713 concat 258 2708 2706 +2714 concat 260 2710 2713 +2715 concat 17 2712 2714 +2716 redor 1 2715 +2717 ite 25 2716 2704 2703 +2718 uext 266 30 6 +2719 eq 1 1348 2718 +2720 ite 25 2719 588 2717 +2721 redor 1 1348 +2722 not 1 2721 +2723 ite 25 2722 2694 2720 +2724 ite 25 2326 2723 86 +2725 ite 25 2328 2724 86 +2726 ite 25 1349 2725 2698 +2727 ite 25 20 2726 86 +2728 next 25 86 2727 +2729 next 87 88 2365 +2730 uext 17 30 3 +2731 add 17 594 2730 +2732 ite 17 2364 2731 593 +2733 next 17 594 2732 +2734 ite 17 2382 593 2380 +2735 next 17 596 2734 +2736 ite 1 82 803 742 +2737 next 1 742 2736 +2738 uext 17 30 3 +2739 add 17 845 2738 +2740 uext 25 845 5 +2741 eq 1 269 2740 +2742 ite 17 2741 2739 593 +2743 uext 17 2104 1 +2744 ulte 1 2743 845 +2745 ite 17 2744 2742 593 +2746 const 25 111111101 +2747 eq 1 269 2746 +2748 ite 17 2747 2739 593 +2749 uext 17 2113 2 +2750 ulte 1 2749 845 +2751 uext 17 2104 1 +2752 ult 1 845 2751 +2753 and 1 2750 2752 +2754 ite 17 2753 2748 2745 +2755 const 17 0010 +2756 ite 17 2130 2755 2754 +2757 ite 17 842 593 2756 +2758 ite 17 82 2757 845 +2759 ite 17 63 593 2758 +2760 eq 1 845 2052 +2761 ite 17 2760 593 2759 +2762 next 17 845 2761 +2763 ite 1 2760 30 9 +2764 next 1 846 2763 +2765 next 1 847 66 +2766 slice 87 854 14 5 +2767 ite 87 2336 1013 2766 +2768 slice 57 854 4 0 +2769 concat 552 2767 2768 +2770 slice 17 854 4 1 +2771 concat 550 2767 2770 +2772 concat 552 9 2771 +2773 ite 552 1073 2772 2769 +2774 ite 552 20 2773 854 +2775 next 552 854 2774 +2776 const 552 000000000000000 +2777 concat 258 75 75 +2778 concat 260 75 2777 +2779 concat 17 75 2778 +2780 concat 57 75 2779 +2781 concat 264 75 2780 +2782 concat 266 75 2781 +2783 concat 28 75 2782 +2784 concat 25 75 2783 +2785 concat 87 75 2784 +2786 ite 87 2336 2785 2333 +2787 slice 57 855 4 0 +2788 concat 552 2786 2787 +2789 slice 17 855 4 1 +2790 concat 550 2786 2789 +2791 concat 552 9 2790 +2792 ite 552 1073 2791 2788 +2793 ite 552 20 2792 2776 +2794 next 552 855 2793 +2795 eq 1 1065 2107 +2796 uext 260 2110 1 +2797 eq 1 1065 2796 +2798 uext 260 2113 1 +2799 eq 1 1065 2798 +2800 uext 260 30 2 +2801 eq 1 1065 2800 +2802 concat 258 2797 2795 +2803 concat 260 2799 2802 +2804 concat 17 2801 2803 +2805 redor 1 2804 +2806 ite 260 2805 858 857 +2807 not 1 1072 +2808 neq 1 1062 1071 +2809 or 1 2807 2808 +2810 eq 1 1065 2270 +2811 or 1 2809 2810 +2812 ite 260 2811 857 2806 +2813 ite 260 1073 2812 858 +2814 uext 260 30 2 +2815 add 260 2813 2814 +2816 ite 260 20 2815 857 +2817 next 260 858 2816 +2818 ite 1 2336 1018 901 +2819 ite 1 20 2818 9 +2820 next 1 901 2819 +2821 slice 1 1013 9 9 +2822 next 1 1007 2821 +2823 ite 1 1073 1071 1062 +2824 ite 1 20 2823 9 +2825 next 1 1062 2824 +2826 ite 260 2795 2270 1064 +2827 ite 260 2797 2107 2826 +2828 const 260 011 +2829 ite 260 2799 2828 2827 +2830 const 260 010 +2831 ite 260 2801 2830 2829 +2832 ite 260 2811 1064 2831 +2833 ite 260 1073 2832 1065 +2834 ite 260 20 2833 1064 +2835 next 260 1065 2834 +2836 slice 1 2773 0 0 +2837 ite 1 20 2836 1071 +2838 next 1 1071 2837 +2839 slice 1 2792 0 0 +2840 ite 1 20 2839 9 +2841 next 1 1072 2840 +2842 eq 1 2833 2815 +2843 ite 1 2842 30 9 +2844 ite 1 20 2843 9 +2845 next 1 1073 2844 +2846 uext 260 30 2 +2847 sub 260 1074 2846 +2848 redor 1 1074 +2849 ite 260 2848 2847 1074 +2850 ite 260 1076 2294 2849 +2851 ite 260 1077 2849 2850 +2852 ite 260 20 2851 2294 +2853 next 260 1074 2852 +2854 const 57 11111 +2855 uext 57 30 4 +2856 sub 57 1075 2855 +2857 redor 1 1075 +2858 ite 57 2857 2856 1075 +2859 ite 57 1077 2854 2858 +2860 ite 57 20 2859 2854 +2861 next 57 1075 2860 +2862 ite 1 63 9 30 +2863 ite 1 2250 2862 9 +2864 ite 1 2320 9 2863 +2865 ite 1 2281 2864 9 +2866 ite 1 80 2865 9 +2867 ite 1 2326 9 30 +2868 ite 1 2328 2867 9 +2869 ite 1 1349 2868 2866 +2870 ite 1 20 2869 9 +2871 next 1 1076 2870 +2872 ite 1 2128 846 30 +2873 ite 1 2130 846 2872 +2874 ite 1 842 846 2873 +2875 ite 1 2137 2874 846 +2876 ite 1 80 846 2875 +2877 ite 1 20 2876 846 +2878 next 1 1077 2877 +2879 eq 1 269 2403 +2880 ite 53 2879 71 1078 +2881 ite 53 2106 2880 1078 +2882 eq 1 269 2408 +2883 ite 53 2882 1078 2880 +2884 ite 53 2109 2883 2881 +2885 ite 53 2130 1078 2884 +2886 ite 53 842 1078 2885 +2887 ite 53 2137 2886 1078 +2888 ite 53 80 1078 2887 +2889 ite 53 20 2888 1078 +2890 next 53 1078 2889 +2891 slice 1 29 0 0 +2892 not 1 2891 +2893 slice 1 29 1 1 +2894 not 1 2893 +2895 and 1 2892 2894 +2896 slice 1 29 2 2 +2897 not 1 2896 +2898 slice 1 29 3 3 +2899 not 1 2898 +2900 and 1 2897 2899 +2901 and 1 2895 2900 +2902 slice 1 29 4 4 +2903 not 1 2902 +2904 slice 1 29 5 5 +2905 not 1 2904 +2906 and 1 2903 2905 +2907 slice 1 29 6 6 +2908 not 1 2907 +2909 slice 1 29 7 7 +2910 not 1 2909 +2911 and 1 2908 2910 +2912 and 1 2906 2911 +2913 and 1 2901 2912 +2914 ite 1 2090 30 9 +2915 ite 1 20 2914 9 +2916 and 1 2913 2915 +2917 ite 25 2916 26 1079 +2918 next 25 1079 2917 +2919 and 1 2896 2899 +2920 and 1 2895 2919 +2921 and 1 2903 2904 +2922 and 1 2907 2910 +2923 and 1 2921 2922 +2924 and 1 2920 2923 +2925 and 1 2924 2915 +2926 ite 25 2925 26 1080 +2927 next 25 1080 2926 +2928 and 1 2891 2894 +2929 and 1 2928 2919 +2930 and 1 2929 2923 +2931 and 1 2930 2915 +2932 ite 25 2931 26 1081 +2933 next 25 1081 2932 +2934 and 1 2892 2893 +2935 and 1 2934 2919 +2936 and 1 2935 2923 +2937 and 1 2936 2915 +2938 ite 25 2937 26 1082 +2939 next 25 1082 2938 +2940 and 1 2891 2893 +2941 and 1 2940 2919 +2942 and 1 2941 2923 +2943 and 1 2942 2915 +2944 ite 25 2943 26 1083 +2945 next 25 1083 2944 +2946 and 1 2897 2898 +2947 and 1 2895 2946 +2948 and 1 2947 2923 +2949 and 1 2948 2915 +2950 ite 25 2949 26 1084 +2951 next 25 1084 2950 +2952 and 1 2928 2946 +2953 and 1 2952 2923 +2954 and 1 2953 2915 +2955 ite 25 2954 26 1085 +2956 next 25 1085 2955 +2957 and 1 2934 2946 +2958 and 1 2957 2923 +2959 and 1 2958 2915 +2960 ite 25 2959 26 1086 +2961 next 25 1086 2960 +2962 and 1 2940 2946 +2963 and 1 2962 2923 +2964 and 1 2963 2915 +2965 ite 25 2964 26 1087 +2966 next 25 1087 2965 +2967 and 1 2896 2898 +2968 and 1 2895 2967 +2969 and 1 2968 2923 +2970 and 1 2969 2915 +2971 ite 25 2970 26 1088 +2972 next 25 1088 2971 +2973 and 1 2928 2967 +2974 and 1 2973 2923 +2975 and 1 2974 2915 +2976 ite 25 2975 26 1089 +2977 next 25 1089 2976 +2978 and 1 2957 2912 +2979 and 1 2978 2915 +2980 ite 25 2979 26 1090 +2981 next 25 1090 2980 +2982 and 1 2934 2967 +2983 and 1 2982 2923 +2984 and 1 2983 2915 +2985 ite 25 2984 26 1091 +2986 next 25 1091 2985 +2987 and 1 2940 2967 +2988 and 1 2987 2923 +2989 and 1 2988 2915 +2990 ite 25 2989 26 1092 +2991 next 25 1092 2990 +2992 and 1 2902 2904 +2993 and 1 2992 2922 +2994 and 1 2901 2993 +2995 and 1 2994 2915 +2996 ite 25 2995 26 1093 +2997 next 25 1093 2996 +2998 and 1 2928 2900 +2999 and 1 2998 2993 +3000 and 1 2999 2915 +3001 ite 25 3000 26 1094 +3002 next 25 1094 3001 +3003 and 1 2934 2900 +3004 and 1 3003 2993 +3005 and 1 3004 2915 +3006 ite 25 3005 26 1095 +3007 next 25 1095 3006 +3008 and 1 2940 2900 +3009 and 1 3008 2993 +3010 and 1 3009 2915 +3011 ite 25 3010 26 1096 +3012 next 25 1096 3011 +3013 and 1 2920 2993 +3014 and 1 3013 2915 +3015 ite 25 3014 26 1097 +3016 next 25 1097 3015 +3017 and 1 2929 2993 +3018 and 1 3017 2915 +3019 ite 25 3018 26 1098 +3020 next 25 1098 3019 +3021 and 1 2935 2993 +3022 and 1 3021 2915 +3023 ite 25 3022 26 1099 +3024 next 25 1099 3023 +3025 and 1 2941 2993 +3026 and 1 3025 2915 +3027 ite 25 3026 26 1100 +3028 next 25 1100 3027 +3029 and 1 2962 2912 +3030 and 1 3029 2915 +3031 ite 25 3030 26 1101 +3032 next 25 1101 3031 +3033 and 1 2947 2993 +3034 and 1 3033 2915 +3035 ite 25 3034 26 1102 +3036 next 25 1102 3035 +3037 and 1 2952 2993 +3038 and 1 3037 2915 +3039 ite 25 3038 26 1103 +3040 next 25 1103 3039 +3041 and 1 2957 2993 +3042 and 1 3041 2915 +3043 ite 25 3042 26 1104 +3044 next 25 1104 3043 +3045 and 1 2962 2993 +3046 and 1 3045 2915 +3047 ite 25 3046 26 1105 +3048 next 25 1105 3047 +3049 and 1 2968 2993 +3050 and 1 3049 2915 +3051 ite 25 3050 26 1106 +3052 next 25 1106 3051 +3053 and 1 2973 2993 +3054 and 1 3053 2915 +3055 ite 25 3054 26 1107 +3056 next 25 1107 3055 +3057 and 1 2982 2993 +3058 and 1 3057 2915 +3059 ite 25 3058 26 1108 +3060 next 25 1108 3059 +3061 and 1 2987 2993 +3062 and 1 3061 2915 +3063 ite 25 3062 26 1109 +3064 next 25 1109 3063 +3065 and 1 2908 2909 +3066 and 1 2906 3065 +3067 and 1 2901 3066 +3068 and 1 3067 2915 +3069 ite 25 3068 26 1110 +3070 next 25 1110 3069 +3071 and 1 2998 3066 +3072 and 1 3071 2915 +3073 ite 25 3072 26 1111 +3074 next 25 1111 3073 +3075 and 1 2968 2912 +3076 and 1 3075 2915 +3077 ite 25 3076 26 1112 +3078 next 25 1112 3077 +3079 and 1 3003 3066 +3080 and 1 3079 2915 +3081 ite 25 3080 26 1113 +3082 next 25 1113 3081 +3083 and 1 3008 3066 +3084 and 1 3083 2915 +3085 ite 25 3084 26 1114 +3086 next 25 1114 3085 +3087 and 1 2920 3066 +3088 and 1 3087 2915 +3089 ite 25 3088 26 1115 +3090 next 25 1115 3089 +3091 and 1 2929 3066 +3092 and 1 3091 2915 +3093 ite 25 3092 26 1116 +3094 next 25 1116 3093 +3095 and 1 2935 3066 +3096 and 1 3095 2915 +3097 ite 25 3096 26 1117 +3098 next 25 1117 3097 +3099 and 1 2941 3066 +3100 and 1 3099 2915 +3101 ite 25 3100 26 1118 +3102 next 25 1118 3101 +3103 and 1 2947 3066 +3104 and 1 3103 2915 +3105 ite 25 3104 26 1119 +3106 next 25 1119 3105 +3107 and 1 2952 3066 +3108 and 1 3107 2915 +3109 ite 25 3108 26 1120 +3110 next 25 1120 3109 +3111 and 1 2957 3066 +3112 and 1 3111 2915 +3113 ite 25 3112 26 1121 +3114 next 25 1121 3113 +3115 and 1 2962 3066 +3116 and 1 3115 2915 +3117 ite 25 3116 26 1122 +3118 next 25 1122 3117 +3119 and 1 2973 2912 +3120 and 1 3119 2915 +3121 ite 25 3120 26 1123 +3122 next 25 1123 3121 +3123 and 1 2968 3066 +3124 and 1 3123 2915 +3125 ite 25 3124 26 1124 +3126 next 25 1124 3125 +3127 and 1 2973 3066 +3128 and 1 3127 2915 +3129 ite 25 3128 26 1125 +3130 next 25 1125 3129 +3131 and 1 2982 3066 +3132 and 1 3131 2915 +3133 ite 25 3132 26 1126 +3134 next 25 1126 3133 +3135 and 1 2987 3066 +3136 and 1 3135 2915 +3137 ite 25 3136 26 1127 +3138 next 25 1127 3137 +3139 and 1 2902 2905 +3140 and 1 3139 3065 +3141 and 1 2901 3140 +3142 and 1 3141 2915 +3143 ite 25 3142 26 1128 +3144 next 25 1128 3143 +3145 and 1 2998 3140 +3146 and 1 3145 2915 +3147 ite 25 3146 26 1129 +3148 next 25 1129 3147 +3149 and 1 3003 3140 +3150 and 1 3149 2915 +3151 ite 25 3150 26 1130 +3152 next 25 1130 3151 +3153 and 1 3008 3140 +3154 and 1 3153 2915 +3155 ite 25 3154 26 1131 +3156 next 25 1131 3155 +3157 and 1 2920 3140 +3158 and 1 3157 2915 +3159 ite 25 3158 26 1132 +3160 next 25 1132 3159 +3161 and 1 2929 3140 +3162 and 1 3161 2915 +3163 ite 25 3162 26 1133 +3164 next 25 1133 3163 +3165 and 1 2982 2912 +3166 and 1 3165 2915 +3167 ite 25 3166 26 1134 +3168 next 25 1134 3167 +3169 and 1 2935 3140 +3170 and 1 3169 2915 +3171 ite 25 3170 26 1135 +3172 next 25 1135 3171 +3173 and 1 2941 3140 +3174 and 1 3173 2915 +3175 ite 25 3174 26 1136 +3176 next 25 1136 3175 +3177 and 1 2947 3140 +3178 and 1 3177 2915 +3179 ite 25 3178 26 1137 +3180 next 25 1137 3179 +3181 and 1 2952 3140 +3182 and 1 3181 2915 +3183 ite 25 3182 26 1138 +3184 next 25 1138 3183 +3185 and 1 2957 3140 +3186 and 1 3185 2915 +3187 ite 25 3186 26 1139 +3188 next 25 1139 3187 +3189 and 1 2962 3140 +3190 and 1 3189 2915 +3191 ite 25 3190 26 1140 +3192 next 25 1140 3191 +3193 and 1 2968 3140 +3194 and 1 3193 2915 +3195 ite 25 3194 26 1141 +3196 next 25 1141 3195 +3197 and 1 2973 3140 +3198 and 1 3197 2915 +3199 ite 25 3198 26 1142 +3200 next 25 1142 3199 +3201 and 1 2982 3140 +3202 and 1 3201 2915 +3203 ite 25 3202 26 1143 +3204 next 25 1143 3203 +3205 and 1 2987 3140 +3206 and 1 3205 2915 +3207 ite 25 3206 26 1144 +3208 next 25 1144 3207 +3209 and 1 2987 2912 +3210 and 1 3209 2915 +3211 ite 25 3210 26 1145 +3212 next 25 1145 3211 +3213 and 1 2921 3065 +3214 and 1 2901 3213 +3215 and 1 3214 2915 +3216 ite 25 3215 26 1146 +3217 next 25 1146 3216 +3218 and 1 2998 3213 +3219 and 1 3218 2915 +3220 ite 25 3219 26 1147 +3221 next 25 1147 3220 +3222 and 1 3003 3213 +3223 and 1 3222 2915 +3224 ite 25 3223 26 1148 +3225 next 25 1148 3224 +3226 and 1 3008 3213 +3227 and 1 3226 2915 +3228 ite 25 3227 26 1149 +3229 next 25 1149 3228 +3230 and 1 2920 3213 +3231 and 1 3230 2915 +3232 ite 25 3231 26 1150 +3233 next 25 1150 3232 +3234 and 1 2929 3213 +3235 and 1 3234 2915 +3236 ite 25 3235 26 1151 +3237 next 25 1151 3236 +3238 and 1 2935 3213 +3239 and 1 3238 2915 +3240 ite 25 3239 26 1152 +3241 next 25 1152 3240 +3242 and 1 2941 3213 +3243 and 1 3242 2915 +3244 ite 25 3243 26 1153 +3245 next 25 1153 3244 +3246 and 1 2947 3213 +3247 and 1 3246 2915 +3248 ite 25 3247 26 1154 +3249 next 25 1154 3248 +3250 and 1 2952 3213 +3251 and 1 3250 2915 +3252 ite 25 3251 26 1155 +3253 next 25 1155 3252 +3254 and 1 3139 2911 +3255 and 1 2901 3254 +3256 and 1 3255 2915 +3257 ite 25 3256 26 1156 +3258 next 25 1156 3257 +3259 and 1 2957 3213 +3260 and 1 3259 2915 +3261 ite 25 3260 26 1157 +3262 next 25 1157 3261 +3263 and 1 2962 3213 +3264 and 1 3263 2915 +3265 ite 25 3264 26 1158 +3266 next 25 1158 3265 +3267 and 1 2968 3213 +3268 and 1 3267 2915 +3269 ite 25 3268 26 1159 +3270 next 25 1159 3269 +3271 and 1 2973 3213 +3272 and 1 3271 2915 +3273 ite 25 3272 26 1160 +3274 next 25 1160 3273 +3275 and 1 2982 3213 +3276 and 1 3275 2915 +3277 ite 25 3276 26 1161 +3278 next 25 1161 3277 +3279 and 1 2987 3213 +3280 and 1 3279 2915 +3281 ite 25 3280 26 1162 +3282 next 25 1162 3281 +3283 and 1 2992 3065 +3284 and 1 2901 3283 +3285 and 1 3284 2915 +3286 ite 25 3285 26 1163 +3287 next 25 1163 3286 +3288 and 1 2998 3283 +3289 and 1 3288 2915 +3290 ite 25 3289 26 1164 +3291 next 25 1164 3290 +3292 and 1 3003 3283 +3293 and 1 3292 2915 +3294 ite 25 3293 26 1165 +3295 next 25 1165 3294 +3296 and 1 3008 3283 +3297 and 1 3296 2915 +3298 ite 25 3297 26 1166 +3299 next 25 1166 3298 +3300 and 1 2998 3254 +3301 and 1 3300 2915 +3302 ite 25 3301 26 1167 +3303 next 25 1167 3302 +3304 and 1 2920 3283 +3305 and 1 3304 2915 +3306 ite 25 3305 26 1168 +3307 next 25 1168 3306 +3308 and 1 2929 3283 +3309 and 1 3308 2915 +3310 ite 25 3309 26 1169 +3311 next 25 1169 3310 +3312 and 1 2935 3283 +3313 and 1 3312 2915 +3314 ite 25 3313 26 1170 +3315 next 25 1170 3314 +3316 and 1 2941 3283 +3317 and 1 3316 2915 +3318 ite 25 3317 26 1171 +3319 next 25 1171 3318 +3320 and 1 2947 3283 +3321 and 1 3320 2915 +3322 ite 25 3321 26 1172 +3323 next 25 1172 3322 +3324 and 1 2952 3283 +3325 and 1 3324 2915 +3326 ite 25 3325 26 1173 +3327 next 25 1173 3326 +3328 and 1 2957 3283 +3329 and 1 3328 2915 +3330 ite 25 3329 26 1174 +3331 next 25 1174 3330 +3332 and 1 2962 3283 +3333 and 1 3332 2915 +3334 ite 25 3333 26 1175 +3335 next 25 1175 3334 +3336 and 1 2968 3283 +3337 and 1 3336 2915 +3338 ite 25 3337 26 1176 +3339 next 25 1176 3338 +3340 and 1 2973 3283 +3341 and 1 3340 2915 +3342 ite 25 3341 26 1177 +3343 next 25 1177 3342 +3344 and 1 3003 3254 +3345 and 1 3344 2915 +3346 ite 25 3345 26 1178 +3347 next 25 1178 3346 +3348 and 1 2982 3283 +3349 and 1 3348 2915 +3350 ite 25 3349 26 1179 +3351 next 25 1179 3350 +3352 and 1 2987 3283 +3353 and 1 3352 2915 +3354 ite 25 3353 26 1180 +3355 next 25 1180 3354 +3356 and 1 2907 2909 +3357 and 1 2906 3356 +3358 and 1 2901 3357 +3359 and 1 3358 2915 +3360 ite 25 3359 26 1181 +3361 next 25 1181 3360 +3362 and 1 2998 3357 +3363 and 1 3362 2915 +3364 ite 25 3363 26 1182 +3365 next 25 1182 3364 +3366 and 1 3003 3357 +3367 and 1 3366 2915 +3368 ite 25 3367 26 1183 +3369 next 25 1183 3368 +3370 and 1 3008 3357 +3371 and 1 3370 2915 +3372 ite 25 3371 26 1184 +3373 next 25 1184 3372 +3374 and 1 2920 3357 +3375 and 1 3374 2915 +3376 ite 25 3375 26 1185 +3377 next 25 1185 3376 +3378 and 1 2929 3357 +3379 and 1 3378 2915 +3380 ite 25 3379 26 1186 +3381 next 25 1186 3380 +3382 and 1 2935 3357 +3383 and 1 3382 2915 +3384 ite 25 3383 26 1187 +3385 next 25 1187 3384 +3386 and 1 2941 3357 +3387 and 1 3386 2915 +3388 ite 25 3387 26 1188 +3389 next 25 1188 3388 +3390 and 1 3008 3254 +3391 and 1 3390 2915 +3392 ite 25 3391 26 1189 +3393 next 25 1189 3392 +3394 and 1 2998 2912 +3395 and 1 3394 2915 +3396 ite 25 3395 26 1190 +3397 next 25 1190 3396 +3398 and 1 2947 3357 +3399 and 1 3398 2915 +3400 ite 25 3399 26 1191 +3401 next 25 1191 3400 +3402 and 1 2952 3357 +3403 and 1 3402 2915 +3404 ite 25 3403 26 1192 +3405 next 25 1192 3404 +3406 and 1 2957 3357 +3407 and 1 3406 2915 +3408 ite 25 3407 26 1193 +3409 next 25 1193 3408 +3410 and 1 2962 3357 +3411 and 1 3410 2915 +3412 ite 25 3411 26 1194 +3413 next 25 1194 3412 +3414 and 1 2968 3357 +3415 and 1 3414 2915 +3416 ite 25 3415 26 1195 +3417 next 25 1195 3416 +3418 and 1 2973 3357 +3419 and 1 3418 2915 +3420 ite 25 3419 26 1196 +3421 next 25 1196 3420 +3422 and 1 2982 3357 +3423 and 1 3422 2915 +3424 ite 25 3423 26 1197 +3425 next 25 1197 3424 +3426 and 1 2987 3357 +3427 and 1 3426 2915 +3428 ite 25 3427 26 1198 +3429 next 25 1198 3428 +3430 and 1 3139 3356 +3431 and 1 2901 3430 +3432 and 1 3431 2915 +3433 ite 25 3432 26 1199 +3434 next 25 1199 3433 +3435 and 1 2998 3430 +3436 and 1 3435 2915 +3437 ite 25 3436 26 1200 +3438 next 25 1200 3437 +3439 and 1 2920 3254 +3440 and 1 3439 2915 +3441 ite 25 3440 26 1201 +3442 next 25 1201 3441 +3443 and 1 3003 3430 +3444 and 1 3443 2915 +3445 ite 25 3444 26 1202 +3446 next 25 1202 3445 +3447 and 1 3008 3430 +3448 and 1 3447 2915 +3449 ite 25 3448 26 1203 +3450 next 25 1203 3449 +3451 and 1 2920 3430 +3452 and 1 3451 2915 +3453 ite 25 3452 26 1204 +3454 next 25 1204 3453 +3455 and 1 2929 3430 +3456 and 1 3455 2915 +3457 ite 25 3456 26 1205 +3458 next 25 1205 3457 +3459 and 1 2935 3430 +3460 and 1 3459 2915 +3461 ite 25 3460 26 1206 +3462 next 25 1206 3461 +3463 and 1 2941 3430 +3464 and 1 3463 2915 +3465 ite 25 3464 26 1207 +3466 next 25 1207 3465 +3467 and 1 2947 3430 +3468 and 1 3467 2915 +3469 ite 25 3468 26 1208 +3470 next 25 1208 3469 +3471 and 1 2952 3430 +3472 and 1 3471 2915 +3473 ite 25 3472 26 1209 +3474 next 25 1209 3473 +3475 and 1 2957 3430 +3476 and 1 3475 2915 +3477 ite 25 3476 26 1210 +3478 next 25 1210 3477 +3479 and 1 2962 3430 +3480 and 1 3479 2915 +3481 ite 25 3480 26 1211 +3482 next 25 1211 3481 +3483 and 1 2929 3254 +3484 and 1 3483 2915 +3485 ite 25 3484 26 1212 +3486 next 25 1212 3485 +3487 and 1 2968 3430 +3488 and 1 3487 2915 +3489 ite 25 3488 26 1213 +3490 next 25 1213 3489 +3491 and 1 2973 3430 +3492 and 1 3491 2915 +3493 ite 25 3492 26 1214 +3494 next 25 1214 3493 +3495 and 1 2982 3430 +3496 and 1 3495 2915 +3497 ite 25 3496 26 1215 +3498 next 25 1215 3497 +3499 and 1 2987 3430 +3500 and 1 3499 2915 +3501 ite 25 3500 26 1216 +3502 next 25 1216 3501 +3503 and 1 2921 3356 +3504 and 1 2901 3503 +3505 and 1 3504 2915 +3506 ite 25 3505 26 1217 +3507 next 25 1217 3506 +3508 and 1 2998 3503 +3509 and 1 3508 2915 +3510 ite 25 3509 26 1218 +3511 next 25 1218 3510 +3512 and 1 3003 3503 +3513 and 1 3512 2915 +3514 ite 25 3513 26 1219 +3515 next 25 1219 3514 +3516 and 1 3008 3503 +3517 and 1 3516 2915 +3518 ite 25 3517 26 1220 +3519 next 25 1220 3518 +3520 and 1 2920 3503 +3521 and 1 3520 2915 +3522 ite 25 3521 26 1221 +3523 next 25 1221 3522 +3524 and 1 2929 3503 +3525 and 1 3524 2915 +3526 ite 25 3525 26 1222 +3527 next 25 1222 3526 +3528 and 1 2935 3254 +3529 and 1 3528 2915 +3530 ite 25 3529 26 1223 +3531 next 25 1223 3530 +3532 and 1 2935 3503 +3533 and 1 3532 2915 +3534 ite 25 3533 26 1224 +3535 next 25 1224 3534 +3536 and 1 2941 3503 +3537 and 1 3536 2915 +3538 ite 25 3537 26 1225 +3539 next 25 1225 3538 +3540 and 1 2947 3503 +3541 and 1 3540 2915 +3542 ite 25 3541 26 1226 +3543 next 25 1226 3542 +3544 and 1 2952 3503 +3545 and 1 3544 2915 +3546 ite 25 3545 26 1227 +3547 next 25 1227 3546 +3548 and 1 2957 3503 +3549 and 1 3548 2915 +3550 ite 25 3549 26 1228 +3551 next 25 1228 3550 +3552 and 1 2962 3503 +3553 and 1 3552 2915 +3554 ite 25 3553 26 1229 +3555 next 25 1229 3554 +3556 and 1 2968 3503 +3557 and 1 3556 2915 +3558 ite 25 3557 26 1230 +3559 next 25 1230 3558 +3560 and 1 2973 3503 +3561 and 1 3560 2915 +3562 ite 25 3561 26 1231 +3563 next 25 1231 3562 +3564 and 1 2982 3503 +3565 and 1 3564 2915 +3566 ite 25 3565 26 1232 +3567 next 25 1232 3566 +3568 and 1 2987 3503 +3569 and 1 3568 2915 +3570 ite 25 3569 26 1233 +3571 next 25 1233 3570 +3572 and 1 2941 3254 +3573 and 1 3572 2915 +3574 ite 25 3573 26 1234 +3575 next 25 1234 3574 +3576 and 1 2992 3356 +3577 and 1 2901 3576 +3578 and 1 3577 2915 +3579 ite 25 3578 26 1235 +3580 next 25 1235 3579 +3581 and 1 2998 3576 +3582 and 1 3581 2915 +3583 ite 25 3582 26 1236 +3584 next 25 1236 3583 +3585 and 1 3003 3576 +3586 and 1 3585 2915 +3587 ite 25 3586 26 1237 +3588 next 25 1237 3587 +3589 and 1 3008 3576 +3590 and 1 3589 2915 +3591 ite 25 3590 26 1238 +3592 next 25 1238 3591 +3593 and 1 2920 3576 +3594 and 1 3593 2915 +3595 ite 25 3594 26 1239 +3596 next 25 1239 3595 +3597 and 1 2929 3576 +3598 and 1 3597 2915 +3599 ite 25 3598 26 1240 +3600 next 25 1240 3599 +3601 and 1 2935 3576 +3602 and 1 3601 2915 +3603 ite 25 3602 26 1241 +3604 next 25 1241 3603 +3605 and 1 2941 3576 +3606 and 1 3605 2915 +3607 ite 25 3606 26 1242 +3608 next 25 1242 3607 +3609 and 1 2947 3576 +3610 and 1 3609 2915 +3611 ite 25 3610 26 1243 +3612 next 25 1243 3611 +3613 and 1 2952 3576 +3614 and 1 3613 2915 +3615 ite 25 3614 26 1244 +3616 next 25 1244 3615 +3617 and 1 2947 3254 +3618 and 1 3617 2915 +3619 ite 25 3618 26 1245 +3620 next 25 1245 3619 +3621 and 1 2957 3576 +3622 and 1 3621 2915 +3623 ite 25 3622 26 1246 +3624 next 25 1246 3623 +3625 and 1 2962 3576 +3626 and 1 3625 2915 +3627 ite 25 3626 26 1247 +3628 next 25 1247 3627 +3629 and 1 2968 3576 +3630 and 1 3629 2915 +3631 ite 25 3630 26 1248 +3632 next 25 1248 3631 +3633 and 1 2973 3576 +3634 and 1 3633 2915 +3635 ite 25 3634 26 1249 +3636 next 25 1249 3635 +3637 and 1 2982 3576 +3638 and 1 3637 2915 +3639 ite 25 3638 26 1250 +3640 next 25 1250 3639 +3641 and 1 2987 3576 +3642 and 1 3641 2915 +3643 ite 25 3642 26 1251 +3644 next 25 1251 3643 +3645 and 1 2952 3254 +3646 and 1 3645 2915 +3647 ite 25 3646 26 1252 +3648 next 25 1252 3647 +3649 and 1 2957 3254 +3650 and 1 3649 2915 +3651 ite 25 3650 26 1253 +3652 next 25 1253 3651 +3653 and 1 2962 3254 +3654 and 1 3653 2915 +3655 ite 25 3654 26 1254 +3656 next 25 1254 3655 +3657 and 1 2968 3254 +3658 and 1 3657 2915 +3659 ite 25 3658 26 1255 +3660 next 25 1255 3659 +3661 and 1 2973 3254 +3662 and 1 3661 2915 +3663 ite 25 3662 26 1256 +3664 next 25 1256 3663 +3665 and 1 3003 2912 +3666 and 1 3665 2915 +3667 ite 25 3666 26 1257 +3668 next 25 1257 3667 +3669 and 1 2982 3254 +3670 and 1 3669 2915 +3671 ite 25 3670 26 1258 +3672 next 25 1258 3671 +3673 and 1 2987 3254 +3674 and 1 3673 2915 +3675 ite 25 3674 26 1259 +3676 next 25 1259 3675 +3677 and 1 2921 2911 +3678 and 1 2901 3677 +3679 and 1 3678 2915 +3680 ite 25 3679 26 1260 +3681 next 25 1260 3680 +3682 and 1 2998 3677 +3683 and 1 3682 2915 +3684 ite 25 3683 26 1261 +3685 next 25 1261 3684 +3686 and 1 3003 3677 +3687 and 1 3686 2915 +3688 ite 25 3687 26 1262 +3689 next 25 1262 3688 +3690 and 1 3008 3677 +3691 and 1 3690 2915 +3692 ite 25 3691 26 1263 +3693 next 25 1263 3692 +3694 and 1 2920 3677 +3695 and 1 3694 2915 +3696 ite 25 3695 26 1264 +3697 next 25 1264 3696 +3698 and 1 2929 3677 +3699 and 1 3698 2915 +3700 ite 25 3699 26 1265 +3701 next 25 1265 3700 +3702 and 1 2935 3677 +3703 and 1 3702 2915 +3704 ite 25 3703 26 1266 +3705 next 25 1266 3704 +3706 and 1 2941 3677 +3707 and 1 3706 2915 +3708 ite 25 3707 26 1267 +3709 next 25 1267 3708 +3710 and 1 3008 2912 +3711 and 1 3710 2915 +3712 ite 25 3711 26 1268 +3713 next 25 1268 3712 +3714 and 1 2947 3677 +3715 and 1 3714 2915 +3716 ite 25 3715 26 1269 +3717 next 25 1269 3716 +3718 and 1 2952 3677 +3719 and 1 3718 2915 +3720 ite 25 3719 26 1270 +3721 next 25 1270 3720 +3722 and 1 2957 3677 +3723 and 1 3722 2915 +3724 ite 25 3723 26 1271 +3725 next 25 1271 3724 +3726 and 1 2962 3677 +3727 and 1 3726 2915 +3728 ite 25 3727 26 1272 +3729 next 25 1272 3728 +3730 and 1 2968 3677 +3731 and 1 3730 2915 +3732 ite 25 3731 26 1273 +3733 next 25 1273 3732 +3734 and 1 2973 3677 +3735 and 1 3734 2915 +3736 ite 25 3735 26 1274 +3737 next 25 1274 3736 +3738 and 1 2982 3677 +3739 and 1 3738 2915 +3740 ite 25 3739 26 1275 +3741 next 25 1275 3740 +3742 and 1 2987 3677 +3743 and 1 3742 2915 +3744 ite 25 3743 26 1276 +3745 next 25 1276 3744 +3746 and 1 2992 2911 +3747 and 1 2901 3746 +3748 and 1 3747 2915 +3749 ite 25 3748 26 1277 +3750 next 25 1277 3749 +3751 and 1 2998 3746 +3752 and 1 3751 2915 +3753 ite 25 3752 26 1278 +3754 next 25 1278 3753 +3755 and 1 2920 2912 +3756 and 1 3755 2915 +3757 ite 25 3756 26 1279 +3758 next 25 1279 3757 +3759 and 1 3003 3746 +3760 and 1 3759 2915 +3761 ite 25 3760 26 1280 +3762 next 25 1280 3761 +3763 and 1 3008 3746 +3764 and 1 3763 2915 +3765 ite 25 3764 26 1281 +3766 next 25 1281 3765 +3767 and 1 2920 3746 +3768 and 1 3767 2915 +3769 ite 25 3768 26 1282 +3770 next 25 1282 3769 +3771 and 1 2929 3746 +3772 and 1 3771 2915 +3773 ite 25 3772 26 1283 +3774 next 25 1283 3773 +3775 and 1 2935 3746 +3776 and 1 3775 2915 +3777 ite 25 3776 26 1284 +3778 next 25 1284 3777 +3779 and 1 2941 3746 +3780 and 1 3779 2915 +3781 ite 25 3780 26 1285 +3782 next 25 1285 3781 +3783 and 1 2947 3746 +3784 and 1 3783 2915 +3785 ite 25 3784 26 1286 +3786 next 25 1286 3785 +3787 and 1 2952 3746 +3788 and 1 3787 2915 +3789 ite 25 3788 26 1287 +3790 next 25 1287 3789 +3791 and 1 2957 3746 +3792 and 1 3791 2915 +3793 ite 25 3792 26 1288 +3794 next 25 1288 3793 +3795 and 1 2962 3746 +3796 and 1 3795 2915 +3797 ite 25 3796 26 1289 +3798 next 25 1289 3797 +3799 and 1 2929 2912 +3800 and 1 3799 2915 +3801 ite 25 3800 26 1290 +3802 next 25 1290 3801 +3803 and 1 2968 3746 +3804 and 1 3803 2915 +3805 ite 25 3804 26 1291 +3806 next 25 1291 3805 +3807 and 1 2973 3746 +3808 and 1 3807 2915 +3809 ite 25 3808 26 1292 +3810 next 25 1292 3809 +3811 and 1 2982 3746 +3812 and 1 3811 2915 +3813 ite 25 3812 26 1293 +3814 next 25 1293 3813 +3815 and 1 2987 3746 +3816 and 1 3815 2915 +3817 ite 25 3816 26 1294 +3818 next 25 1294 3817 +3819 and 1 2906 2922 +3820 and 1 2901 3819 +3821 and 1 3820 2915 +3822 ite 25 3821 26 1295 +3823 next 25 1295 3822 +3824 and 1 2998 3819 +3825 and 1 3824 2915 +3826 ite 25 3825 26 1296 +3827 next 25 1296 3826 +3828 and 1 3003 3819 +3829 and 1 3828 2915 +3830 ite 25 3829 26 1297 +3831 next 25 1297 3830 +3832 and 1 3008 3819 +3833 and 1 3832 2915 +3834 ite 25 3833 26 1298 +3835 next 25 1298 3834 +3836 and 1 2920 3819 +3837 and 1 3836 2915 +3838 ite 25 3837 26 1299 +3839 next 25 1299 3838 +3840 and 1 2929 3819 +3841 and 1 3840 2915 +3842 ite 25 3841 26 1300 +3843 next 25 1300 3842 +3844 and 1 2935 2912 +3845 and 1 3844 2915 +3846 ite 25 3845 26 1301 +3847 next 25 1301 3846 +3848 and 1 2935 3819 +3849 and 1 3848 2915 +3850 ite 25 3849 26 1302 +3851 next 25 1302 3850 +3852 and 1 2941 3819 +3853 and 1 3852 2915 +3854 ite 25 3853 26 1303 +3855 next 25 1303 3854 +3856 and 1 2947 3819 +3857 and 1 3856 2915 +3858 ite 25 3857 26 1304 +3859 next 25 1304 3858 +3860 and 1 2952 3819 +3861 and 1 3860 2915 +3862 ite 25 3861 26 1305 +3863 next 25 1305 3862 +3864 and 1 2957 3819 +3865 and 1 3864 2915 +3866 ite 25 3865 26 1306 +3867 next 25 1306 3866 +3868 and 1 2962 3819 +3869 and 1 3868 2915 +3870 ite 25 3869 26 1307 +3871 next 25 1307 3870 +3872 and 1 2968 3819 +3873 and 1 3872 2915 +3874 ite 25 3873 26 1308 +3875 next 25 1308 3874 +3876 and 1 2973 3819 +3877 and 1 3876 2915 +3878 ite 25 3877 26 1309 +3879 next 25 1309 3878 +3880 and 1 2982 3819 +3881 and 1 3880 2915 +3882 ite 25 3881 26 1310 +3883 next 25 1310 3882 +3884 and 1 2987 3819 +3885 and 1 3884 2915 +3886 ite 25 3885 26 1311 +3887 next 25 1311 3886 +3888 and 1 2941 2912 +3889 and 1 3888 2915 +3890 ite 25 3889 26 1312 +3891 next 25 1312 3890 +3892 and 1 3139 2922 +3893 and 1 2901 3892 +3894 and 1 3893 2915 +3895 ite 25 3894 26 1313 +3896 next 25 1313 3895 +3897 and 1 2998 3892 +3898 and 1 3897 2915 +3899 ite 25 3898 26 1314 +3900 next 25 1314 3899 +3901 and 1 3003 3892 +3902 and 1 3901 2915 +3903 ite 25 3902 26 1315 +3904 next 25 1315 3903 +3905 and 1 3008 3892 +3906 and 1 3905 2915 +3907 ite 25 3906 26 1316 +3908 next 25 1316 3907 +3909 and 1 2920 3892 +3910 and 1 3909 2915 +3911 ite 25 3910 26 1317 +3912 next 25 1317 3911 +3913 and 1 2929 3892 +3914 and 1 3913 2915 +3915 ite 25 3914 26 1318 +3916 next 25 1318 3915 +3917 and 1 2935 3892 +3918 and 1 3917 2915 +3919 ite 25 3918 26 1319 +3920 next 25 1319 3919 +3921 and 1 2941 3892 +3922 and 1 3921 2915 +3923 ite 25 3922 26 1320 +3924 next 25 1320 3923 +3925 and 1 2947 3892 +3926 and 1 3925 2915 +3927 ite 25 3926 26 1321 +3928 next 25 1321 3927 +3929 and 1 2952 3892 +3930 and 1 3929 2915 +3931 ite 25 3930 26 1322 +3932 next 25 1322 3931 +3933 and 1 2947 2912 +3934 and 1 3933 2915 +3935 ite 25 3934 26 1323 +3936 next 25 1323 3935 +3937 and 1 2957 3892 +3938 and 1 3937 2915 +3939 ite 25 3938 26 1324 +3940 next 25 1324 3939 +3941 and 1 2962 3892 +3942 and 1 3941 2915 +3943 ite 25 3942 26 1325 +3944 next 25 1325 3943 +3945 and 1 2968 3892 +3946 and 1 3945 2915 +3947 ite 25 3946 26 1326 +3948 next 25 1326 3947 +3949 and 1 2973 3892 +3950 and 1 3949 2915 +3951 ite 25 3950 26 1327 +3952 next 25 1327 3951 +3953 and 1 2982 3892 +3954 and 1 3953 2915 +3955 ite 25 3954 26 1328 +3956 next 25 1328 3955 +3957 and 1 2987 3892 +3958 and 1 3957 2915 +3959 ite 25 3958 26 1329 +3960 next 25 1329 3959 +3961 and 1 2901 2923 +3962 and 1 3961 2915 +3963 ite 25 3962 26 1330 +3964 next 25 1330 3963 +3965 and 1 2998 2923 +3966 and 1 3965 2915 +3967 ite 25 3966 26 1331 +3968 next 25 1331 3967 +3969 and 1 3003 2923 +3970 and 1 3969 2915 +3971 ite 25 3970 26 1332 +3972 next 25 1332 3971 +3973 and 1 3008 2923 +3974 and 1 3973 2915 +3975 ite 25 3974 26 1333 +3976 next 25 1333 3975 +3977 and 1 2952 2912 +3978 and 1 3977 2915 +3979 ite 25 3978 26 1334 +3980 next 25 1334 3979 +3981 ite 28 2267 1339 1337 +3982 ite 28 78 3981 1337 +3983 ite 28 2272 3982 1337 +3984 ite 28 2250 33 1337 +3985 ite 28 2300 3984 3983 +3986 ite 28 2281 3985 1337 +3987 ite 28 80 3986 1337 +3988 ite 28 1349 1337 3987 +3989 ite 28 20 3988 2089 +3990 next 28 1337 3989 +3991 slice 28 1078 23 16 +3992 uext 25 3991 1 +3993 eq 1 269 3992 +3994 ite 17 3993 2252 593 +3995 ite 17 2099 3994 593 +3996 slice 28 1078 15 8 +3997 uext 25 3996 1 +3998 eq 1 269 3997 +3999 ite 17 3998 2098 593 +4000 ite 17 2101 3999 3995 +4001 slice 28 1078 7 0 +4002 uext 25 4001 1 +4003 eq 1 269 4002 +4004 ite 17 4003 2100 593 +4005 ite 17 2103 4004 4000 +4006 ite 17 257 593 1344 +4007 ite 17 2879 2102 4006 +4008 ite 17 2106 4007 4005 +4009 neq 1 269 2082 +4010 and 1 257 4009 +4011 neq 1 269 2066 +4012 and 1 4010 4011 +4013 neq 1 269 2068 +4014 and 1 4012 4013 +4015 ite 17 4014 593 1344 +4016 ite 17 2879 2102 4015 +4017 const 17 0110 +4018 ite 17 2882 4017 4016 +4019 ite 17 2109 4018 4008 +4020 ite 260 257 857 2107 +4021 concat 17 9 4020 +4022 ite 17 2112 4021 4019 +4023 ite 258 257 2699 2110 +4024 concat 17 2699 4023 +4025 ite 17 2115 4024 4022 +4026 ite 17 841 593 1344 +4027 const 28 10011110 +4028 uext 25 4027 1 +4029 eq 1 269 4028 +4030 ite 17 4029 2755 4026 +4031 ite 17 2117 4030 4025 +4032 ite 17 2119 1344 4031 +4033 const 17 0001 +4034 ite 17 2130 4033 4032 +4035 ite 17 842 593 4034 +4036 ite 17 2137 4035 1344 +4037 ite 17 80 593 4036 +4038 ite 17 20 4037 593 +4039 next 17 1344 4038 +4040 ite 28 2250 2089 1345 +4041 ite 28 2296 4040 1345 +4042 ite 28 2281 4041 1345 +4043 ite 28 80 4042 1345 +4044 ite 28 1349 1345 4043 +4045 ite 28 20 4044 2089 +4046 next 28 1345 4045 +4047 ite 28 2250 1337 1346 +4048 ite 28 2296 4047 1346 +4049 ite 28 2281 4048 1346 +4050 ite 28 80 4049 1346 +4051 ite 28 1349 1346 4050 +4052 ite 28 20 4051 2089 +4053 next 28 1346 4052 +4054 ite 17 63 1347 593 +4055 ite 17 2250 4054 1347 +4056 const 17 1110 +4057 ite 17 2250 4056 1347 +4058 ite 17 2291 4057 4055 +4059 ite 17 2250 2290 1347 +4060 ite 17 2293 4059 4058 +4061 ite 17 2250 2292 1347 +4062 ite 17 2253 4061 4060 +4063 ite 17 2250 2252 1347 +4064 ite 17 2254 4063 4062 +4065 ite 17 2250 2098 1347 +4066 ite 17 2255 4065 4064 +4067 ite 17 2250 2100 1347 +4068 ite 17 2256 4067 4066 +4069 ite 17 2250 2102 1347 +4070 ite 17 2296 4069 4068 +4071 const 17 0111 +4072 ite 17 2250 4071 1347 +4073 ite 17 2298 4072 4070 +4074 ite 17 2414 4071 2100 +4075 ite 17 2267 1347 4074 +4076 ite 17 2250 4075 1347 +4077 ite 17 2272 4076 4073 +4078 ite 17 2414 4017 2102 +4079 const 17 0101 +4080 neq 1 29 33 +4081 ite 17 4080 4079 4078 +4082 ite 17 2250 4081 1347 +4083 ite 17 2300 4082 4077 +4084 const 17 0100 +4085 ite 17 2250 4084 1347 +4086 ite 17 2302 4085 4083 +4087 const 17 0011 +4088 ite 17 2250 4087 1347 +4089 ite 17 2304 4088 4086 +4090 ite 17 2250 2755 1347 +4091 ite 17 2306 4090 4089 +4092 ite 17 2250 4033 1347 +4093 ite 17 2276 4092 4091 +4094 ite 17 2281 4093 1347 +4095 ite 17 80 4094 593 +4096 ite 17 1349 593 4095 +4097 ite 17 20 4096 593 +4098 next 17 1347 4097 +4099 const 266 0000000 +4100 uext 266 30 6 +4101 add 266 1348 4100 +4102 ite 266 2267 4101 1348 +4103 ite 266 2250 4102 1348 +4104 ite 266 2272 4103 1348 +4105 ite 266 2250 4099 1348 +4106 ite 266 2300 4105 4104 +4107 ite 266 2281 4106 1348 +4108 ite 266 80 4107 1348 +4109 ite 266 2326 4101 1348 +4110 ite 266 2328 4109 1348 +4111 ite 266 1349 4110 4108 +4112 ite 266 20 4111 4099 +4113 next 266 1348 4112 +4114 ite 1 2328 2327 30 +4115 ite 1 1349 4114 9 +4116 ite 1 20 4115 30 +4117 next 1 1349 4116 +4118 concat 258 161 148 +4119 concat 260 168 4118 +4120 concat 17 173 4119 +4121 concat 57 181 4120 +4122 concat 264 208 4121 +4123 concat 266 219 4122 +4124 concat 28 243 4123 +4125 ite 28 2115 4124 1355 +4126 ite 28 2130 1355 4125 +4127 ite 28 842 1355 4126 +4128 ite 28 2137 4127 1355 +4129 ite 28 80 1355 4128 +4130 ite 28 20 4129 1355 +4131 next 28 1355 4130 +4132 concat 25 9 1345 +4133 eq 1 1355 1346 +4134 neq 1 1355 33 +4135 and 1 4133 4134 +4136 ite 25 4135 4132 1011 +4137 uext 25 1345 1 +4138 neq 1 1362 4137 +4139 ite 25 4138 4136 1362 +4140 ite 25 2096 4139 1362 +4141 ite 25 2128 1362 4140 +4142 ite 25 2130 1362 4141 +4143 ite 25 842 1362 4142 +4144 ite 25 2137 4143 1362 +4145 ite 25 80 1362 4144 +4146 ite 25 20 4145 1011 +4147 next 25 1362 4146 +4148 eq 1 1369 43 +4149 not 1 1367 +4150 or 1 4148 4149 +4151 ite 28 4150 1366 1369 +4152 ite 28 4014 1366 4151 +4153 ite 28 2879 1366 4152 +4154 ite 28 2882 1366 4153 +4155 ite 28 2109 4154 1366 +4156 ite 28 4029 42 1366 +4157 ite 28 2117 4156 4155 +4158 ite 28 2130 1366 4157 +4159 ite 28 842 1366 4158 +4160 ite 28 2137 4159 1366 +4161 ite 28 80 1366 4160 +4162 ite 28 20 4161 1366 +4163 next 28 1366 4162 +4164 ite 1 4150 9 1367 +4165 ite 1 4014 1367 4164 +4166 ite 1 2879 1367 4165 +4167 ite 1 2882 1367 4166 +4168 ite 1 2109 4167 1367 +4169 uext 25 1366 1 +4170 eq 1 269 4169 +4171 ite 1 2112 4170 4168 +4172 ite 1 2130 1367 4171 +4173 ite 1 842 1367 4172 +4174 ite 1 2137 4173 1367 +4175 ite 1 80 1367 4174 +4176 ite 1 20 4175 1367 +4177 next 1 1367 4176 +4178 slice 2026 1376 226 0 +4179 concat 1374 4178 4 +4180 next 1374 1376 4179 +; end of yosys output diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/recount4.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/recount4.btor2 new file mode 100644 index 0000000000..c644af1574 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/recount4.btor2 @@ -0,0 +1,15 @@ +1 sort bitvec 1 +2 input 1 enable +3 input 1 reset +4 sort bitvec 4 +5 zero 4 +6 state 4 counter +7 init 4 6 5 +8 one 4 +9 add 4 6 8 +10 ite 4 2 9 6 +11 ite 4 3 5 10 +12 next 4 6 11 +13 ones 4 +14 eq 1 6 13 +15 bad 14 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/run-examples.sh b/subprojects/xcfa/btor2xcfa/src/test/resources/run-examples.sh new file mode 100644 index 0000000000..74ccac0256 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/run-examples.sh @@ -0,0 +1,78 @@ +#!/bin/sh + +readonly DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +readonly OUTDIR=$DIR/out + +# The directory with example witnesses generated from the model checker BtorMC +readonly MCWITNESSDIR=$DIR/mc-witnesses +if [ ! -e $MCWITNESSDIR ] +then + echo "[error] can not find MC witnesses directory" + exit 1 +fi + +BTORSIM=$DIR/../../bin/btorsim +if [ ! -e $BTORSIM ] +then + echo "[error] BtorSim not built" + exit 1 +fi + +invalid () { + : +} + +mkdir -p $OUTDIR + +set -x + +### Check witnesses from model checker +$BTORSIM -c count2.btor2 $MCWITNESSDIR/count2.witnessmc +$BTORSIM -c count4.btor2 $MCWITNESSDIR/count4.witnessmc +$BTORSIM -c factorial4even.btor2 $MCWITNESSDIR/factorial4even.witnessmc +$BTORSIM -c noninitstate.btor2 $MCWITNESSDIR/noninitstate.witnessmc +$BTORSIM -c recount4.btor2 $MCWITNESSDIR/recount4.witnessmc +$BTORSIM -c twocount2.btor2 $MCWITNESSDIR/twocount2.witnessmc +$BTORSIM -c twocount2c.btor2 $MCWITNESSDIR/twocount2c.witnessmc +$BTORSIM -c twocount32.btor2 $MCWITNESSDIR/twocount32.witnessmc + +### Simulation for sat files, simulator produces valid witnesses +# Run simulation +$BTORSIM -b 0 -r 20 count2.btor2 > $OUTDIR/count2.witnesssim +$BTORSIM -b 0 -r 20 count4.btor2 > $OUTDIR/count4.witnesssim +$BTORSIM -b 0 -r 20 factorial4even.btor2 > $OUTDIR/factorial4even.witnesssim +$BTORSIM -b 0 -r 20 noninitstate.btor2 -s 1 > $OUTDIR/noninitstate.witnesssim +$BTORSIM -b 0 -r 20 twocount2.btor2 > $OUTDIR/twocount2.witnesssim +$BTORSIM -b 0 -r 20 twocount2c.btor2 -s 11 > $OUTDIR/twocount2c.witnesssim +$BTORSIM -b 0 -r 20 twocount32.btor2 > $OUTDIR/twocount32.witnesssim +# Check witnesses produced by simulation +$BTORSIM -c count2.btor2 $OUTDIR/count2.witnesssim +$BTORSIM -c count4.btor2 $OUTDIR/count4.witnesssim +$BTORSIM -c factorial4even.btor2 $OUTDIR/factorial4even.witnesssim +$BTORSIM -c noninitstate.btor2 $OUTDIR/noninitstate.witnesssim +$BTORSIM -c twocount2.btor2 $OUTDIR/twocount2.witnesssim +$BTORSIM -c twocount2c.btor2 $OUTDIR/twocount2c.witnesssim +$BTORSIM -c twocount32.btor2 $OUTDIR/twocount32.witnesssim + +### Simulation for sat files, simulator produces invalid witnesses +# Run simulation +$BTORSIM -b 0 -r 20 noninitstate.btor2 > $OUTDIR/noninitstate.nowitnesssim +# Check witness produced by simulation +$BTORSIM -c noninitstate.btor2 $OUTDIR/noninitstate.nowitnesssim || invalid +# Run simulation +$BTORSIM -b 0 -r 20 recount4.btor2 > $OUTDIR/recount4.nowitnesssim +# Check witness produced by simulation +$BTORSIM -c recount4.btor2 $OUTDIR/recount4.nowitnesssim || invalid +# Run simulation +$BTORSIM -b 0 -r 20 twocount2c.btor2 > $OUTDIR/twocount2c.nowitnesssim +# Check witness produced by simulation +$BTORSIM -c twocount2c.btor2 $OUTDIR/twocount2c.nowitnesssim || invalid + + +### Real world example +# Run simulation (invalid witness) +$BTORSIM -b 0 -r 999 ponylink-slaveTXlen-sat.btor2 > $OUTDIR/ponylink-slaveTXlen.nowitnesssim +# Check witness from simulation +$BTORSIM -c ponylink-slaveTXlen-sat.btor2 $OUTDIR/ponylink-slaveTXlen.nowitnesssim || invalid +# Check witness from model checker +$BTORSIM -c ponylink-slaveTXlen-sat.btor2 $MCWITNESSDIR/ponylink-slaveTXlen.witnessmc diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2.btor2 new file mode 100644 index 0000000000..c5ba40e660 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2.btor2 @@ -0,0 +1,20 @@ +1 sort bitvec 1 +2 sort bitvec 2 +3 input 1 turn +4 zero 2 +5 state 2 a +6 state 2 b +7 init 2 5 4 +8 init 2 6 4 +9 one 2 +10 add 2 5 9 +11 add 2 6 9 +12 ite 2 3 5 10 +13 ite 2 -3 6 11 +14 next 2 5 12 +15 next 2 6 13 +16 ones 2 +17 eq 1 5 16 +18 eq 1 6 16 +19 and 1 17 18 +20 bad 19 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2c.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2c.btor2 new file mode 100644 index 0000000000..dee385156c --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2c.btor2 @@ -0,0 +1,23 @@ +1 sort bitvec 1 +2 sort bitvec 2 +3 input 1 s +4 input 1 t +5 zero 2 +6 state 2 a +7 state 2 b +8 init 2 6 5 +9 init 2 7 5 +10 one 2 +11 add 2 6 10 +12 add 2 7 10 +13 ite 2 3 11 6 +14 ite 2 4 12 7 +15 next 2 6 13 +16 next 2 7 14 +17 ones 2 +18 eq 1 6 17 +19 eq 1 7 17 +20 and 1 18 19 +21 bad 20 +22 nand 1 3 4 +23 constraint 22 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount32.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount32.btor2 new file mode 100644 index 0000000000..e8010dbfa6 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount32.btor2 @@ -0,0 +1,20 @@ + 1 sort bitvec 1 + 2 sort bitvec 32 + 3 input 1 turn + 4 zero 2 + 5 state 2 a + 6 state 2 b + 7 init 2 5 4 + 8 init 2 6 4 + 9 one 2 +10 add 2 5 9 +11 add 2 6 9 +12 ite 2 3 5 10 +13 ite 2 -3 6 11 +14 next 2 5 12 +15 next 2 6 13 +16 constd 2 3 +17 eq 1 5 16 +18 eq 1 6 16 +19 and 1 17 18 +20 bad 19 From 5ee57f9cfa652afc31d58adcf45a3b7ffa9ea4f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 4 Mar 2025 12:53:29 +0100 Subject: [PATCH 04/72] Fixed up logger, count2&4 works --- .../hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt | 10 +++++----- .../xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index dc5290fbad..4942b86a0a 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -31,30 +31,30 @@ class Btor2Visitor : Btor2BaseVisitor(){ override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { for (child in ctx?.children!!) { - logger.write(Logger.Level.VERBOSE, "Visiting line: ", child.accept(this)) + child.accept(this) } return Btor2Circuit } override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { val result = sortVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Visiting sort: ", result) + logger.write(Logger.Level.VERBOSE, "Visiting sort: " + result + "\n") Btor2Circuit.sorts[result.sid] = result return Btor2Circuit } override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting constant: ", constantVisitor.visit(ctx)) + logger.write(Logger.Level.VERBOSE, "Visiting constant: " + constantVisitor.visit(ctx)+ "\n") return Btor2Circuit } override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting operation: ", operationVisitor.visit(ctx)) + logger.write(Logger.Level.VERBOSE, "Visiting operation: "+ operationVisitor.visit(ctx)+ "\n") return Btor2Circuit } override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting stateful: ", statefulVisitor.visit(ctx)) + logger.write(Logger.Level.VERBOSE, "Visiting stateful: "+ statefulVisitor.visit(ctx)+ "\n") return Btor2Circuit } diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index 1c7b41139a..10ad0e754b 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -33,7 +33,7 @@ class TestBtor2Xcfa { fun testBtor2Xcfa() { val logger = ConsoleLogger(Logger.Level.VERBOSE) val visitor = Btor2Visitor() - val btor2File = File("src/test/resources/count2.btor2") + val btor2File = File("src/test/resources/count4.btor2") val input = btor2File.readLines().joinToString("\n") val cinput = CharStreams.fromString(input) @@ -46,6 +46,6 @@ class TestBtor2Xcfa { context.accept(visitor) val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) - logger.write( Logger.Level.VERBOSE, "XCFA built, result: ", xcfa.toDot()) + logger.write( Logger.Level.VERBOSE, "XCFA built, result: " + xcfa.toDot() + "\n") } } \ No newline at end of file From 2bd77abc53599f4a9b601f8d5ee2287045f8b512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Wed, 12 Mar 2025 15:16:33 +0100 Subject: [PATCH 05/72] Visitors, models are reworked (ongoing) --- .../mit/theta/frontend/models/Btor2Model.kt | 4 +- .../theta/frontend/models/Btor2Operation.kt | 37 +------- .../frontend/models/Btor2OperationEnums.kt | 85 +++++++++++++++++++ .../theta/frontend/models/Btor2Properties.kt | 35 ++++++++ .../{Btor2States.kt => Btor2Stateful.kt} | 27 ++---- .../theta/frontend/visitors/Btor2Visitor.kt | 9 +- 6 files changed, 138 insertions(+), 59 deletions(-) create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperationEnums.kt create mode 100644 subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt rename subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/{Btor2States.kt => Btor2Stateful.kt} (81%) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 4f3d12a0ed..4efa3c98f7 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -38,10 +38,8 @@ public interface Btor2NodeVisitor { object Btor2Circuit { var nodes: MutableMap = mutableMapOf() var sorts: MutableMap = mutableMapOf() - var inits: MutableMap = mutableMapOf() var ops: MutableMap = mutableMapOf() - var bads : MutableMap = mutableMapOf() - var nexts: MutableMap = mutableMapOf() + var properties : MutableMap = mutableMapOf() } // sortID lookup in Btor2Sort diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index e5435ae025..1b2bb001d1 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -49,6 +49,9 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 Btor2UnaryOperator.INC -> TODO() Btor2UnaryOperator.DEC -> TODO() Btor2UnaryOperator.NEG -> TODO() + Btor2UnaryOperator.REDAND -> TODO() + Btor2UnaryOperator.REDOR -> TODO() + Btor2UnaryOperator.REDXOR -> TODO() } } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -165,37 +168,3 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort } } -enum class Btor2UnaryOperator { - NOT, - INC, - DEC, - NEG -} - -enum class Btor2ComparisonOperator { - EQ, - NEQ, - SLT, - SLE, - SGT, - SGTE, - ULT, - ULE, - UGT, - UGTE -} - -enum class Btor2BinaryOperator { - AND, - NAND, - NOR, - OR, - XOR, - ADD, - MUL, - UDIV, - UREM, - SDIV, - SREM, - SMOD -} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperationEnums.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperationEnums.kt new file mode 100644 index 0000000000..e5e608c67a --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperationEnums.kt @@ -0,0 +1,85 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.models + +enum class Btor2IndexedOperator { + SEXT, + UEXT, + SLICE +} + +enum class Btor2UnaryOperator { + NOT, + INC, + DEC, + NEG, + REDAND, + REDOR, + REDXOR +} + +enum class Btor2ComparisonOperator { + EQ, + NEQ, + SLT, + SLTE, + SGT, + SGTE, + ULT, + ULTE, + UGT, + UGTE +} + +enum class Btor2BooleanOperator { + IFF, + IMPLIES +} + +enum class Btor2BinaryOperator { + AND, + NAND, + NOR, + OR, + XOR, + ADD, + MUL, + UDIV, + UREM, + SDIV, + SREM, + SMOD, + CONCAT, + SADDO, + SDIVO, + SMULO, + SSUBO, + UADDO, + UMULO, + USUBO, + ROL, + ROR, + SLL, + SRA, + SRL, + READ +} + +enum class Btor2TernaryOperator { + ITE, + WRITE +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt new file mode 100644 index 0000000000..5e0d5cc89c --- /dev/null +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.models + +import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.type.Expr + +data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) +{ + override fun getVar(): VarDecl<*>? { + return null + } + + override fun getExpr(): Expr<*> { + TODO() + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2States.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt similarity index 81% rename from subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2States.kt rename to subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt index fdcd33faa7..5aed0bd526 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2States.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt @@ -23,8 +23,12 @@ import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.bvtype.BvExprs import hu.bme.mit.theta.core.type.bvtype.BvType +abstract class Btor2Stateful(id: UInt, sort: Btor2Sort, state: Btor2State?, value: Btor2Node?) : Btor2Node(id, sort) { + +} + // Inputs and States -data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort) : Btor2Node(nid, sort) +data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort) : Btor2Stateful(nid, sort,null,null) { val value = Decls.Var("input_$nid", BvExprs.BvType(sort.width.toInt())) @@ -41,7 +45,7 @@ data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort) : Bt } } -data class Btor2State(override val nid: UInt, override val sort: Btor2Sort) : Btor2Node(nid, sort) { +data class Btor2State(override val nid: UInt, override val sort: Btor2Sort) : Btor2Stateful(nid, sort,null,null) { val value = Decls.Var("state_$nid", BvExprs.BvType(sort.width.toInt())) override fun getVar(): VarDecl? { @@ -56,7 +60,8 @@ data class Btor2State(override val nid: UInt, override val sort: Btor2Sort) : Bt return visitor.visit(this, param) } } -data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, val state: Btor2State, val value: Btor2Const) : Btor2Node(nid, sort) +// Value was Btor2Const +data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, val state: Btor2State, val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) { val declsVar = Decls.Var("init_$nid", BvExprs.BvType(sort.width.toInt())) @@ -73,7 +78,7 @@ data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, val s } } -data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, val state: Btor2State, val value: Btor2Node) : Btor2Node(nid, sort) +data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, val state: Btor2State, val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) { val declsVar = Decls.Var("next_$nid", BvExprs.BvType(sort.width.toInt())) @@ -89,17 +94,3 @@ data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, val s return visitor.visit(this, param) } } -data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) -{ - override fun getVar(): VarDecl<*>? { - return null - } - - override fun getExpr(): Expr<*> { - TODO() - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } -} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index 4942b86a0a..153c4b42aa 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -22,7 +22,8 @@ import hu.bme.mit.theta.common.logging.ConsoleLogger import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.frontend.models.* -class Btor2Visitor : Btor2BaseVisitor(){ +class Btor2Visitor : Btor2BaseVisitor() { + private val sortVisitor = SortVisitor() private val constantVisitor = ConstantVisitor() private val operationVisitor = OperationVisitor() @@ -44,17 +45,17 @@ class Btor2Visitor : Btor2BaseVisitor(){ } override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting constant: " + constantVisitor.visit(ctx)+ "\n") + logger.write(Logger.Level.VERBOSE, "Visiting constant: " + constantVisitor.visit(ctx) + "\n") return Btor2Circuit } override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting operation: "+ operationVisitor.visit(ctx)+ "\n") + logger.write(Logger.Level.VERBOSE, "Visiting operation: " + operationVisitor.visit(ctx) + "\n") return Btor2Circuit } override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting stateful: "+ statefulVisitor.visit(ctx)+ "\n") + logger.write(Logger.Level.VERBOSE, "Visiting stateful: " + statefulVisitor.visit(ctx) + "\n") return Btor2Circuit } From 3e903f4a1b3ddee30dbcba209e6d3ef84d7cee5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Mon, 17 Mar 2025 16:56:23 +0100 Subject: [PATCH 06/72] Model reworked, grammar changed according to btor2tools --- .../btor2-frontend/src/main/antlr/Btor2.g4 | 4 +- .../mit/theta/frontend/models/Btor2Model.kt | 5 ++ .../theta/frontend/models/Btor2Operation.kt | 71 ++++++++++++++- ...perationEnums.kt => Btor2OperatorEnums.kt} | 12 +-- .../theta/frontend/models/Btor2Properties.kt | 90 ++++++++++++++++++- .../frontend/visitors/OperationVisitor.kt | 4 +- 6 files changed, 171 insertions(+), 15 deletions(-) rename subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/{Btor2OperationEnums.kt => Btor2OperatorEnums.kt} (91%) diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index f40f1380d5..6a39c51104 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -13,8 +13,8 @@ UNARYOP: 'not' TERNARYOP: 'ite' | 'write'; BINOP: 'and' | 'nand' | 'nor' | 'or' | 'xor' | 'iff' | 'implies' | 'eq' | 'neq' - | 'slt' | 'sle' | 'sgt' | 'sgte' - | 'ult' | 'ule' | 'ugt' | 'ugte' + | 'slt' | 'slte' | 'sgt' | 'sgte' + | 'ult' | 'ulte' | 'ugt' | 'ugte' | 'concat' | 'add' | 'mul' | 'udiv' | 'urem' | 'sdiv' | 'srem' | 'smod' diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 4efa3c98f7..91753c7d89 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -32,13 +32,18 @@ public interface Btor2NodeVisitor { fun visit(node: Btor2Init, param: P) : R fun visit(node: Btor2Next, param: P) : R fun visit(node: Btor2Bad, param: P) : R + fun visit(node: Btor2Constraint, param: P) : R + fun visit(node: Btor2Fair, param: P) : R + fun visit(node: Btor2Output, param: P) : R } object Btor2Circuit { var nodes: MutableMap = mutableMapOf() + var constants: MutableMap = mutableMapOf() var sorts: MutableMap = mutableMapOf() var ops: MutableMap = mutableMapOf() + var states: MutableMap = mutableMapOf() var properties : MutableMap = mutableMapOf() } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 1b2bb001d1..219f43782d 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -116,7 +116,31 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor return when(operator) { Btor2BinaryOperator.ADD -> BvAddExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) - else -> TODO() + Btor2BinaryOperator.AND -> TODO() + Btor2BinaryOperator.NAND -> TODO() + Btor2BinaryOperator.NOR -> TODO() + Btor2BinaryOperator.OR -> TODO() + Btor2BinaryOperator.XOR -> TODO() + Btor2BinaryOperator.MUL -> TODO() + Btor2BinaryOperator.UDIV -> TODO() + Btor2BinaryOperator.UREM -> TODO() + Btor2BinaryOperator.SDIV -> TODO() + Btor2BinaryOperator.SREM -> TODO() + Btor2BinaryOperator.SMOD -> TODO() + Btor2BinaryOperator.CONCAT -> TODO() + Btor2BinaryOperator.SADDO -> TODO() + Btor2BinaryOperator.SDIVO -> TODO() + Btor2BinaryOperator.SMULO -> TODO() + Btor2BinaryOperator.SSUBO -> TODO() + Btor2BinaryOperator.UADDO -> TODO() + Btor2BinaryOperator.UMULO -> TODO() + Btor2BinaryOperator.USUBO -> TODO() + Btor2BinaryOperator.ROL -> TODO() + Btor2BinaryOperator.ROR -> TODO() + Btor2BinaryOperator.SLL -> TODO() + Btor2BinaryOperator.SRA -> TODO() + Btor2BinaryOperator.SRL -> TODO() + Btor2BinaryOperator.READ -> TODO() } } @@ -128,7 +152,31 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor return when(operator) { Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) - else -> TODO() + Btor2BinaryOperator.AND -> TODO() + Btor2BinaryOperator.NAND -> TODO() + Btor2BinaryOperator.NOR -> TODO() + Btor2BinaryOperator.OR -> TODO() + Btor2BinaryOperator.XOR -> TODO() + Btor2BinaryOperator.MUL -> TODO() + Btor2BinaryOperator.UDIV -> TODO() + Btor2BinaryOperator.UREM -> TODO() + Btor2BinaryOperator.SDIV -> TODO() + Btor2BinaryOperator.SREM -> TODO() + Btor2BinaryOperator.SMOD -> TODO() + Btor2BinaryOperator.CONCAT -> TODO() + Btor2BinaryOperator.SADDO -> TODO() + Btor2BinaryOperator.SDIVO -> TODO() + Btor2BinaryOperator.SMULO -> TODO() + Btor2BinaryOperator.SSUBO -> TODO() + Btor2BinaryOperator.UADDO -> TODO() + Btor2BinaryOperator.UMULO -> TODO() + Btor2BinaryOperator.USUBO -> TODO() + Btor2BinaryOperator.ROL -> TODO() + Btor2BinaryOperator.ROR -> TODO() + Btor2BinaryOperator.SLL -> TODO() + Btor2BinaryOperator.SRA -> TODO() + Btor2BinaryOperator.SRL -> TODO() + Btor2BinaryOperator.READ -> TODO() } } } @@ -145,7 +193,15 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort return when(operator) { Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1.getExpr() as Expr , op2.getExpr()as Expr) - else -> TODO() + Btor2ComparisonOperator.NEQ -> TODO() + Btor2ComparisonOperator.SLT -> TODO() + Btor2ComparisonOperator.SLTE -> TODO() + Btor2ComparisonOperator.SGT -> TODO() + Btor2ComparisonOperator.SGTE -> TODO() + Btor2ComparisonOperator.ULT -> TODO() + Btor2ComparisonOperator.ULTE -> TODO() + Btor2ComparisonOperator.UGT -> TODO() + Btor2ComparisonOperator.UGTE -> TODO() } } @@ -157,6 +213,15 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort val expr = when(operator) { Btor2ComparisonOperator.EQ -> getExpr() as Expr + Btor2ComparisonOperator.NEQ -> TODO() + Btor2ComparisonOperator.SLT -> TODO() + Btor2ComparisonOperator.SLTE -> TODO() + Btor2ComparisonOperator.SGT -> TODO() + Btor2ComparisonOperator.SGTE -> TODO() + Btor2ComparisonOperator.ULT -> TODO() + Btor2ComparisonOperator.ULTE -> TODO() + Btor2ComparisonOperator.UGT -> TODO() + Btor2ComparisonOperator.UGTE -> TODO() else -> TODO() } if(negate) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperationEnums.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt similarity index 91% rename from subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperationEnums.kt rename to subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt index e5e608c67a..3685bd9a7e 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperationEnums.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt @@ -15,12 +15,12 @@ */ package hu.bme.mit.theta.frontend.models - -enum class Btor2IndexedOperator { - SEXT, - UEXT, - SLICE -} +// Btor2Ext and Slice Operation already exists +//enum class Btor2IndexedOperator { +// SEXT, +// UEXT, +// SLICE +//} enum class Btor2UnaryOperator { NOT, diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 5e0d5cc89c..0e66ea7d7f 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -19,7 +19,69 @@ package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.type.Expr -data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) +abstract class Btor2Properties(override val nid: UInt, override val sort: Btor2Sort?, open val operand: Btor2Node) : Btor2Node(nid, null) +{ + abstract fun getExpr(negate: Boolean): Expr<*>? + +} +data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) +{ + override fun getVar(): VarDecl<*>? { + return null + } + + override fun getExpr(): Expr<*> { + TODO() + } + + override fun getExpr(negate: Boolean): Expr<*>? { + TODO("Not yet implemented") + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} + +data class Btor2Constraint(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) +{ + override fun getVar(): VarDecl<*>? { + return null + } + + override fun getExpr(): Expr<*> { + TODO() + } + + override fun getExpr(negate: Boolean): Expr<*>? { + TODO() + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} + +data class Btor2Fair(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) +{ + override fun getVar(): VarDecl<*>? { + return null + } + + override fun getExpr(): Expr<*> { + TODO() + } + + override fun getExpr(negate: Boolean): Expr<*>? { + TODO() + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} + +data class Btor2Output(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) { override fun getVar(): VarDecl<*>? { return null @@ -29,7 +91,31 @@ data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val o TODO() } + override fun getExpr(negate: Boolean): Expr<*>? { + TODO() + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } -} \ No newline at end of file +} +// 'justice' ()+ Szóval még hagyjuk <3 +// TODO: justice +//data class Btor2Justice(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) +//{ +// override fun getVar(): VarDecl<*>? { +// return null +// } +// +// override fun getExpr(): Expr<*> { +// TODO() +// } +// +// override fun getExpr(negate: Boolean): Expr<*>? { +// TODO() +// } +// +// override fun accept(visitor: Btor2NodeVisitor, param : P): R { +// return visitor.visit(this, param) +// } +//} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 619cf3059b..904487c5ed 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -75,11 +75,11 @@ class OperationVisitor : Btor2BaseVisitor() { "eq" -> Btor2ComparisonOperator.EQ "neq" -> Btor2ComparisonOperator.NEQ "slt" -> Btor2ComparisonOperator.SLT - "sle" -> Btor2ComparisonOperator.SLE + "slte" -> Btor2ComparisonOperator.SLTE "sgt" -> Btor2ComparisonOperator.SGT "sgte" -> Btor2ComparisonOperator.SGTE "ult" -> Btor2ComparisonOperator.ULT - "ule" -> Btor2ComparisonOperator.ULE + "ulte" -> Btor2ComparisonOperator.ULTE "ugt" -> Btor2ComparisonOperator.UGT "ugte" -> Btor2ComparisonOperator.UGTE "add" -> Btor2BinaryOperator.ADD From 43f8d053a5acb13a3bda365ff653ae75b2e86005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 25 Mar 2025 13:59:50 +0100 Subject: [PATCH 07/72] Added operation expressions --- .../mit/theta/frontend/models/Btor2Model.kt | 3 +- .../theta/frontend/models/Btor2Operation.kt | 103 +++++++++++++----- .../theta/frontend/models/Btor2Stateful.kt | 43 +++++--- .../frontend/visitors/OperationVisitor.kt | 27 +++++ .../theta/frontend/visitors/StateVisitor.kt | 10 +- .../Btor2XcfaBuilder.kt | 71 +++++++++--- 6 files changed, 190 insertions(+), 67 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 91753c7d89..59800782c6 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -22,6 +22,7 @@ import hu.bme.mit.theta.core.type.Expr public interface Btor2NodeVisitor { fun visit(node: Btor2UnaryOperation, param: P) : R fun visit(node: Btor2BinaryOperation, param: P) : R + fun visit(node: Btor2TernaryOperation, param: P) : R fun visit(node: Btor2SliceOperation, param: P) : R fun visit(node: Btor2ExtOperation, param: P) : R fun visit(node: Btor2Comparison, param: P) : R @@ -40,8 +41,8 @@ public interface Btor2NodeVisitor { object Btor2Circuit { var nodes: MutableMap = mutableMapOf() - var constants: MutableMap = mutableMapOf() var sorts: MutableMap = mutableMapOf() + var constants: MutableMap = mutableMapOf() var ops: MutableMap = mutableMapOf() var states: MutableMap = mutableMapOf() var properties : MutableMap = mutableMapOf() diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 219f43782d..a63e1c19ee 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -23,6 +23,7 @@ import hu.bme.mit.theta.core.stmt.AssumeStmt import hu.bme.mit.theta.core.stmt.Stmt import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.abstracttype.NegExpr +import hu.bme.mit.theta.core.type.anytype.IteExpr import hu.bme.mit.theta.core.type.booltype.BoolType import hu.bme.mit.theta.core.type.booltype.NotExpr import hu.bme.mit.theta.core.type.bvtype.* @@ -45,7 +46,7 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 override fun getExpr(): Expr<*> { return when(operator) { - Btor2UnaryOperator.NOT -> TODO() + Btor2UnaryOperator.NOT -> BvNotExpr.of(operand.getExpr() as Expr) Btor2UnaryOperator.INC -> TODO() Btor2UnaryOperator.DEC -> TODO() Btor2UnaryOperator.NEG -> TODO() @@ -116,18 +117,18 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor return when(operator) { Btor2BinaryOperator.ADD -> BvAddExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) - Btor2BinaryOperator.AND -> TODO() - Btor2BinaryOperator.NAND -> TODO() - Btor2BinaryOperator.NOR -> TODO() - Btor2BinaryOperator.OR -> TODO() - Btor2BinaryOperator.XOR -> TODO() - Btor2BinaryOperator.MUL -> TODO() - Btor2BinaryOperator.UDIV -> TODO() - Btor2BinaryOperator.UREM -> TODO() - Btor2BinaryOperator.SDIV -> TODO() - Btor2BinaryOperator.SREM -> TODO() - Btor2BinaryOperator.SMOD -> TODO() - Btor2BinaryOperator.CONCAT -> TODO() + Btor2BinaryOperator.AND -> BvAndExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) + Btor2BinaryOperator.NAND -> NotExpr.of(BvAndExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) as Expr) + Btor2BinaryOperator.NOR -> NotExpr.of(BvOrExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) as Expr) + Btor2BinaryOperator.OR -> BvOrExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) + Btor2BinaryOperator.XOR -> BvXorExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) + Btor2BinaryOperator.MUL -> BvMulExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) + Btor2BinaryOperator.UDIV -> BvUDivExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) + Btor2BinaryOperator.UREM -> BvURemExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) + Btor2BinaryOperator.SDIV -> BvSDivExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) + Btor2BinaryOperator.SREM -> BvSRemExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) + Btor2BinaryOperator.SMOD -> BvSModExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) + Btor2BinaryOperator.CONCAT -> BvConcatExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) Btor2BinaryOperator.SADDO -> TODO() Btor2BinaryOperator.SDIVO -> TODO() Btor2BinaryOperator.SMULO -> TODO() @@ -152,18 +153,18 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor return when(operator) { Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.AND -> TODO() - Btor2BinaryOperator.NAND -> TODO() - Btor2BinaryOperator.NOR -> TODO() - Btor2BinaryOperator.OR -> TODO() - Btor2BinaryOperator.XOR -> TODO() - Btor2BinaryOperator.MUL -> TODO() - Btor2BinaryOperator.UDIV -> TODO() - Btor2BinaryOperator.UREM -> TODO() - Btor2BinaryOperator.SDIV -> TODO() - Btor2BinaryOperator.SREM -> TODO() - Btor2BinaryOperator.SMOD -> TODO() - Btor2BinaryOperator.CONCAT -> TODO() + Btor2BinaryOperator.AND -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.NAND -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.NOR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.OR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.XOR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.MUL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.UDIV -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.UREM -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SDIV -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SREM -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SMOD -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.CONCAT -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.SADDO -> TODO() Btor2BinaryOperator.SDIVO -> TODO() Btor2BinaryOperator.SMULO -> TODO() @@ -193,8 +194,8 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort return when(operator) { Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1.getExpr() as Expr , op2.getExpr()as Expr) - Btor2ComparisonOperator.NEQ -> TODO() - Btor2ComparisonOperator.SLT -> TODO() + Btor2ComparisonOperator.NEQ -> BvNeqExpr.of(op1.getExpr() as Expr , op2.getExpr()as Expr) + Btor2ComparisonOperator.SLT -> BvSLtExpr.of(op1.getExpr() as Expr , op2.getExpr()as Expr) Btor2ComparisonOperator.SLTE -> TODO() Btor2ComparisonOperator.SGT -> TODO() Btor2ComparisonOperator.SGTE -> TODO() @@ -213,8 +214,8 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort val expr = when(operator) { Btor2ComparisonOperator.EQ -> getExpr() as Expr - Btor2ComparisonOperator.NEQ -> TODO() - Btor2ComparisonOperator.SLT -> TODO() + Btor2ComparisonOperator.NEQ -> getExpr() as Expr + Btor2ComparisonOperator.SLT -> getExpr() as Expr Btor2ComparisonOperator.SLTE -> TODO() Btor2ComparisonOperator.SGT -> TODO() Btor2ComparisonOperator.SGTE -> TODO() @@ -233,3 +234,47 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort } } +// Ehhez a nidhez vezetünk be egy változót, bekötjük +data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor2Sort, val operator: Btor2TernaryOperator, + val op1: Btor2Node, val op2: Btor2Node, val op3: Btor2Node, val negated: Boolean) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("ternary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + val op1_expr : Expr + if (negated) { + op1_expr = NotExpr.of(op1.getExpr() as Expr) + } + else { + op1_expr = op1.getExpr() as Expr + } + return when(operator) + { + Btor2TernaryOperator.ITE -> IteExpr.of(op1_expr, op2.getExpr() as Expr, op3.getExpr() as Expr) + Btor2TernaryOperator.WRITE -> TODO() + } + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + val expr = when(operator) + { + Btor2TernaryOperator.ITE -> getExpr() as Expr + Btor2TernaryOperator.WRITE -> TODO() + } + // TODO + if(negated) + { + return AssignStmt.of(value, expr) + } else { + return AssignStmt.of(value, expr) + } + } +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt index 5aed0bd526..82be5574b4 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt @@ -24,20 +24,27 @@ import hu.bme.mit.theta.core.type.bvtype.BvExprs import hu.bme.mit.theta.core.type.bvtype.BvType abstract class Btor2Stateful(id: UInt, sort: Btor2Sort, state: Btor2State?, value: Btor2Node?) : Btor2Node(id, sort) { - + abstract val state: Btor2State? + abstract val value: Btor2Node? + abstract fun getState(): Btor2State? } // Inputs and States -data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort) : Btor2Stateful(nid, sort,null,null) +data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State?, + override val value: Btor2Node?) : Btor2Stateful(nid, sort,null,null) { - val value = Decls.Var("input_$nid", BvExprs.BvType(sort.width.toInt())) + val declsVar = Decls.Var("input_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getState(): Btor2State? { + return null + } override fun getVar(): VarDecl<*>? { - return value + return declsVar } override fun getExpr(): Expr<*> { - TODO("Not yet implemented") + return RefExpr.of(declsVar) // Valamilyen Bool type kellene? } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -45,15 +52,18 @@ data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort) : Bt } } -data class Btor2State(override val nid: UInt, override val sort: Btor2Sort) : Btor2Stateful(nid, sort,null,null) { - val value = Decls.Var("state_$nid", BvExprs.BvType(sort.width.toInt())) - +data class Btor2State(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State?, + override val value: Btor2Node?) : Btor2Stateful(nid, sort,null,null) { + val declsVar = Decls.Var("state_$nid", BvExprs.BvType(sort.width.toInt())) + override fun getState(): Btor2State? { + TODO("Not yet implemented") + } override fun getVar(): VarDecl? { - return value + return declsVar } override fun getExpr(): Expr<*> { - return RefExpr.of(value) + return RefExpr.of(declsVar) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -61,10 +71,13 @@ data class Btor2State(override val nid: UInt, override val sort: Btor2Sort) : Bt } } // Value was Btor2Const -data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, val state: Btor2State, val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) +data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State, + override val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) { val declsVar = Decls.Var("init_$nid", BvExprs.BvType(sort.width.toInt())) - + override fun getState(): Btor2State? { + return state + } override fun getVar(): VarDecl<*>? { return declsVar } @@ -78,10 +91,12 @@ data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, val s } } -data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, val state: Btor2State, val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) +data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State, override val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) { val declsVar = Decls.Var("next_$nid", BvExprs.BvType(sort.width.toInt())) - + override fun getState(): Btor2State? { + return state + } override fun getVar(): VarDecl<*>? { return declsVar } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 904487c5ed..146e722715 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -128,4 +128,31 @@ class OperationVisitor : Btor2BaseVisitor() { Btor2Circuit.ops[nid] = node return node } + + override fun visitTerop(ctx: Btor2Parser.TeropContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + val negated : Boolean + val op = when (ctx.TERNARYOP().text) { + "ite" -> Btor2TernaryOperator.ITE + "write" -> Btor2TernaryOperator.WRITE + else -> throw RuntimeException("Ternary operator unknown") + } + if (ctx.opd1.text.toInt() < 0) { + negated = true + } + else { + negated = false + } + + val opd1 = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val opd2 = nodes[ctx.opd2.text.toUInt()] as Btor2Node + val opd3 = nodes[ctx.opd3.text.toUInt()] as Btor2Node + + val node = Btor2TernaryOperation(nid, sort, op, opd1, opd2, opd3, negated) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } } \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index d5a4eb7487..1594eeff71 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -33,7 +33,7 @@ class StateVisitor : Btor2BaseVisitor() { val sid = idVisitor.visit(ctx.sid()) val sort = Btor2Circuit.sorts[sid] as Btor2Sort - val node = Btor2State(nid, sort) + val node = Btor2State(nid, sort, null, null) Btor2Circuit.nodes[nid] = node return node } @@ -43,7 +43,7 @@ class StateVisitor : Btor2BaseVisitor() { val sid = idVisitor.visit(ctx.sid()) val sort = Btor2Circuit.sorts[sid] as Btor2Sort - val node = Btor2Input(nid, sort) + val node = Btor2Input(nid, sort, null, null) Btor2Circuit.nodes[nid] = node return node } @@ -59,7 +59,7 @@ class StateVisitor : Btor2BaseVisitor() { check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) val node = Btor2Init(nid, sort, param1, param2) - Btor2Circuit.inits[nid] = node + Btor2Circuit.states[nid] = node return node } @@ -71,7 +71,7 @@ class StateVisitor : Btor2BaseVisitor() { val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Node val node = Btor2Next(nid, sort, param1, param2) - Btor2Circuit.nexts[nid] = node + Btor2Circuit.states[nid] = node Btor2Circuit.nodes[nid] = node return node } @@ -79,7 +79,7 @@ class StateVisitor : Btor2BaseVisitor() { override fun visitProperty(ctx: Btor2Parser.PropertyContext): Btor2Node { val nid = idVisitor.visit(ctx.id) val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) - Btor2Circuit.bads[nid] = node + Btor2Circuit.properties[nid] = node Btor2Circuit.nodes[nid] = node return node } diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 7442bdb91a..87944a9786 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -1,6 +1,7 @@ package hu.bme.mit.theta.btor2xcfa import hu.bme.mit.theta.core.stmt.AssignStmt +import hu.bme.mit.theta.core.stmt.HavocStmt import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.bvtype.BvType import hu.bme.mit.theta.frontend.models.Btor2Circuit @@ -21,48 +22,82 @@ object Btor2XcfaBuilder{ procBuilder.addVar(varDecl) } } - +/////////////////////////////////////////////// + // Initek var lastLoc = procBuilder.initLoc + var newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + // initekhez + procBuilder.addLoc(newLoc) + Btor2Circuit.states.forEach { + it.value.getVar()?.let{varDecl -> + if(varDecl.name.startsWith(("init_"))){ + val edge = XcfaEdge(lastLoc,newLoc, StmtLabel(AssignStmt.of(it.value.state?.getVar(), it.value.value?.getExpr() as Expr)), EmptyMetaData) + procBuilder.addEdge(edge) - Btor2Circuit.inits.forEach() { - val loc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) - - procBuilder.addLoc(loc) - - val edge = XcfaEdge(lastLoc,loc, StmtLabel(AssignStmt.of(it.value.state.getVar(), it.value.value.getExpr() as Expr)), EmptyMetaData) - procBuilder.addEdge(edge) - i++ - lastLoc=loc + // Amit tudunk 1 élre helyezzük, tehát az első élen vannak az initek + //lastLoc=loc + } + } } + i++ + lastLoc=newLoc +/////////////////////////////////////////////// + // Havoc változók + // Miután felvettük az initeket mehetnek a havoc változók + newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + procBuilder.addLoc(newLoc) + Btor2Circuit.states.forEach { + it.value.getVar()?.let{ varDecl -> + if(varDecl.name.startsWith(("input_"))){ + val edge = XcfaEdge(lastLoc, newLoc, StmtLabel(HavocStmt.of(varDecl)), EmptyMetaData) + procBuilder.addEdge(edge) + } + } + } + i++ + lastLoc=newLoc +///////////////////////////////////////////// + // Végigmegyünk az operationökön + // Check: Kigyűjtöm a feldolgozott node idkat akár itt v korábban,, + // Megfelelő sorrendben kell belerakni + // Gyors check h feldolgozotak között van e és hibával elszállunk ha nem + // az operandusainak a nid-jeire kell a check Btor2Circuit.ops.forEach() { val loc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) procBuilder.addLoc(loc) - val edge = XcfaEdge(lastLoc,loc, StmtLabel(it.value.getStmt(false)), EmptyMetaData) + val edge = XcfaEdge(lastLoc, loc, StmtLabel(it.value.getStmt(false)), EmptyMetaData) procBuilder.addEdge(edge) i++ lastLoc=loc } - procBuilder.createErrorLoc() // Errorkezelése - val bad = Btor2Circuit.bads.values.first() + // Egyzserű pédáink vannak tehát egyelőre csak bad van benne + val bad = Btor2Circuit.properties.values.first() val op = bad.operand as Btor2Operation // We will cast for now ¯\_(ツ)_/¯ procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(op.getStmt(false)),EmptyMetaData)) - val newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(op.getStmt(true)),EmptyMetaData)) //Circuit folytatása - val next = Btor2Circuit.nexts.values.first() - val firstLoc = procBuilder.getLocs().elementAt(1) - procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(AssignStmt.of(next.state.getVar(), next.value.getExpr() as Expr)),EmptyMetaData)) + Btor2Circuit.states.forEach { + it.value.getVar()?.let{varDecl -> + if(varDecl.name.startsWith(("next_"))){ + val firstLoc = procBuilder.getLocs().elementAt(1) + procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(AssignStmt.of(it.value.getState()?.getVar(), it.value.getExpr() as Expr)),EmptyMetaData)) + + } + } + } + + return xcfaBuilder.build() } - } class Btor2Pass() : ProcedurePassManager() { From 886d1102b0c8c78bfb91371f788e3ebed338933c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 25 Mar 2025 15:35:17 +0100 Subject: [PATCH 08/72] =?UTF-8?q?Zs=C3=B3fi=20konzi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theta/frontend/models/Btor2Operation.kt | 27 ++++---------- .../theta/frontend/models/Btor2Properties.kt | 29 +++++++-------- .../theta/frontend/models/Btor2Stateful.kt | 21 +++-------- .../Btor2XcfaBuilder.kt | 35 ++++++++++--------- 4 files changed, 43 insertions(+), 69 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index a63e1c19ee..1aba2b4e9f 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -211,11 +211,11 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort } override fun getStmt(negate: Boolean): Stmt { - val expr = when(operator) + return when(operator) { - Btor2ComparisonOperator.EQ -> getExpr() as Expr - Btor2ComparisonOperator.NEQ -> getExpr() as Expr - Btor2ComparisonOperator.SLT -> getExpr() as Expr + Btor2ComparisonOperator.EQ -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.NEQ -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.SLT -> AssignStmt.of(value,getExpr() as Expr) Btor2ComparisonOperator.SLTE -> TODO() Btor2ComparisonOperator.SGT -> TODO() Btor2ComparisonOperator.SGTE -> TODO() @@ -223,13 +223,6 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort Btor2ComparisonOperator.ULTE -> TODO() Btor2ComparisonOperator.UGT -> TODO() Btor2ComparisonOperator.UGTE -> TODO() - else -> TODO() - } - if(negate) - { - return AssumeStmt.of(NotExpr.of(expr)) - } else { - return AssumeStmt.of(expr) } } } @@ -264,17 +257,11 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor } override fun getStmt(negate: Boolean): Stmt { - val expr = when(operator) + return when(operator) { - Btor2TernaryOperator.ITE -> getExpr() as Expr + Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr() as Expr) Btor2TernaryOperator.WRITE -> TODO() } - // TODO - if(negated) - { - return AssignStmt.of(value, expr) - } else { - return AssignStmt.of(value, expr) - } + } } \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 0e66ea7d7f..96110176d2 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -18,10 +18,18 @@ package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.abstracttype.EqExpr +import hu.bme.mit.theta.core.type.anytype.RefExpr +import hu.bme.mit.theta.core.type.booltype.BoolType +import hu.bme.mit.theta.core.type.bvtype.BvEqExpr +import hu.bme.mit.theta.core.type.bvtype.BvExprs +import hu.bme.mit.theta.core.type.bvtype.BvExprs.Bv +import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq +import hu.bme.mit.theta.core.type.bvtype.BvLitExpr +import hu.bme.mit.theta.core.type.bvtype.BvType abstract class Btor2Properties(override val nid: UInt, override val sort: Btor2Sort?, open val operand: Btor2Node) : Btor2Node(nid, null) { - abstract fun getExpr(negate: Boolean): Expr<*>? } data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) @@ -30,12 +38,8 @@ data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, overr return null } - override fun getExpr(): Expr<*> { - TODO() - } - - override fun getExpr(negate: Boolean): Expr<*>? { - TODO("Not yet implemented") + override fun getExpr(): Expr { + return BvExprs.Eq(RefExpr.of(operand.getVar()) as RefExpr>, Bv(BooleanArray(1, {it -> true}))) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -53,9 +57,6 @@ data class Btor2Constraint(override val nid: UInt, override val sort: Btor2Sort? TODO() } - override fun getExpr(negate: Boolean): Expr<*>? { - TODO() - } override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) @@ -72,10 +73,6 @@ data class Btor2Fair(override val nid: UInt, override val sort: Btor2Sort?, over TODO() } - override fun getExpr(negate: Boolean): Expr<*>? { - TODO() - } - override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } @@ -91,9 +88,7 @@ data class Btor2Output(override val nid: UInt, override val sort: Btor2Sort?, ov TODO() } - override fun getExpr(negate: Boolean): Expr<*>? { - TODO() - } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt index 82be5574b4..c7493b476e 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt @@ -26,7 +26,6 @@ import hu.bme.mit.theta.core.type.bvtype.BvType abstract class Btor2Stateful(id: UInt, sort: Btor2Sort, state: Btor2State?, value: Btor2Node?) : Btor2Node(id, sort) { abstract val state: Btor2State? abstract val value: Btor2Node? - abstract fun getState(): Btor2State? } // Inputs and States @@ -35,16 +34,12 @@ data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort, over { val declsVar = Decls.Var("input_$nid", BvExprs.BvType(sort.width.toInt())) - override fun getState(): Btor2State? { - return null - } - override fun getVar(): VarDecl<*>? { return declsVar } override fun getExpr(): Expr<*> { - return RefExpr.of(declsVar) // Valamilyen Bool type kellene? + return RefExpr.of(declsVar) // Valamilyen Bool type kellene? nem } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -55,9 +50,7 @@ data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort, over data class Btor2State(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State?, override val value: Btor2Node?) : Btor2Stateful(nid, sort,null,null) { val declsVar = Decls.Var("state_$nid", BvExprs.BvType(sort.width.toInt())) - override fun getState(): Btor2State? { - TODO("Not yet implemented") - } + override fun getVar(): VarDecl? { return declsVar } @@ -75,9 +68,7 @@ data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, overr override val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) { val declsVar = Decls.Var("init_$nid", BvExprs.BvType(sort.width.toInt())) - override fun getState(): Btor2State? { - return state - } + override fun getVar(): VarDecl<*>? { return declsVar } @@ -94,15 +85,13 @@ data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, overr data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State, override val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) { val declsVar = Decls.Var("next_$nid", BvExprs.BvType(sort.width.toInt())) - override fun getState(): Btor2State? { - return state - } + override fun getVar(): VarDecl<*>? { return declsVar } override fun getExpr(): Expr<*> { - TODO("Not yet implemented") + return RefExpr.of(declsVar) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 87944a9786..c526d0b344 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -1,8 +1,12 @@ package hu.bme.mit.theta.btor2xcfa import hu.bme.mit.theta.core.stmt.AssignStmt +import hu.bme.mit.theta.core.stmt.AssumeStmt import hu.bme.mit.theta.core.stmt.HavocStmt import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.booltype.BoolExprs.Not +import hu.bme.mit.theta.core.type.booltype.BoolType +import hu.bme.mit.theta.core.type.booltype.NotExpr import hu.bme.mit.theta.core.type.bvtype.BvType import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.models.Btor2Operation @@ -44,18 +48,20 @@ object Btor2XcfaBuilder{ /////////////////////////////////////////////// // Havoc változók // Miután felvettük az initeket mehetnek a havoc változók - newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) - procBuilder.addLoc(newLoc) - Btor2Circuit.states.forEach { - it.value.getVar()?.let{ varDecl -> - if(varDecl.name.startsWith(("input_"))){ - val edge = XcfaEdge(lastLoc, newLoc, StmtLabel(HavocStmt.of(varDecl)), EmptyMetaData) - procBuilder.addEdge(edge) + if(Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("input_") == true }.isNotEmpty()){ + newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + procBuilder.addLoc(newLoc) + Btor2Circuit.states.forEach { + it.value.getVar()?.let{ varDecl -> + if(varDecl.name.startsWith(("input_"))){ + val edge = XcfaEdge(lastLoc, newLoc, StmtLabel(HavocStmt.of(varDecl)), EmptyMetaData) + procBuilder.addEdge(edge) + } } } + i++ + lastLoc=newLoc } - i++ - lastLoc=newLoc ///////////////////////////////////////////// // Végigmegyünk az operationökön @@ -77,25 +83,22 @@ object Btor2XcfaBuilder{ // Errorkezelése // Egyzserű pédáink vannak tehát egyelőre csak bad van benne val bad = Btor2Circuit.properties.values.first() - val op = bad.operand as Btor2Operation - // We will cast for now ¯\_(ツ)_/¯ - procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(op.getStmt(false)),EmptyMetaData)) + procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(AssumeStmt.of(bad.getExpr())),EmptyMetaData)) newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) - procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(op.getStmt(true)),EmptyMetaData)) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(AssumeStmt.of(Not(bad.getExpr()))),EmptyMetaData)) //Circuit folytatása + // ha nincsen next akkor azt el kelll havocolni Btor2Circuit.states.forEach { it.value.getVar()?.let{varDecl -> if(varDecl.name.startsWith(("next_"))){ val firstLoc = procBuilder.getLocs().elementAt(1) - procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(AssignStmt.of(it.value.getState()?.getVar(), it.value.getExpr() as Expr)),EmptyMetaData)) + procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(AssignStmt.of(it.value.state?.getVar(), it.value.getExpr() as Expr)),EmptyMetaData)) } } } - - return xcfaBuilder.build() } } From faa02355cb31ca7b05f4a654ab793c39567e736f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 25 Mar 2025 15:50:45 +0100 Subject: [PATCH 09/72] =?UTF-8?q?Zs=C3=B3fi=20konzi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index c526d0b344..6e9d7045ab 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -65,6 +65,7 @@ object Btor2XcfaBuilder{ ///////////////////////////////////////////// // Végigmegyünk az operationökön + // Check: Kigyűjtöm a feldolgozott node idkat akár itt v korábban,, // Megfelelő sorrendben kell belerakni // Gyors check h feldolgozotak között van e és hibával elszállunk ha nem From fd99e2f6c1fa3ef21dff5d12bcaf8b67b9d841b9 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Tue, 25 Mar 2025 16:01:13 +0100 Subject: [PATCH 10/72] fixed ref for btor2bad get expr --- .../java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 96110176d2..76f978e639 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -39,7 +39,7 @@ data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, overr } override fun getExpr(): Expr { - return BvExprs.Eq(RefExpr.of(operand.getVar()) as RefExpr>, Bv(BooleanArray(1, {it -> true}))) + return Eq(operand.getVar()?.ref as RefExpr, BvExprs.Bv(BooleanArray(1, {true}))) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { From 72aa8a68beb76490f284e750f3a1af71bf36601c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Wed, 9 Apr 2025 09:33:36 +0200 Subject: [PATCH 11/72] Small changes in models and visitors --- .../mit/theta/frontend/models/Btor2Model.kt | 3 - .../theta/frontend/models/Btor2Properties.kt | 106 +++++++++--------- .../theta/frontend/visitors/StateVisitor.kt | 2 +- .../Btor2XcfaBuilder.kt | 1 + 4 files changed, 55 insertions(+), 57 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 59800782c6..9a211ea452 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -33,9 +33,6 @@ public interface Btor2NodeVisitor { fun visit(node: Btor2Init, param: P) : R fun visit(node: Btor2Next, param: P) : R fun visit(node: Btor2Bad, param: P) : R - fun visit(node: Btor2Constraint, param: P) : R - fun visit(node: Btor2Fair, param: P) : R - fun visit(node: Btor2Output, param: P) : R } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 76f978e639..3fbf7c5ca9 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -28,11 +28,11 @@ import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.core.type.bvtype.BvType -abstract class Btor2Properties(override val nid: UInt, override val sort: Btor2Sort?, open val operand: Btor2Node) : Btor2Node(nid, null) -{ - -} -data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) +//abstract class Btor2Properties(override val nid: UInt, override val sort: Btor2Sort?, open val operand: Btor2Node) : Btor2Node(nid, null) +//{ +// +//} +data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) { override fun getVar(): VarDecl<*>? { return null @@ -46,54 +46,54 @@ data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, overr return visitor.visit(this, param) } } - -data class Btor2Constraint(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) -{ - override fun getVar(): VarDecl<*>? { - return null - } - - override fun getExpr(): Expr<*> { - TODO() - } - - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } -} - -data class Btor2Fair(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) -{ - override fun getVar(): VarDecl<*>? { - return null - } - - override fun getExpr(): Expr<*> { - TODO() - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } -} - -data class Btor2Output(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) -{ - override fun getVar(): VarDecl<*>? { - return null - } - - override fun getExpr(): Expr<*> { - TODO() - } - - - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } -} +// +//data class Btor2Constraint(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) +//{ +// override fun getVar(): VarDecl<*>? { +// return null +// } +// +// override fun getExpr(): Expr<*> { +// TODO() +// } +// +// +// override fun accept(visitor: Btor2NodeVisitor, param : P): R { +// return visitor.visit(this, param) +// } +//} +// +//data class Btor2Fair(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) +//{ +// override fun getVar(): VarDecl<*>? { +// return null +// } +// +// override fun getExpr(): Expr<*> { +// TODO() +// } +// +// override fun accept(visitor: Btor2NodeVisitor, param : P): R { +// return visitor.visit(this, param) +// } +//} +// +//data class Btor2Output(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) +//{ +// override fun getVar(): VarDecl<*>? { +// return null +// } +// +// override fun getExpr(): Expr<*> { +// TODO() +// } +// +// +// +// override fun accept(visitor: Btor2NodeVisitor, param : P): R { +// return visitor.visit(this, param) +// } +//} // 'justice' ()+ Szóval még hagyjuk <3 // TODO: justice //data class Btor2Justice(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index 1594eeff71..72b3247832 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -75,7 +75,7 @@ class StateVisitor : Btor2BaseVisitor() { Btor2Circuit.nodes[nid] = node return node } - +// Only adding bads override fun visitProperty(ctx: Btor2Parser.PropertyContext): Btor2Node { val nid = idVisitor.visit(ctx.id) val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 6e9d7045ab..d44c4f4d04 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -83,6 +83,7 @@ object Btor2XcfaBuilder{ procBuilder.createErrorLoc() // Errorkezelése // Egyzserű pédáink vannak tehát egyelőre csak bad van benne + //Több bad? Megkeressük az utolsó opeationt a bad előtt ás ha van Locja akkor abba belekötjük? val bad = Btor2Circuit.properties.values.first() procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(AssumeStmt.of(bad.getExpr())),EmptyMetaData)) From ad9c4a7f9b36a4018683d0e672bcc628f6c56599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sat, 12 Apr 2025 18:26:02 +0200 Subject: [PATCH 12/72] Btor2 config added --- .../java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 5 +++-- .../java/hu/bme/mit/theta/xcfa/cli/params/ParamValues.kt | 1 + .../java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt | 3 +++ .../java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt | 8 ++++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index d44c4f4d04..0708e5506e 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -12,7 +12,7 @@ import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.models.Btor2Operation import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager - +// TODO: check h növekvő sorrendben jöjjenek, főleg az opsban object Btor2XcfaBuilder{ fun btor2xcfa(circuit: Btor2Circuit) : XCFA { var i : Int = 1 @@ -83,7 +83,8 @@ object Btor2XcfaBuilder{ procBuilder.createErrorLoc() // Errorkezelése // Egyzserű pédáink vannak tehát egyelőre csak bad van benne - //Több bad? Megkeressük az utolsó opeationt a bad előtt ás ha van Locja akkor abba belekötjük? + // Több bad? Megkeressük az utolsó opeationt a bad előtt ás ha van Locja akkor abba belekötjük? + // CSak egy lesz -> Legyen hiba ha több a bad val bad = Btor2Circuit.properties.values.first() procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(AssumeStmt.of(bad.getExpr())),EmptyMetaData)) diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/ParamValues.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/ParamValues.kt index edd31d52f9..3e53971ae4 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/ParamValues.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/ParamValues.kt @@ -61,6 +61,7 @@ enum class InputType { CHC, LITMUS, CFA, + BTOR2, } enum class Backend { diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt index 8f79951a9f..69a64c9070 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt @@ -141,6 +141,7 @@ data class FrontendConfig( InputType.LITMUS -> null InputType.CFA -> null InputType.CHC -> CHCFrontendConfig() as T + InputType.BTOR2 -> BTOR2FrontendConfig as T } } } @@ -166,6 +167,8 @@ data class CHCFrontendConfig( var chcTransformation: ChcFrontend.ChcTransformation = ChcFrontend.ChcTransformation.PORTFOLIO ) : SpecFrontendConfig +object BTOR2FrontendConfig : SpecFrontendConfig + interface SpecBackendConfig : Config data class BackendConfig( diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index e6635d4bbd..0411616752 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -95,6 +95,10 @@ fun getXcfa( } } } + + InputType.BTOR2 -> { + TODO("Not yet implemented") + } } } catch (e: Exception) { if (config.debugConfig.stacktrace) e.printStackTrace() @@ -221,3 +225,7 @@ private fun parseChc( } return xcfaBuilder.build() } + +private fun parseBTOR2(input: File) : XCFA { + TODO("Not yet implemented") +} \ No newline at end of file From 15fa41c89403ecbfcef6f61ae05fa97122177b54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 15 Apr 2025 13:05:44 +0200 Subject: [PATCH 13/72] Checks added --- .../mit/theta/frontend/models/Btor2Model.kt | 2 +- .../theta/frontend/models/Btor2Properties.kt | 74 +------------------ .../frontend/visitors/ConstantVisitor.kt | 1 + .../Btor2XcfaBuilder.kt | 19 +++-- 4 files changed, 14 insertions(+), 82 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 9a211ea452..d04fbd12a1 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -19,7 +19,7 @@ package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.type.Expr -public interface Btor2NodeVisitor { +interface Btor2NodeVisitor { fun visit(node: Btor2UnaryOperation, param: P) : R fun visit(node: Btor2BinaryOperation, param: P) : R fun visit(node: Btor2TernaryOperation, param: P) : R diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 3fbf7c5ca9..235e7271ba 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -28,10 +28,6 @@ import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.core.type.bvtype.BvType -//abstract class Btor2Properties(override val nid: UInt, override val sort: Btor2Sort?, open val operand: Btor2Node) : Btor2Node(nid, null) -//{ -// -//} data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) { override fun getVar(): VarDecl<*>? { @@ -45,72 +41,4 @@ data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val o override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } -} -// -//data class Btor2Constraint(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) -//{ -// override fun getVar(): VarDecl<*>? { -// return null -// } -// -// override fun getExpr(): Expr<*> { -// TODO() -// } -// -// -// override fun accept(visitor: Btor2NodeVisitor, param : P): R { -// return visitor.visit(this, param) -// } -//} -// -//data class Btor2Fair(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) -//{ -// override fun getVar(): VarDecl<*>? { -// return null -// } -// -// override fun getExpr(): Expr<*> { -// TODO() -// } -// -// override fun accept(visitor: Btor2NodeVisitor, param : P): R { -// return visitor.visit(this, param) -// } -//} -// -//data class Btor2Output(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) -//{ -// override fun getVar(): VarDecl<*>? { -// return null -// } -// -// override fun getExpr(): Expr<*> { -// TODO() -// } -// -// -// -// override fun accept(visitor: Btor2NodeVisitor, param : P): R { -// return visitor.visit(this, param) -// } -//} -// 'justice' ()+ Szóval még hagyjuk <3 -// TODO: justice -//data class Btor2Justice(override val nid: UInt, override val sort: Btor2Sort?, override val operand: Btor2Node) : Btor2Properties(nid, null, operand) -//{ -// override fun getVar(): VarDecl<*>? { -// return null -// } -// -// override fun getExpr(): Expr<*> { -// TODO() -// } -// -// override fun getExpr(negate: Boolean): Expr<*>? { -// TODO() -// } -// -// override fun accept(visitor: Btor2NodeVisitor, param : P): R { -// return visitor.visit(this, param) -// } -//} \ No newline at end of file +} \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt index 5d80c0a232..6c8b3513c5 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -50,6 +50,7 @@ class ConstantVisitor : Btor2BaseVisitor() { } } var node = Btor2Const(nid, value, sort) + Btor2Circuit.constants[nid] = node Btor2Circuit.nodes[nid] = node return node } diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 0708e5506e..100f5ae4c2 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -12,9 +12,19 @@ import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.models.Btor2Operation import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager -// TODO: check h növekvő sorrendben jöjjenek, főleg az opsban object Btor2XcfaBuilder{ fun btor2xcfa(circuit: Btor2Circuit) : XCFA { + // checks fontos: nodes, ops, properties csak 1 legyen + check(Btor2Circuit.properties.size == 1, { "More than 1 bad isn't allowed" }) + val ops = Btor2Circuit.ops.values.toList() + for(i in 1 until ops.size) { + check(ops[i].nid > ops[i - 1].nid, { "Ops are not in increasing order" }) + } + val nodes = Btor2Circuit.nodes.values.toList() + for(i in 1 until nodes.size) { + check(nodes[i].nid > nodes[i - 1].nid, { "Nodes are not in increasing order" }) + } + var i : Int = 1 val xcfaBuilder = XcfaBuilder("Btor2XCFA") val procBuilder = XcfaProcedureBuilder("main", Btor2Pass()) @@ -37,9 +47,7 @@ object Btor2XcfaBuilder{ if(varDecl.name.startsWith(("init_"))){ val edge = XcfaEdge(lastLoc,newLoc, StmtLabel(AssignStmt.of(it.value.state?.getVar(), it.value.value?.getExpr() as Expr)), EmptyMetaData) procBuilder.addEdge(edge) - // Amit tudunk 1 élre helyezzük, tehát az első élen vannak az initek - //lastLoc=loc } } } @@ -66,10 +74,6 @@ object Btor2XcfaBuilder{ ///////////////////////////////////////////// // Végigmegyünk az operationökön - // Check: Kigyűjtöm a feldolgozott node idkat akár itt v korábban,, - // Megfelelő sorrendben kell belerakni - // Gyors check h feldolgozotak között van e és hibával elszállunk ha nem - // az operandusainak a nid-jeire kell a check Btor2Circuit.ops.forEach() { val loc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) @@ -83,7 +87,6 @@ object Btor2XcfaBuilder{ procBuilder.createErrorLoc() // Errorkezelése // Egyzserű pédáink vannak tehát egyelőre csak bad van benne - // Több bad? Megkeressük az utolsó opeationt a bad előtt ás ha van Locja akkor abba belekötjük? // CSak egy lesz -> Legyen hiba ha több a bad val bad = Btor2Circuit.properties.values.first() From 73ff08f3028dd7d9654e9d0fc55c9d8e2d8c490d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 15 Apr 2025 13:22:10 +0200 Subject: [PATCH 14/72] Run config added --- subprojects/xcfa/xcfa-cli/build.gradle.kts | 2 + .../mit/theta/xcfa/cli/utils/XcfaParser.kt | 37 +++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/subprojects/xcfa/xcfa-cli/build.gradle.kts b/subprojects/xcfa/xcfa-cli/build.gradle.kts index 1542a77594..e51df9c63e 100644 --- a/subprojects/xcfa/xcfa-cli/build.gradle.kts +++ b/subprojects/xcfa/xcfa-cli/build.gradle.kts @@ -46,6 +46,8 @@ dependencies { implementation(files(rootDir.resolve(Deps.z3legacy))) implementation("com.zaxxer:nuprocess:2.0.5") implementation("org.jetbrains.kotlin:kotlin-scripting-jsr223:${Versions.kotlin}") + implementation(project(mapOf("path" to ":theta-btor2-frontend"))) + implementation(project(mapOf("path" to ":theta-btor2xcfa"))) testImplementation(kotlin("script-runtime")) } diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index 0411616752..7473757003 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -15,15 +15,21 @@ */ package hu.bme.mit.theta.xcfa.cli.utils +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Lexer +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.btor2xcfa.Btor2XcfaBuilder import hu.bme.mit.theta.c2xcfa.getXcfaFromC import hu.bme.mit.theta.cfa.CFA import hu.bme.mit.theta.cfa.dsl.CfaDslManager +import hu.bme.mit.theta.common.logging.ConsoleLogger import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.chc.ChcFrontend import hu.bme.mit.theta.frontend.litmus2xcfa.LitmusInterpreter +import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.transformation.ArchitectureConfig import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait +import hu.bme.mit.theta.frontend.visitors.Btor2Visitor import hu.bme.mit.theta.llvm2xcfa.ArithmeticType import hu.bme.mit.theta.llvm2xcfa.XcfaUtils import hu.bme.mit.theta.xcfa.analysis.ErrorDetection @@ -34,6 +40,7 @@ import hu.bme.mit.theta.xcfa.cli.params.XcfaConfig import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.ChcPasses import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager +import org.antlr.v4.runtime.BailErrorStrategy import java.io.File import java.io.FileInputStream import java.io.FileReader @@ -42,6 +49,7 @@ import javax.script.ScriptEngineManager import kotlin.jvm.optionals.getOrNull import kotlin.system.exitProcess import org.antlr.v4.runtime.CharStreams +import org.antlr.v4.runtime.CommonTokenStream fun getXcfa( config: XcfaConfig<*, *>, @@ -97,7 +105,11 @@ fun getXcfa( } InputType.BTOR2 -> { - TODO("Not yet implemented") + parseBTOR2( + config.inputConfig.input!!, + logger, + uniqueWarningLogger, + ) } } } catch (e: Exception) { @@ -226,6 +238,25 @@ private fun parseChc( return xcfaBuilder.build() } -private fun parseBTOR2(input: File) : XCFA { - TODO("Not yet implemented") +private fun parseBTOR2( + input: File, + logger: Logger, + uniqueWarningLogger: Logger +) : XCFA { + val visitor = Btor2Visitor() + val btor2File = input + + val input = btor2File.readLines().joinToString("\n") + val cinput = CharStreams.fromString(input) + val lexer = Btor2Lexer(cinput) + val tokens = CommonTokenStream(lexer) + val parser = Btor2Parser(tokens) + parser.errorHandler = BailErrorStrategy() + val context = parser.btor2() + + context.accept(visitor) + + val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) + logger.write( Logger.Level.VERBOSE, "XCFA built, result: " + xcfa.toDot() + "\n") + return xcfa } \ No newline at end of file From 1f8300e6ac5715f9e9f52350fb0f6d8d9f68356a Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Tue, 15 Apr 2025 13:37:37 +0200 Subject: [PATCH 15/72] procedure to initial proc fix --- .../main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 100f5ae4c2..172b3001bc 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -28,7 +28,7 @@ object Btor2XcfaBuilder{ var i : Int = 1 val xcfaBuilder = XcfaBuilder("Btor2XCFA") val procBuilder = XcfaProcedureBuilder("main", Btor2Pass()) - xcfaBuilder.addProcedure(procBuilder) + xcfaBuilder.addEntryPoint(procBuilder, emptyList()) procBuilder.createInitLoc() Btor2Circuit.nodes.forEach() { From bab1bc3b5412bb858544490e3df72a88f7958cba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Thu, 8 May 2025 20:29:33 +0200 Subject: [PATCH 16/72] Added more resources and minuses --- .../btor2-frontend/src/main/antlr/Btor2.g4 | 4 +- .../theta/frontend/models/Btor2Operation.kt | 49 +++-- .../frontend/visitors/OperationVisitor.kt | 22 +-- .../btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 2 +- .../adding.1.prop1-back-serstep.btor2 | 179 ++++++++++++++++++ .../src/test/resources/bv_debug_0.btor2 | 70 +++++++ .../src/test/resources/bv_debug_1.btor2 | 70 +++++++ .../src/test/resources/bv_debug_2.btor2 | 55 ++++++ .../src/test/resources/bv_debug_3.btor2 | 45 +++++ .../src/test/resources/bv_debug_4.btor2 | 52 +++++ .../src/test/resources/bv_debug_5.btor2 | 54 ++++++ .../src/test/resources/bv_debug_6.btor2 | 48 +++++ .../mit/theta/xcfa/cli/utils/XcfaParser.kt | 6 +- 13 files changed, 614 insertions(+), 42 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_0.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_1.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_2.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_3.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_4.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_5.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_6.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index 6a39c51104..683a5d5491 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -46,9 +46,9 @@ slice: id=nid 'slice' sid opd1=nid u=NUM l=NUM; op: binop | unop | terop; -binop: id=nid BINOP sid opd1=nid opd2=nid; +binop: id=nid BINOP sid (MINUS)? opd1=nid (MINUS)? opd2=nid; unop: id=nid UNARYOP sid opd1=nid; -terop: id=nid TERNARYOP sid opd1=nid opd2=nid opd3=nid; +terop: id=nid TERNARYOP sid (MINUS)? opd1=nid opd2=nid opd3=nid; input: id=nid ('input') sid; diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 1aba2b4e9f..f387879f06 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -105,7 +105,7 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 } } -data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2BinaryOperator, val op1: Btor2Node, val op2: Btor2Node) : Btor2Operation(nid, sort) +data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2BinaryOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) { val value = Decls.Var("binary_$nid", BvExprs.BvType(sort.width.toInt())) @@ -114,21 +114,23 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor } override fun getExpr(): Expr<*> { + val op1_expr = if (opd1_negated) BvNegExpr.of(op1.getExpr() as Expr) else op1.getExpr() as Expr + val op2_expr = if (opd2_negated) BvNegExpr.of(op2.getExpr() as Expr) else op2.getExpr() as Expr return when(operator) { - Btor2BinaryOperator.ADD -> BvAddExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) - Btor2BinaryOperator.AND -> BvAndExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) - Btor2BinaryOperator.NAND -> NotExpr.of(BvAndExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) as Expr) - Btor2BinaryOperator.NOR -> NotExpr.of(BvOrExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) as Expr) - Btor2BinaryOperator.OR -> BvOrExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) - Btor2BinaryOperator.XOR -> BvXorExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) - Btor2BinaryOperator.MUL -> BvMulExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) - Btor2BinaryOperator.UDIV -> BvUDivExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) - Btor2BinaryOperator.UREM -> BvURemExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) - Btor2BinaryOperator.SDIV -> BvSDivExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) - Btor2BinaryOperator.SREM -> BvSRemExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) - Btor2BinaryOperator.SMOD -> BvSModExpr.of(op1.getExpr() as Expr, op2.getExpr() as Expr) - Btor2BinaryOperator.CONCAT -> BvConcatExpr.of(mutableListOf(op1.getExpr() as Expr, op2.getExpr() as Expr)) + Btor2BinaryOperator.ADD -> BvAddExpr.of(mutableListOf(op1_expr, op2_expr)) + Btor2BinaryOperator.AND -> BvAndExpr.of(mutableListOf(op1_expr, op2_expr)) + Btor2BinaryOperator.NAND -> NotExpr.of(BvAndExpr.of(mutableListOf(op1_expr, op2_expr)) as Expr) + Btor2BinaryOperator.NOR -> NotExpr.of(BvOrExpr.of(mutableListOf(op1_expr, op2_expr)) as Expr) + Btor2BinaryOperator.OR -> BvOrExpr.of(mutableListOf(op1_expr, op2_expr)) + Btor2BinaryOperator.XOR -> BvXorExpr.of(mutableListOf(op1_expr, op2_expr)) + Btor2BinaryOperator.MUL -> BvMulExpr.of(mutableListOf(op1_expr, op2_expr)) + Btor2BinaryOperator.UDIV -> BvUDivExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.UREM -> BvURemExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.SDIV -> BvSDivExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.SREM -> BvSRemExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.SMOD -> BvSModExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.CONCAT -> BvConcatExpr.of(mutableListOf(op1_expr, op2_expr)) Btor2BinaryOperator.SADDO -> TODO() Btor2BinaryOperator.SDIVO -> TODO() Btor2BinaryOperator.SMULO -> TODO() @@ -182,7 +184,7 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor } } -data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2ComparisonOperator, val op1: Btor2Node, val op2: Btor2Node) : Btor2Operation(nid, sort) +data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2ComparisonOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) { val value = Decls.Var("comparison_$nid", BvExprs.BvType(sort.width.toInt())) @@ -191,11 +193,13 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort } override fun getExpr(): Expr<*> { + val op1_expr = if (opd1_negated) BvNegExpr.of(op1.getExpr() as Expr) else op1.getExpr() as Expr + val op2_expr = if (opd2_negated) BvNegExpr.of(op2.getExpr() as Expr) else op2.getExpr() as Expr return when(operator) { - Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1.getExpr() as Expr , op2.getExpr()as Expr) - Btor2ComparisonOperator.NEQ -> BvNeqExpr.of(op1.getExpr() as Expr , op2.getExpr()as Expr) - Btor2ComparisonOperator.SLT -> BvSLtExpr.of(op1.getExpr() as Expr , op2.getExpr()as Expr) + Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1_expr , op2_expr) + Btor2ComparisonOperator.NEQ -> BvNeqExpr.of(op1_expr , op2_expr) + Btor2ComparisonOperator.SLT -> BvSLtExpr.of(op1_expr , op2_expr) Btor2ComparisonOperator.SLTE -> TODO() Btor2ComparisonOperator.SGT -> TODO() Btor2ComparisonOperator.SGTE -> TODO() @@ -238,13 +242,8 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor } override fun getExpr(): Expr<*> { - val op1_expr : Expr - if (negated) { - op1_expr = NotExpr.of(op1.getExpr() as Expr) - } - else { - op1_expr = op1.getExpr() as Expr - } + val op1_expr = if (negated) NotExpr.of(op1.getExpr() as Expr) else op1.getExpr() as Expr + return when(operator) { Btor2TernaryOperator.ITE -> IteExpr.of(op1_expr, op2.getExpr() as Expr, op3.getExpr() as Expr) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 146e722715..3e499a066e 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -63,8 +63,14 @@ class OperationVisitor : Btor2BaseVisitor() { val sid = idVisitor.visit(ctx.sid()) val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - val opd1 = nodes[ctx.opd1.text.toUInt()] as Btor2Node - val opd2 = nodes[ctx.opd2.text.toUInt()] as Btor2Node + val opd1_id = ctx.opd1.text.toInt() + val opd2_id = ctx.opd2.text.toInt() + + val opd1_negated = opd1_id < 0 + val opd2_negated = opd2_id < 0 + + val opd1 = nodes[opd1_id.toUInt()] as Btor2Node + val opd2 = nodes[opd2_id.toUInt()] as Btor2Node val op = when (ctx.BINOP().text) { "and" -> Btor2BinaryOperator.AND @@ -92,12 +98,12 @@ class OperationVisitor : Btor2BaseVisitor() { else -> throw RuntimeException("Binary operator unknown") } if (op is Btor2ComparisonOperator) { - val node = Btor2Comparison(nid, sort, op, opd1, opd2) + val node = Btor2Comparison(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) Btor2Circuit.nodes[nid] = node return node } else if (op is Btor2BinaryOperator) { - val node = Btor2BinaryOperation(nid, sort, op, opd1, opd2) + val node = Btor2BinaryOperation(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) Btor2Circuit.nodes[nid] = node Btor2Circuit.ops[nid] = node return node @@ -133,18 +139,12 @@ class OperationVisitor : Btor2BaseVisitor() { val nid = idVisitor.visit(ctx.id) val sid = idVisitor.visit(ctx.sid()) val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - val negated : Boolean val op = when (ctx.TERNARYOP().text) { "ite" -> Btor2TernaryOperator.ITE "write" -> Btor2TernaryOperator.WRITE else -> throw RuntimeException("Ternary operator unknown") } - if (ctx.opd1.text.toInt() < 0) { - negated = true - } - else { - negated = false - } + val negated = ctx.opd1.text.toInt() < 0 val opd1 = nodes[ctx.opd1.text.toUInt()] as Btor2Node val opd2 = nodes[ctx.opd2.text.toUInt()] as Btor2Node diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index 10ad0e754b..58837a9956 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -33,7 +33,7 @@ class TestBtor2Xcfa { fun testBtor2Xcfa() { val logger = ConsoleLogger(Logger.Level.VERBOSE) val visitor = Btor2Visitor() - val btor2File = File("src/test/resources/count4.btor2") + val btor2File = File("src/test/resources/twocount2.btor2") val input = btor2File.readLines().joinToString("\n") val cinput = CharStreams.fromString(input) diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..235dcdd01d --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 @@ -0,0 +1,179 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 nextv_c +7 init 3 6 5 +8 state 3 nextv_x1 +9 init 3 8 5 +10 state 3 nextv_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 nexta_Q_a1 +14 init 1 13 12 +15 state 1 nexta_R_a1 +16 init 1 15 12 +17 state 1 nexta_S_a1 +18 init 1 17 12 +19 state 1 nexta_Q_a2 +20 init 1 19 12 +21 state 1 nexta_R_a2 +22 init 1 21 12 +23 state 1 nexta_S_a2 +24 init 1 23 12 +25 state 1 dve_initialized +26 init 1 25 12 +27 state 1 dve_valid +28 init 1 27 12 +29 and 1 13 -15 +30 and 1 29 -17 +31 and 1 30 19 +32 and 1 31 -21 +33 and 1 32 -23 +34 constd 3 1 +35 eq 1 34 6 +36 and 1 33 35 +37 constd 3 0 +38 eq 1 37 8 +39 and 1 36 38 +40 eq 1 37 10 +41 and 1 39 40 +42 and 1 27 41 +43 bad 42 +44 input 3 v_c +45 next 3 6 44 +46 input 3 v_x1 +47 next 3 8 46 +48 input 3 v_x2 +49 next 3 10 48 +50 input 1 a_Q_a1 +51 next 1 13 50 +52 input 1 a_R_a1 +53 next 1 15 52 +54 input 1 a_S_a1 +55 next 1 17 54 +56 input 1 a_Q_a2 +57 next 1 19 56 +58 input 1 a_R_a2 +59 next 1 21 58 +60 input 1 a_S_a2 +61 next 1 23 60 +62 const 1 1 +63 next 1 25 62 +64 input 1 f0 +65 constd 4 20 +66 constd 3 0 +67 concat 4 44 66 +68 constd 4 16 +69 sra 4 67 68 +70 ulte 1 65 69 +71 and 1 50 -70 +72 or 1 -64 71 +73 or 1 52 64 +74 input 1 f1 +75 or 1 73 -74 +76 and 1 72 75 +77 or 1 54 74 +78 input 1 f2 +79 or 1 77 -78 +80 and 1 76 79 +81 input 1 f3 +82 ite 3 64 44 46 +83 concat 4 82 66 +84 sra 4 83 68 +85 add 4 69 84 +86 slice 3 85 15 0 +87 ite 3 74 86 82 +88 ite 3 78 87 44 +89 concat 4 88 66 +90 sra 4 89 68 +91 ulte 1 65 90 +92 and 1 56 -91 +93 or 1 -81 92 +94 and 1 80 93 +95 or 1 58 81 +96 input 1 f4 +97 or 1 95 -96 +98 and 1 94 97 +99 or 1 60 96 +100 input 1 f5 +101 or 1 99 -100 +102 and 1 98 101 +103 or 1 64 74 +104 or 1 78 103 +105 or 1 81 104 +106 or 1 96 105 +107 or 1 100 106 +108 and 1 102 107 +109 and 1 50 52 +110 or 1 50 52 +111 and 1 54 110 +112 or 1 109 111 +113 or 1 54 110 +114 and 1 -112 113 +115 and 1 56 58 +116 or 1 56 58 +117 and 1 60 116 +118 or 1 115 117 +119 and 1 114 -118 +120 or 1 60 116 +121 and 1 119 120 +122 and 1 108 121 +123 and 1 73 -74 +124 and 1 50 -64 +125 or 1 124 78 +126 and 1 123 125 +127 and 1 77 -78 +128 or 1 123 125 +129 and 1 127 128 +130 or 1 126 129 +131 or 1 127 128 +132 and 1 -130 131 +133 and 1 95 -96 +134 and 1 56 -81 +135 or 1 134 100 +136 and 1 133 135 +137 and 1 99 -100 +138 or 1 133 135 +139 and 1 137 138 +140 or 1 136 139 +141 and 1 132 -140 +142 or 1 137 138 +143 and 1 141 142 +144 and 1 122 143 +145 ite 3 81 88 48 +146 concat 4 145 66 +147 sra 4 146 68 +148 add 4 90 147 +149 slice 3 148 15 0 +150 ite 3 96 149 145 +151 ite 3 100 150 88 +152 eq 1 151 6 +153 and 1 144 152 +154 eq 1 87 8 +155 and 1 153 154 +156 eq 1 150 10 +157 and 1 155 156 +158 eq 1 125 13 +159 and 1 157 158 +160 eq 1 123 15 +161 and 1 159 160 +162 eq 1 127 17 +163 and 1 161 162 +164 eq 1 135 19 +165 and 1 163 164 +166 eq 1 133 21 +167 and 1 165 166 +168 eq 1 137 23 +169 and 1 167 168 +170 and 1 169 27 +171 constd 4 17 +172 eq 1 171 69 +173 ite 1 25 170 172 +174 next 1 27 173 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_0.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_0.btor2 new file mode 100644 index 0000000000..8aab7f1cf3 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_0.btor2 @@ -0,0 +1,70 @@ +; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) +; seed for random number: 0 +; maximal depth of syntax trees: 4 +; number of bit-vector state variables: 3 +; number of array state variables: 0 +; maximum number of input variables: 3 +; number of bad properties: 1 +; number of constraints: 1 +; candidate sizes: 1 2 3 4 5 6 7 8 +1 sort bitvec 1 +2 sort bitvec 6 +3 sort bitvec 4 +4 ones 3 +5 redxor 1 4 +6 one 2 +7 constd 2 18 +8 xnor 2 6 7 +9 const 2 110100 +10 sdiv 2 6 9 +11 ite 2 -5 8 10 +12 consth 2 11 +13 not 2 12 +14 zero 2 +15 const 2 100010 +16 sub 2 14 15 +17 sll 2 13 16 +18 slt 1 11 17 +19 sort bitvec 3 +20 state 1 +21 srem 1 20 20 +22 add 1 20 21 +23 ones 19 +24 constd 19 0 +25 and 19 23 24 +26 xor 19 24 24 +27 xnor 19 25 26 +28 ite 19 22 27 23 +29 state 19 bv2_3 +30 consth 19 1 +31 xor 19 29 30 +32 srl 19 29 31 +33 const 2 101000 +34 slice 19 33 3 1 +35 ugt 1 32 34 +36 state 1 bv0_1 +37 init 1 36 35 +38 consth 1 1 +39 eq 1 38 20 +40 input 1 input0_1 +41 input 1 input1_1 +42 xor 1 38 41 +43 const 19 101 +44 sgt 1 43 29 +45 ite 1 40 42 44 +46 xor 1 39 45 +47 next 1 36 46 +48 init 1 20 18 +49 consth 2 01 +50 redxor 1 49 +51 sdiv 1 50 20 +52 next 1 20 51 +53 init 19 29 28 +54 input 19 input2_3 +55 srem 19 54 29 +56 srl 19 55 29 +57 xor 19 56 56 +58 next 19 29 57 +59 and 1 36 40 +60 bad 59 +61 constraint 46 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_1.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_1.btor2 new file mode 100644 index 0000000000..70085cfe16 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_1.btor2 @@ -0,0 +1,70 @@ +; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) +; seed for random number: 1 +; maximal depth of syntax trees: 4 +; number of bit-vector state variables: 3 +; number of array state variables: 0 +; maximum number of input variables: 3 +; number of bad properties: 1 +; number of constraints: 1 +; candidate sizes: 1 2 3 4 5 6 7 8 +1 sort bitvec 1 +2 sort bitvec 6 +3 sort bitvec 4 +4 ones 3 +5 redxor 1 4 +6 one 2 +7 constd 2 18 +8 xnor 2 6 7 +9 const 2 110100 +10 sdiv 2 6 9 +11 ite 2 -5 8 10 +12 consth 2 11 +13 not 2 12 +14 zero 2 +15 const 2 100010 +16 sub 2 14 15 +17 sll 2 13 16 +18 slt 1 11 17 +19 sort bitvec 3 +20 state 1 +21 srem 1 20 20 +22 add 1 20 21 +23 ones 19 +24 constd 19 0 +25 and 19 23 24 +26 xor 19 24 24 +27 xnor 19 25 26 +28 ite 19 22 27 23 +29 state 19 bv2_3 +30 consth 19 1 +31 xor 19 29 30 +32 srl 19 29 31 +33 const 2 101000 +34 slice 19 33 3 1 +35 ugt 1 32 34 +36 state 1 bv0_1 +37 init 1 36 35 +38 consth 1 1 +39 eq 1 38 20 +40 input 1 input0_1 +41 input 1 input1_1 +42 xor 1 38 41 +43 const 19 101 +44 sgt 1 43 29 +45 ite 1 40 42 44 +46 xor 1 39 45 +47 next 1 36 46 +48 init 1 20 18 +49 consth 2 01 +50 redxor 1 49 +51 sdiv 1 50 20 +52 next 1 20 51 +53 init 19 29 28 +54 input 19 input2_3 +55 srem 19 54 29 +56 srl 19 55 29 +57 xor 19 56 56 +58 next 19 29 57 +59 and 1 36 40 +60 bad 59 +61 constraint 46 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_2.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_2.btor2 new file mode 100644 index 0000000000..5797a648f0 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_2.btor2 @@ -0,0 +1,55 @@ +; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) +; seed for random number: 2 +; maximal depth of syntax trees: 4 +; number of bit-vector state variables: 3 +; number of array state variables: 0 +; maximum number of input variables: 3 +; number of bad properties: 1 +; number of constraints: 1 +; candidate sizes: 1 2 3 4 5 6 7 8 +1 sort bitvec 1 +2 sort bitvec 5 +3 const 2 00000 +4 one 1 +5 const 2 00001 +6 constd 2 9 +7 ite 2 4 5 6 +8 ugt 1 3 7 +9 redor 1 8 +10 sort bitvec 4 +11 state 1 bv0_1 +12 one 10 +13 const 10 0000 +14 ite 10 11 12 13 +15 sort bitvec 2 +16 ones 15 +17 one 15 +18 xor 15 16 17 +19 neg 15 18 +20 init 1 11 9 +21 input 15 input1_2 +22 state 15 bv1_2 +23 sdiv 15 21 22 +24 sra 15 22 21 +25 neq 1 23 24 +26 input 10 input2_4 +27 consth 1 1 +28 state 10 +29 ite 10 -27 28 28 +30 neq 1 26 29 +31 mul 1 25 30 +32 next 1 11 31 +33 init 15 22 19 +34 srl 15 22 17 +35 neg 15 34 +36 next 15 22 35 +37 init 10 28 14 +38 next 10 28 26 +39 input 1 input0_1 +40 sdiv 1 4 39 +41 srem 1 11 40 +42 neq 1 41 41 +43 bad 42 +44 not 1 40 +45 not 1 44 +46 constraint 45 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_3.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_3.btor2 new file mode 100644 index 0000000000..eb0d8c3422 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_3.btor2 @@ -0,0 +1,45 @@ +; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) +; seed for random number: 3 +; maximal depth of syntax trees: 4 +; number of bit-vector state variables: 3 +; number of array state variables: 0 +; maximum number of input variables: 3 +; number of bad properties: 1 +; number of constraints: 1 +; candidate sizes: 1 2 3 4 5 6 7 8 +1 sort bitvec 1 +2 zero 1 +3 one 1 +4 sra 1 3 3 +5 srem 1 2 4 +6 neq 1 3 2 +7 or 1 5 6 +8 sort bitvec 2 +9 constd 8 0 +10 consth 8 1 +11 sdiv 8 9 10 +12 sort bitvec 7 +13 constd 12 10 +14 const 12 1000011 +15 mul 12 13 14 +16 state 12 bv0_7 +17 init 12 16 15 +18 sort bitvec 5 +19 input 18 input2_5 +20 sra 18 19 19 +21 sext 12 20 2 +22 next 12 16 21 +23 state 8 +24 init 8 23 11 +25 next 8 23 23 +26 state 1 bv2_1 +27 init 1 26 7 +28 next 1 26 3 +29 input 12 input0_7 +30 sgte 1 16 29 +31 bad 30 +32 input 1 input1_1 +33 xnor 1 32 26 +34 sext 8 33 1 +35 slt 1 23 34 +36 constraint 35 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_4.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_4.btor2 new file mode 100644 index 0000000000..c86624fb36 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_4.btor2 @@ -0,0 +1,52 @@ +; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) +; seed for random number: 4 +; maximal depth of syntax trees: 4 +; number of bit-vector state variables: 3 +; number of array state variables: 0 +; maximum number of input variables: 3 +; number of bad properties: 1 +; number of constraints: 1 +; candidate sizes: 1 2 3 4 5 6 7 8 +1 sort bitvec 7 +2 consth 1 11 +3 sort bitvec 1 +4 sort bitvec 15 +5 ones 4 +6 zero 4 +7 consth 4 0101 +8 sra 4 6 7 +9 sgte 3 5 8 +10 sort bitvec 2 +11 constd 10 -1 +12 zero 10 +13 sdiv 10 11 12 +14 ulte 3 11 13 +15 srl 3 9 14 +16 sort bitvec 6 +17 const 16 000000 +18 const 16 101111 +19 sub 16 17 18 +20 state 16 bv0_6 +21 init 16 20 19 +22 input 16 input1_6 +23 udiv 16 20 22 +24 next 16 20 23 +25 state 3 bv1_1 +26 init 3 25 15 +27 zero 3 +28 input 3 input0_1 +29 srem 3 28 28 +30 and 3 27 29 +31 next 3 25 30 +32 state 1 +33 init 1 32 2 +34 neg 1 32 +35 urem 1 34 32 +36 xor 1 32 32 +37 or 1 35 36 +38 next 1 32 37 +39 uext 4 20 9 +40 not 4 39 +41 ulte 3 40 39 +42 bad 41 +43 constraint 30 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_5.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_5.btor2 new file mode 100644 index 0000000000..1f5211be35 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_5.btor2 @@ -0,0 +1,54 @@ +; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) +; seed for random number: 5 +; maximal depth of syntax trees: 4 +; number of bit-vector state variables: 3 +; number of array state variables: 0 +; maximum number of input variables: 3 +; number of bad properties: 1 +; number of constraints: 1 +; candidate sizes: 1 2 3 4 5 6 7 8 +1 sort bitvec 1 +2 one 1 +3 sort bitvec 5 +4 zero 1 +5 mul 1 2 4 +6 uext 3 5 4 +7 sort bitvec 6 +8 constd 7 -25 +9 consth 7 11 +10 sll 7 8 9 +11 constd 7 2 +12 xor 7 10 11 +13 const 7 000000 +14 const 7 111111 +15 or 7 13 14 +16 state 1 bv2_1 +17 sext 7 16 5 +18 mul 7 15 17 +19 and 7 12 18 +20 state 7 bv0_6 +21 init 7 20 19 +22 input 7 input2_6 +23 sll 7 22 22 +24 sll 7 22 20 +25 sll 7 23 24 +26 srl 7 22 25 +27 next 7 20 26 +28 state 3 bv1_5 +29 init 3 28 6 +30 sort bitvec 2 +31 zero 30 +32 sext 3 31 3 +33 next 3 28 32 +34 init 1 16 2 +35 input 1 +36 input 1 input1_1 +37 neg 1 36 +38 implies 1 35 37 +39 next 1 16 38 +40 bad 35 +41 add 7 9 20 +42 concat 7 36 28 +43 add 7 41 42 +44 redand 1 43 +45 constraint 44 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_6.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_6.btor2 new file mode 100644 index 0000000000..ee58b02d25 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_6.btor2 @@ -0,0 +1,48 @@ +; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) +; seed for random number: 6 +; maximal depth of syntax trees: 4 +; number of bit-vector state variables: 3 +; number of array state variables: 0 +; maximum number of input variables: 3 +; number of bad properties: 1 +; number of constraints: 1 +; candidate sizes: 1 2 3 4 5 6 7 8 +1 sort bitvec 8 +2 ones 1 +3 not 1 2 +4 constd 1 65 +5 or 1 3 4 +6 sort bitvec 7 +7 constd 6 -56 +8 one 6 +9 udiv 6 7 8 +10 sort bitvec 5 +11 consth 10 11 +12 constd 10 0 +13 sdiv 10 11 12 +14 zero 10 +15 and 10 14 12 +16 srem 10 14 12 +17 sdiv 10 15 16 +18 xnor 10 13 17 +19 state 10 bv0_5 +20 init 10 19 18 +21 next 10 19 19 +22 state 6 bv1_7 +23 init 6 22 9 +24 sub 6 22 22 +25 srl 6 24 24 +26 neg 6 25 +27 next 6 22 26 +28 state 1 bv2_8 +29 init 1 28 5 +30 input 1 input1_8 +31 mul 1 30 30 +32 next 1 28 31 +33 sort bitvec 1 +34 const 6 0101000 +35 ugte 33 34 34 +36 bad 35 +37 input 33 input0_1 +38 mul 33 37 37 +39 constraint 38 diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index 7473757003..eef1cd8572 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -246,8 +246,8 @@ private fun parseBTOR2( val visitor = Btor2Visitor() val btor2File = input - val input = btor2File.readLines().joinToString("\n") - val cinput = CharStreams.fromString(input) + val inputBTOR2 = btor2File.readLines().joinToString("\n") + val cinput = CharStreams.fromString(inputBTOR2) val lexer = Btor2Lexer(cinput) val tokens = CommonTokenStream(lexer) val parser = Btor2Parser(tokens) @@ -257,6 +257,6 @@ private fun parseBTOR2( context.accept(visitor) val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) - logger.write( Logger.Level.VERBOSE, "XCFA built, result: " + xcfa.toDot() + "\n") + logger.write( Logger.Level.MAINSTEP, "XCFA built, result: " + xcfa.toDot() + "\n") return xcfa } \ No newline at end of file From ad98e805860790e857d8dfaf10895c02ee9c2c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Fri, 9 May 2025 19:11:48 +0200 Subject: [PATCH 17/72] Minus still doesn't work --- subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 | 5 +++-- .../java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt | 4 ++++ subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index 683a5d5491..1ec40f9048 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -33,6 +33,7 @@ comment: COMMENT; nid: NUM; sid: NUM; +negNid: (MINUS)? value=nid; node: ( array_sort | bitvec_sort ) #sort // sort declaration | (input | state | init | next | property) #stateful @@ -46,9 +47,9 @@ slice: id=nid 'slice' sid opd1=nid u=NUM l=NUM; op: binop | unop | terop; -binop: id=nid BINOP sid (MINUS)? opd1=nid (MINUS)? opd2=nid; +binop: id=nid BINOP sid opd1=negNid opd2=negNid; unop: id=nid UNARYOP sid opd1=nid; -terop: id=nid TERNARYOP sid (MINUS)? opd1=nid opd2=nid opd3=nid; +terop: id=nid TERNARYOP sid opd1=negNid opd2=nid opd3=nid; input: id=nid ('input') sid; diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt index 70966e78e3..00cf9ef517 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt @@ -27,4 +27,8 @@ class IdVisitor : Btor2BaseVisitor() { override fun visitSid(ctx: Btor2Parser.SidContext): UInt { return ctx.NUM().text.toUInt() } + + override fun visitNegNid(ctx: Btor2Parser.NegNidContext): UInt { + return ctx.value.NUM().text.toUInt() + } } \ No newline at end of file diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index 58837a9956..1f2638f02a 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -33,7 +33,7 @@ class TestBtor2Xcfa { fun testBtor2Xcfa() { val logger = ConsoleLogger(Logger.Level.VERBOSE) val visitor = Btor2Visitor() - val btor2File = File("src/test/resources/twocount2.btor2") + val btor2File = File("src/test/resources/adding.1.prop1-back-serstep.btor2") val input = btor2File.readLines().joinToString("\n") val cinput = CharStreams.fromString(input) From 9b71fde365c6b095226e18cab2002203b91a8322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Mon, 12 May 2025 09:45:12 +0200 Subject: [PATCH 18/72] Added visitors and operations, still not working minuses --- .../btor2-frontend/src/main/antlr/Btor2.g4 | 9 ++- .../mit/theta/frontend/models/Btor2Const.kt | 56 ++++++++++++++++++- .../mit/theta/frontend/models/Btor2Model.kt | 6 +- .../theta/frontend/models/Btor2Operation.kt | 20 +++---- .../frontend/visitors/ConstantVisitor.kt | 39 +++++++++++-- .../mit/theta/frontend/visitors/IdVisitor.kt | 3 - .../frontend/visitors/OperationVisitor.kt | 32 ++++++++--- .../theta/frontend/visitors/StateVisitor.kt | 2 +- .../src/test/resources/cav14_example.btor2 | 38 +++++++++++++ 9 files changed, 169 insertions(+), 36 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/cav14_example.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index 1ec40f9048..6e26890d77 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -4,7 +4,7 @@ grammar Btor2; // Lexer rules WS: [ ]+ -> skip; -NUM: [0-9]+; +NUM: (MINUS)? [0-9]+; PLUS: '+'; MINUS: '-'; UNARYOP: 'not' @@ -33,7 +33,6 @@ comment: COMMENT; nid: NUM; sid: NUM; -negNid: (MINUS)? value=nid; node: ( array_sort | bitvec_sort ) #sort // sort declaration | (input | state | init | next | property) #stateful @@ -47,9 +46,9 @@ slice: id=nid 'slice' sid opd1=nid u=NUM l=NUM; op: binop | unop | terop; -binop: id=nid BINOP sid opd1=negNid opd2=negNid; +binop: id=nid BINOP sid opd1=nid opd2=nid; unop: id=nid UNARYOP sid opd1=nid; -terop: id=nid TERNARYOP sid opd1=negNid opd2=nid opd3=nid; +terop: id=nid TERNARYOP sid opd1=nid opd2=nid opd3=nid; input: id=nid ('input') sid; @@ -64,7 +63,7 @@ array_sort: id=sid 'sort array' sid1=sid sid2=sid; bitvec_sort: id=sid 'sort bitvec' width=NUM; constant: id=nid 'const' sid bin=NUM; -constant_d: id=nid 'constd' sid (MINUS)? dec=NUM; +constant_d: id=nid 'constd' sid dec=NUM; constant_h: id=nid 'consth' sid hex=SYMBOL; filled_constant: id=nid fill=('one' | 'ones' | 'zero') sid; diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt index 072c94138f..d56cef0d66 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt @@ -18,10 +18,23 @@ package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.LitExpr +import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.bvtype.BvLitExpr +import hu.bme.mit.theta.core.type.inttype.IntLitExpr -data class Btor2Const(override val nid: UInt, val value: BooleanArray, override val sort: Btor2Sort) : Btor2Node(nid, sort) -{ + +abstract class Btor2Const( + override val nid: UInt, + open val value: T, + override val sort: Btor2Sort +) : Btor2Node(nid, sort) + +data class Btor2Const_b( + override val nid: UInt, + override val value: BooleanArray, + override val sort: Btor2Sort +) : Btor2Const(nid, value, sort) { override fun getVar(): VarDecl<*>? { return null } @@ -30,6 +43,45 @@ data class Btor2Const(override val nid: UInt, val value: BooleanArray, override return BvLitExpr.of(value) } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} + +data class Btor2Const_d( + override val nid: UInt, + override val value: Int, + override val sort: Btor2Sort +) : Btor2Const(nid, value, sort) +{ + override fun getVar(): VarDecl<*>? { + return null + } + + override fun getExpr(): Expr<*> { + return IntLitExpr.of(value.toBigInteger()) + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } +} + +data class Btor2Const_h( + override val nid: UInt, + override val value: String, + override val sort: Btor2Sort +) : Btor2Const(nid, value, sort) +{ + override fun getVar(): VarDecl<*>? { + return null + } + + override fun getExpr(): Expr<*> { + // return BvLitExpr.of(value) + TODO("Hexadecimal literal parsing not implemented") + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index d04fbd12a1..6611157718 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -26,20 +26,22 @@ interface Btor2NodeVisitor { fun visit(node: Btor2SliceOperation, param: P) : R fun visit(node: Btor2ExtOperation, param: P) : R fun visit(node: Btor2Comparison, param: P) : R - fun visit(node: Btor2Const, param: P) : R fun visit(node: Btor2BitvecSort, param: P) : R fun visit(node: Btor2Input, param: P) : R fun visit(node: Btor2State, param: P) : R fun visit(node: Btor2Init, param: P) : R fun visit(node: Btor2Next, param: P) : R fun visit(node: Btor2Bad, param: P) : R + fun visit(node: Btor2Const_d, param: P) : R + fun visit(node: Btor2Const_h, param: P) : R + fun visit(node: Btor2Const_b, param: P) : R } object Btor2Circuit { var nodes: MutableMap = mutableMapOf() var sorts: MutableMap = mutableMapOf() - var constants: MutableMap = mutableMapOf() + var constants: MutableMap> = mutableMapOf() var ops: MutableMap = mutableMapOf() var states: MutableMap = mutableMapOf() var properties : MutableMap = mutableMapOf() diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index f387879f06..3d76de2e07 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -138,11 +138,11 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.UADDO -> TODO() Btor2BinaryOperator.UMULO -> TODO() Btor2BinaryOperator.USUBO -> TODO() - Btor2BinaryOperator.ROL -> TODO() - Btor2BinaryOperator.ROR -> TODO() - Btor2BinaryOperator.SLL -> TODO() - Btor2BinaryOperator.SRA -> TODO() - Btor2BinaryOperator.SRL -> TODO() + Btor2BinaryOperator.ROL -> BvRotateLeftExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.ROR -> BvRotateRightExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.SLL -> BvLogicShiftRightExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.of(op1_expr, op2_expr) Btor2BinaryOperator.READ -> TODO() } } @@ -174,11 +174,11 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.UADDO -> TODO() Btor2BinaryOperator.UMULO -> TODO() Btor2BinaryOperator.USUBO -> TODO() - Btor2BinaryOperator.ROL -> TODO() - Btor2BinaryOperator.ROR -> TODO() - Btor2BinaryOperator.SLL -> TODO() - Btor2BinaryOperator.SRA -> TODO() - Btor2BinaryOperator.SRL -> TODO() + Btor2BinaryOperator.ROL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.ROR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SLL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SRA -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SRL -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.READ -> TODO() } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt index 6c8b3513c5..2d718d6505 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -21,14 +21,45 @@ import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts -class ConstantVisitor : Btor2BaseVisitor() { +class ConstantVisitor : Btor2BaseVisitor>() { val idVisitor = IdVisitor() - override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const { + override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const<*> { check(ctx.childCount==1) return this.visit(ctx.children[0]) } - override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { + + override fun visitConstant(ctx: Btor2Parser.ConstantContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = ctx.NUM().text.toInt() + val size = sort.width.toInt() + val bin_array = BooleanArray(size) { index -> + (value shr (size - 1 - index)) and 1 == 1 + } + var node = Btor2Const_b(nid, bin_array, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitConstant_d(ctx: Btor2Parser.Constant_dContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = ctx.NUM().text.toInt() + var node = Btor2Const_d(nid, value, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitConstant_h(ctx: Btor2Parser.Constant_hContext?): Btor2Const { + TODO() + } + + override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { val nid = idVisitor.visit(ctx.id) val sid = idVisitor.visit(ctx.sid()) val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort @@ -49,7 +80,7 @@ class ConstantVisitor : Btor2BaseVisitor() { throw RuntimeException("Constant with filler shorthand needs to be one/ones/zero") } } - var node = Btor2Const(nid, value, sort) + var node = Btor2Const_b(nid, value, sort) Btor2Circuit.constants[nid] = node Btor2Circuit.nodes[nid] = node return node diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt index 00cf9ef517..026695c020 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt @@ -28,7 +28,4 @@ class IdVisitor : Btor2BaseVisitor() { return ctx.NUM().text.toUInt() } - override fun visitNegNid(ctx: Btor2Parser.NegNidContext): UInt { - return ctx.value.NUM().text.toUInt() - } } \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 3e499a066e..3e2b1cd2e3 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -20,6 +20,7 @@ import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* import hu.bme.mit.theta.frontend.models.Btor2Circuit.nodes +import kotlin.math.abs class OperationVisitor : Btor2BaseVisitor() { val idVisitor = IdVisitor() @@ -69,8 +70,8 @@ class OperationVisitor : Btor2BaseVisitor() { val opd1_negated = opd1_id < 0 val opd2_negated = opd2_id < 0 - val opd1 = nodes[opd1_id.toUInt()] as Btor2Node - val opd2 = nodes[opd2_id.toUInt()] as Btor2Node + val opd1 = nodes[abs(opd1_id).toUInt()] as Btor2Node + val opd2 = nodes[abs(opd2_id).toUInt()] as Btor2Node val op = when (ctx.BINOP().text) { "and" -> Btor2BinaryOperator.AND @@ -78,6 +79,26 @@ class OperationVisitor : Btor2BaseVisitor() { "nor" -> Btor2BinaryOperator.NOR "or" -> Btor2BinaryOperator.OR "xor" -> Btor2BinaryOperator.XOR + "add" -> Btor2BinaryOperator.ADD + "mul" -> Btor2BinaryOperator.MUL + "udiv" -> Btor2BinaryOperator.UDIV + "urem" -> Btor2BinaryOperator.UREM + "sdiv" -> Btor2BinaryOperator.SDIV + "srem" -> Btor2BinaryOperator.SREM + "smod" -> Btor2BinaryOperator.SMOD + "concat" -> Btor2BinaryOperator.CONCAT + "saddo" -> Btor2BinaryOperator.SADDO + "sdivo" -> Btor2BinaryOperator.SDIVO + "smulo" -> Btor2BinaryOperator.SMULO + "ssubo" -> Btor2BinaryOperator.SSUBO + "uaddo" -> Btor2BinaryOperator.UADDO + "umulo" -> Btor2BinaryOperator.UMULO + "usubo" -> Btor2BinaryOperator.USUBO + "rol" -> Btor2BinaryOperator.ROL + "ror" -> Btor2BinaryOperator.ROR + "sll" -> Btor2BinaryOperator.SLL + "sra" -> Btor2BinaryOperator.SRA + "srl" -> Btor2BinaryOperator.SRL "eq" -> Btor2ComparisonOperator.EQ "neq" -> Btor2ComparisonOperator.NEQ "slt" -> Btor2ComparisonOperator.SLT @@ -88,13 +109,6 @@ class OperationVisitor : Btor2BaseVisitor() { "ulte" -> Btor2ComparisonOperator.ULTE "ugt" -> Btor2ComparisonOperator.UGT "ugte" -> Btor2ComparisonOperator.UGTE - "add" -> Btor2BinaryOperator.ADD - "mul" -> Btor2BinaryOperator.MUL - "udiv" -> Btor2BinaryOperator.UDIV - "urem" -> Btor2BinaryOperator.UREM - "sdiv" -> Btor2BinaryOperator.SDIV - "srem" -> Btor2BinaryOperator.SREM - "smod" -> Btor2BinaryOperator.SMOD else -> throw RuntimeException("Binary operator unknown") } if (op is Btor2ComparisonOperator) { diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index 72b3247832..8633b4e829 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -54,7 +54,7 @@ class StateVisitor : Btor2BaseVisitor() { val sort = Btor2Circuit.sorts[sid]!! val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State - val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Const + val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Const<*> check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/cav14_example.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/cav14_example.btor2 new file mode 100644 index 0000000000..0a806521fd --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/cav14_example.btor2 @@ -0,0 +1,38 @@ +; source: https://github.com/aman-goel/avr/tree/92362931700b66684418a991d018c9fbdbebc06f/tests +; BTOR description generated by Yosys 0.9+431 (git sha1 4a3b5437, clang 4.0.1-6 -fPIC -Os) for module main. +1 sort bitvec 1 +2 input 1 clk +3 sort bitvec 3 +4 const 3 000 +5 state 3 Y +6 init 3 5 4 +7 state 3 X +8 init 3 7 4 +9 ugt 1 5 7 +10 not 1 9 +11 not 1 10 +12 output 11 prop_neg +13 const 1 1 +14 not 1 10 +15 and 1 13 14 +16 bad 15 +17 uext 1 10 0 prop +18 ugt 1 5 7 +19 const 3 111 +20 neq 1 7 19 +21 or 1 18 20 +22 ite 3 21 5 7 +23 const 3 001 +24 add 3 5 23 +25 eq 1 5 7 +26 ite 3 25 24 22 +27 next 3 5 26 +28 add 3 7 23 +29 eq 1 5 7 +30 neq 1 7 19 +31 or 1 29 30 +32 ite 3 31 28 5 +33 ugt 1 5 7 +34 ite 3 33 7 32 +35 next 3 7 34 +; end of yosys output From bb7446a01320a37d3d1d1db4cc81c5fd3c381917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Mon, 12 May 2025 23:36:59 +0200 Subject: [PATCH 19/72] Binary operators working, comparison still not --- .../theta/frontend/models/Btor2Operation.kt | 60 ++++++++++--------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 3d76de2e07..934a875bd0 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -24,9 +24,12 @@ import hu.bme.mit.theta.core.stmt.Stmt import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.abstracttype.NegExpr import hu.bme.mit.theta.core.type.anytype.IteExpr +import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.booltype.BoolType import hu.bme.mit.theta.core.type.booltype.NotExpr import hu.bme.mit.theta.core.type.bvtype.* +import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg +import hu.bme.mit.theta.core.utils.TypeUtils.castBv abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) @@ -114,23 +117,24 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor } override fun getExpr(): Expr<*> { - val op1_expr = if (opd1_negated) BvNegExpr.of(op1.getExpr() as Expr) else op1.getExpr() as Expr - val op2_expr = if (opd2_negated) BvNegExpr.of(op2.getExpr() as Expr) else op2.getExpr() as Expr + val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else castBv(op1.getExpr()) + val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else castBv(op2.getExpr()) + return when(operator) { - Btor2BinaryOperator.ADD -> BvAddExpr.of(mutableListOf(op1_expr, op2_expr)) - Btor2BinaryOperator.AND -> BvAndExpr.of(mutableListOf(op1_expr, op2_expr)) - Btor2BinaryOperator.NAND -> NotExpr.of(BvAndExpr.of(mutableListOf(op1_expr, op2_expr)) as Expr) - Btor2BinaryOperator.NOR -> NotExpr.of(BvOrExpr.of(mutableListOf(op1_expr, op2_expr)) as Expr) - Btor2BinaryOperator.OR -> BvOrExpr.of(mutableListOf(op1_expr, op2_expr)) - Btor2BinaryOperator.XOR -> BvXorExpr.of(mutableListOf(op1_expr, op2_expr)) - Btor2BinaryOperator.MUL -> BvMulExpr.of(mutableListOf(op1_expr, op2_expr)) - Btor2BinaryOperator.UDIV -> BvUDivExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.UREM -> BvURemExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.SDIV -> BvSDivExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.SREM -> BvSRemExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.SMOD -> BvSModExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.CONCAT -> BvConcatExpr.of(mutableListOf(op1_expr, op2_expr)) + Btor2BinaryOperator.ADD -> BvAddExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.AND -> BvAndExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.NAND -> NotExpr.of(BvAndExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) as Expr) + Btor2BinaryOperator.NOR -> NotExpr.of(BvOrExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) as Expr) + Btor2BinaryOperator.OR -> BvOrExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.XOR -> BvXorExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.MUL -> BvMulExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.UDIV -> BvUDivExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.UREM -> BvURemExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SDIV -> BvSDivExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SREM -> BvSRemExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SMOD -> BvSModExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.CONCAT -> BvConcatExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) Btor2BinaryOperator.SADDO -> TODO() Btor2BinaryOperator.SDIVO -> TODO() Btor2BinaryOperator.SMULO -> TODO() @@ -138,11 +142,11 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.UADDO -> TODO() Btor2BinaryOperator.UMULO -> TODO() Btor2BinaryOperator.USUBO -> TODO() - Btor2BinaryOperator.ROL -> BvRotateLeftExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.ROR -> BvRotateRightExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.SLL -> BvLogicShiftRightExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr, op2_expr) - Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.of(op1_expr, op2_expr) + Btor2BinaryOperator.ROL -> BvRotateLeftExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.ROR -> BvRotateRightExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SLL -> BvLogicShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.READ -> TODO() } } @@ -193,19 +197,19 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort } override fun getExpr(): Expr<*> { - val op1_expr = if (opd1_negated) BvNegExpr.of(op1.getExpr() as Expr) else op1.getExpr() as Expr - val op2_expr = if (opd2_negated) BvNegExpr.of(op2.getExpr() as Expr) else op2.getExpr() as Expr + val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else op1.getExpr() as Expr + val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr return when(operator) { - Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1_expr , op2_expr) - Btor2ComparisonOperator.NEQ -> BvNeqExpr.of(op1_expr , op2_expr) - Btor2ComparisonOperator.SLT -> BvSLtExpr.of(op1_expr , op2_expr) + Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.NEQ -> BvNeqExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.SLT -> BvSLtExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2ComparisonOperator.SLTE -> TODO() - Btor2ComparisonOperator.SGT -> TODO() + Btor2ComparisonOperator.SGT -> BvSGtExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2ComparisonOperator.SGTE -> TODO() - Btor2ComparisonOperator.ULT -> TODO() + Btor2ComparisonOperator.ULT -> BvULtExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2ComparisonOperator.ULTE -> TODO() - Btor2ComparisonOperator.UGT -> TODO() + Btor2ComparisonOperator.UGT -> BvUGtExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2ComparisonOperator.UGTE -> TODO() } } From 72ffa5778e553d8acb2c09b8cc07c6cab60f759b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 13 May 2025 12:13:31 +0200 Subject: [PATCH 20/72] Constants have a problem --- .../java/hu/bme/mit/theta/frontend/models/Btor2Const.kt | 6 +++++- .../java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt index d56cef0d66..1b36e86227 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt @@ -59,7 +59,11 @@ data class Btor2Const_d( } override fun getExpr(): Expr<*> { - return IntLitExpr.of(value.toBigInteger()) + val size = sort.width.toInt() + val bin_array = BooleanArray(size) { index -> + (value shr (size - 1 - index)) and 1 == 1 + } + return BvLitExpr.of(bin_array) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 934a875bd0..cf1d53d9a6 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -28,6 +28,7 @@ import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.booltype.BoolType import hu.bme.mit.theta.core.type.booltype.NotExpr import hu.bme.mit.theta.core.type.bvtype.* +import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg import hu.bme.mit.theta.core.utils.TypeUtils.castBv @@ -117,8 +118,8 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor } override fun getExpr(): Expr<*> { - val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else castBv(op1.getExpr()) - val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else castBv(op2.getExpr()) + val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else op1.getExpr() as Expr + val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr return when(operator) { @@ -202,6 +203,7 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort return when(operator) { Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1_expr as Expr, op2_expr as Expr) + //Eq(op1_expr as RefExpr, op2_expr as RefExpr) Btor2ComparisonOperator.NEQ -> BvNeqExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2ComparisonOperator.SLT -> BvSLtExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2ComparisonOperator.SLTE -> TODO() From c0823febe6275d967f46155bd8c5326fbcbc8381 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Tue, 13 May 2025 12:24:55 +0200 Subject: [PATCH 21/72] create instead of of in getExpr in btor2 --- .../theta/frontend/models/Btor2Operation.kt | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index cf1d53d9a6..dae5ae03d7 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -123,19 +123,19 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor return when(operator) { - Btor2BinaryOperator.ADD -> BvAddExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.AND -> BvAndExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.NAND -> NotExpr.of(BvAndExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) as Expr) - Btor2BinaryOperator.NOR -> NotExpr.of(BvOrExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) as Expr) - Btor2BinaryOperator.OR -> BvOrExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.XOR -> BvXorExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.MUL -> BvMulExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.UDIV -> BvUDivExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.UREM -> BvURemExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SDIV -> BvSDivExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SREM -> BvSRemExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SMOD -> BvSModExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.CONCAT -> BvConcatExpr.of(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.NAND -> NotExpr.create(BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) as Expr) + Btor2BinaryOperator.NOR -> NotExpr.create(BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) as Expr) + Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.UREM -> BvURemExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) Btor2BinaryOperator.SADDO -> TODO() Btor2BinaryOperator.SDIVO -> TODO() Btor2BinaryOperator.SMULO -> TODO() @@ -143,11 +143,11 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.UADDO -> TODO() Btor2BinaryOperator.UMULO -> TODO() Btor2BinaryOperator.USUBO -> TODO() - Btor2BinaryOperator.ROL -> BvRotateLeftExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.ROR -> BvRotateRightExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SLL -> BvLogicShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SLL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.READ -> TODO() } } From f5b75b3bf51a62bda9016fa7946b4e86c343b636 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Tue, 13 May 2025 12:37:10 +0200 Subject: [PATCH 22/72] removed booltype, todo ite --- .../bme/mit/theta/frontend/models/Btor2Operation.kt | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index dae5ae03d7..78de1ab090 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -25,8 +25,6 @@ import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.abstracttype.NegExpr import hu.bme.mit.theta.core.type.anytype.IteExpr import hu.bme.mit.theta.core.type.anytype.RefExpr -import hu.bme.mit.theta.core.type.booltype.BoolType -import hu.bme.mit.theta.core.type.booltype.NotExpr import hu.bme.mit.theta.core.type.bvtype.* import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg @@ -125,8 +123,8 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor { Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.NAND -> NotExpr.create(BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) as Expr) - Btor2BinaryOperator.NOR -> NotExpr.create(BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) as Expr) + Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) + Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) @@ -247,12 +245,12 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor return value } - override fun getExpr(): Expr<*> { - val op1_expr = if (negated) NotExpr.of(op1.getExpr() as Expr) else op1.getExpr() as Expr + override fun getExpr(): Expr { + val op1Expr = if (negated) BvNotExpr.of(op1.getExpr() as Expr) else (op1.getExpr() as Expr) return when(operator) { - Btor2TernaryOperator.ITE -> IteExpr.of(op1_expr, op2.getExpr() as Expr, op3.getExpr() as Expr) + Btor2TernaryOperator.ITE -> TODO() // IteExpr.of(op1Expr, op2.getExpr() as Expr, op3.getExpr() as Expr) Btor2TernaryOperator.WRITE -> TODO() } } From 60ed341a0685d1c8f96e85edb7e2d556053f2823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 13 May 2025 12:39:14 +0200 Subject: [PATCH 23/72] Btor2Const reworked --- .../mit/theta/frontend/models/Btor2Const.kt | 56 +------------------ .../mit/theta/frontend/models/Btor2Model.kt | 6 +- .../frontend/visitors/ConstantVisitor.kt | 34 +++++++---- .../theta/frontend/visitors/StateVisitor.kt | 2 +- 4 files changed, 30 insertions(+), 68 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt index 1b36e86227..c0be2ddc97 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt @@ -23,18 +23,11 @@ import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.core.type.inttype.IntLitExpr - -abstract class Btor2Const( - override val nid: UInt, - open val value: T, - override val sort: Btor2Sort -) : Btor2Node(nid, sort) - -data class Btor2Const_b( +data class Btor2Const( override val nid: UInt, - override val value: BooleanArray, + val value: BooleanArray, override val sort: Btor2Sort -) : Btor2Const(nid, value, sort) { +) : Btor2Node(nid, sort){ override fun getVar(): VarDecl<*>? { return null } @@ -43,49 +36,6 @@ data class Btor2Const_b( return BvLitExpr.of(value) } - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } -} - -data class Btor2Const_d( - override val nid: UInt, - override val value: Int, - override val sort: Btor2Sort -) : Btor2Const(nid, value, sort) -{ - override fun getVar(): VarDecl<*>? { - return null - } - - override fun getExpr(): Expr<*> { - val size = sort.width.toInt() - val bin_array = BooleanArray(size) { index -> - (value shr (size - 1 - index)) and 1 == 1 - } - return BvLitExpr.of(bin_array) - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } -} - -data class Btor2Const_h( - override val nid: UInt, - override val value: String, - override val sort: Btor2Sort -) : Btor2Const(nid, value, sort) -{ - override fun getVar(): VarDecl<*>? { - return null - } - - override fun getExpr(): Expr<*> { - // return BvLitExpr.of(value) - TODO("Hexadecimal literal parsing not implemented") - } - override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 6611157718..eb038bd3f6 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -32,16 +32,14 @@ interface Btor2NodeVisitor { fun visit(node: Btor2Init, param: P) : R fun visit(node: Btor2Next, param: P) : R fun visit(node: Btor2Bad, param: P) : R - fun visit(node: Btor2Const_d, param: P) : R - fun visit(node: Btor2Const_h, param: P) : R - fun visit(node: Btor2Const_b, param: P) : R + fun visit(node: Btor2Const, param: P) : R } object Btor2Circuit { var nodes: MutableMap = mutableMapOf() var sorts: MutableMap = mutableMapOf() - var constants: MutableMap> = mutableMapOf() + var constants: MutableMap = mutableMapOf() var ops: MutableMap = mutableMapOf() var states: MutableMap = mutableMapOf() var properties : MutableMap = mutableMapOf() diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt index 2d718d6505..fdf7d51dd3 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -21,15 +21,15 @@ import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts -class ConstantVisitor : Btor2BaseVisitor>() { +class ConstantVisitor : Btor2BaseVisitor() { val idVisitor = IdVisitor() - override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const<*> { + override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const { check(ctx.childCount==1) return this.visit(ctx.children[0]) } - override fun visitConstant(ctx: Btor2Parser.ConstantContext): Btor2Const { + override fun visitConstant(ctx: Btor2Parser.ConstantContext): Btor2Const { val nid = idVisitor.visit(ctx.id) val sid = idVisitor.visit(ctx.sid()) val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort @@ -38,28 +38,42 @@ class ConstantVisitor : Btor2BaseVisitor>() { val bin_array = BooleanArray(size) { index -> (value shr (size - 1 - index)) and 1 == 1 } - var node = Btor2Const_b(nid, bin_array, sort) + var node = Btor2Const(nid, bin_array, sort) Btor2Circuit.constants[nid] = node Btor2Circuit.nodes[nid] = node return node } - override fun visitConstant_d(ctx: Btor2Parser.Constant_dContext): Btor2Const { + override fun visitConstant_d(ctx: Btor2Parser.Constant_dContext): Btor2Const { val nid = idVisitor.visit(ctx.id) val sid = idVisitor.visit(ctx.sid()) val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort val value = ctx.NUM().text.toInt() - var node = Btor2Const_d(nid, value, sort) + val size = sort.width.toInt() + val bin_array = BooleanArray(size) { index -> + (value shr (size - 1 - index)) and 1 == 1 + } + var node = Btor2Const(nid, bin_array, sort) Btor2Circuit.constants[nid] = node Btor2Circuit.nodes[nid] = node return node } - override fun visitConstant_h(ctx: Btor2Parser.Constant_hContext?): Btor2Const { - TODO() + override fun visitConstant_h(ctx: Btor2Parser.Constant_hContext): Btor2Const { + //val nid = idVisitor.visit(ctx.id) + //val sid = idVisitor.visit(ctx.sid()) + //val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + //val value = ctx.SYMBOL().toString() + //val size = sort.width.toInt() + + //var node = Btor2Const(nid, bin_array, sort) + //Btor2Circuit.constants[nid] = node + //Btor2Circuit.nodes[nid] = node + //return node + TODO("Hexa not yet implemented") } - override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { + override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { val nid = idVisitor.visit(ctx.id) val sid = idVisitor.visit(ctx.sid()) val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort @@ -80,7 +94,7 @@ class ConstantVisitor : Btor2BaseVisitor>() { throw RuntimeException("Constant with filler shorthand needs to be one/ones/zero") } } - var node = Btor2Const_b(nid, value, sort) + var node = Btor2Const(nid, value, sort) Btor2Circuit.constants[nid] = node Btor2Circuit.nodes[nid] = node return node diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index 8633b4e829..72b3247832 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -54,7 +54,7 @@ class StateVisitor : Btor2BaseVisitor() { val sort = Btor2Circuit.sorts[sid]!! val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State - val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Const<*> + val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Const check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) From 1a5701cc1fa273196ee3a199295f72ad1eae47ca Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Tue, 13 May 2025 13:04:17 +0200 Subject: [PATCH 24/72] package eqexpr in ite to make it bv --- .../theta/frontend/models/Btor2Operation.kt | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 78de1ab090..ad26862985 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -25,6 +25,7 @@ import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.abstracttype.NegExpr import hu.bme.mit.theta.core.type.anytype.IteExpr import hu.bme.mit.theta.core.type.anytype.RefExpr +import hu.bme.mit.theta.core.type.booltype.BoolType import hu.bme.mit.theta.core.type.bvtype.* import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg @@ -200,17 +201,19 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr return when(operator) { - Btor2ComparisonOperator.EQ -> BvEqExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.EQ -> IteExpr.of(BvEqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) //Eq(op1_expr as RefExpr, op2_expr as RefExpr) - Btor2ComparisonOperator.NEQ -> BvNeqExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.SLT -> BvSLtExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.SLTE -> TODO() - Btor2ComparisonOperator.SGT -> BvSGtExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.SGTE -> TODO() - Btor2ComparisonOperator.ULT -> BvULtExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.ULTE -> TODO() - Btor2ComparisonOperator.UGT -> BvUGtExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.UGTE -> TODO() + Btor2ComparisonOperator.NEQ -> BvNeqExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.SLT -> BvSLtExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.SLTE -> BvSLeqExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.SGT -> BvSGtExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.SGTE -> BvSGeqExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.ULT -> BvULtExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.ULTE -> BvULeqExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.UGT -> BvUGtExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.UGTE -> BvUGeqExpr.create(op1_expr as Expr, op2_expr as Expr) } } @@ -246,11 +249,11 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor } override fun getExpr(): Expr { - val op1Expr = if (negated) BvNotExpr.of(op1.getExpr() as Expr) else (op1.getExpr() as Expr) + val op1Expr = if (negated) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) return when(operator) { - Btor2TernaryOperator.ITE -> TODO() // IteExpr.of(op1Expr, op2.getExpr() as Expr, op3.getExpr() as Expr) + Btor2TernaryOperator.ITE -> IteExpr.of(op1Expr as Expr, op2.getExpr() as Expr, op3.getExpr() as Expr) Btor2TernaryOperator.WRITE -> TODO() } } From 56922520b89f006e6b37e1f9669f11a538c8e17c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Wed, 14 May 2025 18:43:09 +0200 Subject: [PATCH 25/72] If the types are bv why does it say it's not --- .../theta/frontend/models/Btor2Operation.kt | 49 +++-- .../frontend/visitors/OperationVisitor.kt | 4 +- .../adding.1.prop1-func-interl.btor2 | 144 ++++++++++++++ .../adding.2.prop1-back-serstep.btor2 | 179 ++++++++++++++++++ .../adding.2.prop1-func-interl.btor2 | 144 ++++++++++++++ .../adding.3.prop1-back-serstep.btor2 | 179 ++++++++++++++++++ .../adding.3.prop1-func-interl.btor2 | 144 ++++++++++++++ .../adding.4.prop1-back-serstep.btor2 | 179 ++++++++++++++++++ .../adding.4.prop1-func-interl.btor2 | 144 ++++++++++++++ .../adding.5.prop1-back-serstep.btor2 | 179 ++++++++++++++++++ .../adding.5.prop1-func-interl.btor2 | 144 ++++++++++++++ 11 files changed, 1473 insertions(+), 16 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-func-interl.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index ad26862985..84df955577 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -29,7 +29,9 @@ import hu.bme.mit.theta.core.type.booltype.BoolType import hu.bme.mit.theta.core.type.bvtype.* import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg +import hu.bme.mit.theta.core.type.inttype.IntLitExpr import hu.bme.mit.theta.core.utils.TypeUtils.castBv +import java.math.BigInteger abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) @@ -76,7 +78,8 @@ data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2So } override fun getExpr(): Expr<*> { - TODO("Not yet implemented") + //return BvExt + TODO() } override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) @@ -87,7 +90,7 @@ data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2So } } -data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val u : UInt, val l : UInt) : Btor2Operation(nid, sort) +data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val u : BigInteger, val l : BigInteger) : Btor2Operation(nid, sort) { val value = Decls.Var("slice_$nid", BvExprs.BvType(sort.width.toInt())) @@ -96,7 +99,7 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 } override fun getExpr(): Expr<*> { - TODO("Not yet implemented") + return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(u)) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -104,7 +107,7 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 } override fun getStmt(negate: Boolean): Stmt { - TODO("Not yet implemented") + return AssignStmt.of(value, getExpr() as Expr) } } @@ -144,7 +147,7 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.USUBO -> TODO() Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SLL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.READ -> TODO() @@ -205,15 +208,33 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false })) //Eq(op1_expr as RefExpr, op2_expr as RefExpr) - Btor2ComparisonOperator.NEQ -> BvNeqExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.SLT -> BvSLtExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.SLTE -> BvSLeqExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.SGT -> BvSGtExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.SGTE -> BvSGeqExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.ULT -> BvULtExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.ULTE -> BvULeqExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.UGT -> BvUGtExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2ComparisonOperator.UGTE -> BvUGeqExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2ComparisonOperator.NEQ -> IteExpr.of(BvNeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.SLT -> IteExpr.of(BvSLtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.SLTE -> IteExpr.of(BvSLeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.SGT -> IteExpr.of(BvSGtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.SGTE -> IteExpr.of(BvSGeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.ULT -> IteExpr.of(BvULtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.ULTE -> IteExpr.of(BvULeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.UGT -> IteExpr.of(BvUGtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.UGTE -> IteExpr.of(BvUGeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 3e2b1cd2e3..fdc1bbab2e 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -50,8 +50,8 @@ class OperationVisitor : Btor2BaseVisitor() { val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node - val u = ctx.u.text.toUInt() - val l = ctx.l.text.toUInt() + val u = ctx.u.text.toBigInteger() + val l = ctx.l.text.toBigInteger() val node = Btor2SliceOperation(nid, sort, opd, u, l) Btor2Circuit.nodes[nid] = node diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 new file mode 100644 index 0000000000..5b600358b7 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 @@ -0,0 +1,144 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 v_c +7 init 3 6 5 +8 state 3 v_x1 +9 init 3 8 5 +10 state 3 v_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 a_Q_a1 +14 init 1 13 12 +15 state 1 a_R_a1 +16 init 1 15 12 +17 state 1 a_S_a1 +18 init 1 17 12 +19 state 1 a_Q_a2 +20 init 1 19 12 +21 state 1 a_R_a2 +22 init 1 21 12 +23 state 1 a_S_a2 +24 init 1 23 12 +25 state 1 dve_invalid +26 init 1 25 12 +27 constd 4 17 +28 constd 3 1 +29 xor 3 28 6 +30 constd 3 0 +31 concat 4 29 30 +32 constd 4 16 +33 sra 4 31 32 +34 eq 1 27 33 +35 and 1 -25 34 +36 bad 35 +37 input 1 f5 +38 input 1 f2 +39 ite 3 38 8 29 +40 ite 3 37 10 39 +41 xor 3 28 40 +42 next 3 6 41 +43 input 1 f1 +44 concat 4 8 30 +45 sra 4 44 32 +46 add 4 33 45 +47 slice 3 46 15 0 +48 input 1 f0 +49 ite 3 48 29 8 +50 ite 3 43 47 49 +51 next 3 8 50 +52 input 1 f4 +53 concat 4 10 30 +54 sra 4 53 32 +55 add 4 33 54 +56 slice 3 55 15 0 +57 input 1 f3 +58 ite 3 57 29 10 +59 ite 3 52 56 58 +60 next 3 10 59 +61 and 1 -13 -48 +62 or 1 61 38 +63 next 1 13 -62 +64 or 1 15 48 +65 and 1 64 -43 +66 next 1 15 65 +67 or 1 17 43 +68 and 1 67 -38 +69 next 1 17 68 +70 and 1 -19 -57 +71 or 1 70 37 +72 next 1 19 -71 +73 or 1 21 57 +74 and 1 73 -52 +75 next 1 21 74 +76 or 1 23 52 +77 and 1 76 -37 +78 next 1 23 77 +79 constd 4 20 +80 ulte 1 79 33 +81 and 1 -13 -80 +82 or 1 -48 81 +83 or 1 15 -43 +84 and 1 82 83 +85 or 1 17 -38 +86 and 1 84 85 +87 and 1 -19 -80 +88 or 1 -57 87 +89 and 1 86 88 +90 or 1 21 -52 +91 and 1 89 90 +92 or 1 23 -37 +93 and 1 91 92 +94 or 1 48 43 +95 or 1 38 94 +96 or 1 57 95 +97 or 1 52 96 +98 or 1 37 97 +99 and 1 93 98 +100 and 1 48 43 +101 and 1 38 94 +102 or 1 100 101 +103 and 1 57 95 +104 or 1 102 103 +105 and 1 52 96 +106 or 1 104 105 +107 and 1 37 97 +108 or 1 106 107 +109 and 1 99 -108 +110 and 1 -13 15 +111 or 1 -13 15 +112 and 1 17 111 +113 or 1 110 112 +114 or 1 17 111 +115 and 1 -113 114 +116 and 1 -19 21 +117 or 1 -19 21 +118 and 1 23 117 +119 or 1 116 118 +120 and 1 115 -119 +121 or 1 23 117 +122 and 1 120 121 +123 and 1 109 122 +124 and 1 65 62 +125 or 1 65 62 +126 and 1 68 125 +127 or 1 124 126 +128 or 1 68 125 +129 and 1 -127 128 +130 and 1 74 71 +131 or 1 74 71 +132 and 1 77 131 +133 or 1 130 132 +134 and 1 129 -133 +135 or 1 77 131 +136 and 1 134 135 +137 and 1 123 136 +138 and 1 137 -25 +139 next 1 25 -138 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..1e26469619 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-back-serstep.btor2 @@ -0,0 +1,179 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 nextv_c +7 init 3 6 5 +8 state 3 nextv_x1 +9 init 3 8 5 +10 state 3 nextv_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 nexta_Q_a1 +14 init 1 13 12 +15 state 1 nexta_R_a1 +16 init 1 15 12 +17 state 1 nexta_S_a1 +18 init 1 17 12 +19 state 1 nexta_Q_a2 +20 init 1 19 12 +21 state 1 nexta_R_a2 +22 init 1 21 12 +23 state 1 nexta_S_a2 +24 init 1 23 12 +25 state 1 dve_initialized +26 init 1 25 12 +27 state 1 dve_valid +28 init 1 27 12 +29 and 1 13 -15 +30 and 1 29 -17 +31 and 1 30 19 +32 and 1 31 -21 +33 and 1 32 -23 +34 constd 3 1 +35 eq 1 34 6 +36 and 1 33 35 +37 constd 3 0 +38 eq 1 37 8 +39 and 1 36 38 +40 eq 1 37 10 +41 and 1 39 40 +42 and 1 27 41 +43 bad 42 +44 input 3 v_c +45 next 3 6 44 +46 input 3 v_x1 +47 next 3 8 46 +48 input 3 v_x2 +49 next 3 10 48 +50 input 1 a_Q_a1 +51 next 1 13 50 +52 input 1 a_R_a1 +53 next 1 15 52 +54 input 1 a_S_a1 +55 next 1 17 54 +56 input 1 a_Q_a2 +57 next 1 19 56 +58 input 1 a_R_a2 +59 next 1 21 58 +60 input 1 a_S_a2 +61 next 1 23 60 +62 const 1 1 +63 next 1 25 62 +64 input 1 f0 +65 constd 4 200 +66 constd 3 0 +67 concat 4 44 66 +68 constd 4 16 +69 sra 4 67 68 +70 ulte 1 65 69 +71 and 1 50 -70 +72 or 1 -64 71 +73 or 1 52 64 +74 input 1 f1 +75 or 1 73 -74 +76 and 1 72 75 +77 or 1 54 74 +78 input 1 f2 +79 or 1 77 -78 +80 and 1 76 79 +81 input 1 f3 +82 ite 3 64 44 46 +83 concat 4 82 66 +84 sra 4 83 68 +85 add 4 69 84 +86 slice 3 85 15 0 +87 ite 3 74 86 82 +88 ite 3 78 87 44 +89 concat 4 88 66 +90 sra 4 89 68 +91 ulte 1 65 90 +92 and 1 56 -91 +93 or 1 -81 92 +94 and 1 80 93 +95 or 1 58 81 +96 input 1 f4 +97 or 1 95 -96 +98 and 1 94 97 +99 or 1 60 96 +100 input 1 f5 +101 or 1 99 -100 +102 and 1 98 101 +103 or 1 64 74 +104 or 1 78 103 +105 or 1 81 104 +106 or 1 96 105 +107 or 1 100 106 +108 and 1 102 107 +109 and 1 50 52 +110 or 1 50 52 +111 and 1 54 110 +112 or 1 109 111 +113 or 1 54 110 +114 and 1 -112 113 +115 and 1 56 58 +116 or 1 56 58 +117 and 1 60 116 +118 or 1 115 117 +119 and 1 114 -118 +120 or 1 60 116 +121 and 1 119 120 +122 and 1 108 121 +123 and 1 73 -74 +124 and 1 50 -64 +125 or 1 124 78 +126 and 1 123 125 +127 and 1 77 -78 +128 or 1 123 125 +129 and 1 127 128 +130 or 1 126 129 +131 or 1 127 128 +132 and 1 -130 131 +133 and 1 95 -96 +134 and 1 56 -81 +135 or 1 134 100 +136 and 1 133 135 +137 and 1 99 -100 +138 or 1 133 135 +139 and 1 137 138 +140 or 1 136 139 +141 and 1 132 -140 +142 or 1 137 138 +143 and 1 141 142 +144 and 1 122 143 +145 ite 3 81 88 48 +146 concat 4 145 66 +147 sra 4 146 68 +148 add 4 90 147 +149 slice 3 148 15 0 +150 ite 3 96 149 145 +151 ite 3 100 150 88 +152 eq 1 151 6 +153 and 1 144 152 +154 eq 1 87 8 +155 and 1 153 154 +156 eq 1 150 10 +157 and 1 155 156 +158 eq 1 125 13 +159 and 1 157 158 +160 eq 1 123 15 +161 and 1 159 160 +162 eq 1 127 17 +163 and 1 161 162 +164 eq 1 135 19 +165 and 1 163 164 +166 eq 1 133 21 +167 and 1 165 166 +168 eq 1 137 23 +169 and 1 167 168 +170 and 1 169 27 +171 constd 4 500 +172 eq 1 171 69 +173 ite 1 25 170 172 +174 next 1 27 173 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-func-interl.btor2 new file mode 100644 index 0000000000..adc0ef1339 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-func-interl.btor2 @@ -0,0 +1,144 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 v_c +7 init 3 6 5 +8 state 3 v_x1 +9 init 3 8 5 +10 state 3 v_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 a_Q_a1 +14 init 1 13 12 +15 state 1 a_R_a1 +16 init 1 15 12 +17 state 1 a_S_a1 +18 init 1 17 12 +19 state 1 a_Q_a2 +20 init 1 19 12 +21 state 1 a_R_a2 +22 init 1 21 12 +23 state 1 a_S_a2 +24 init 1 23 12 +25 state 1 dve_invalid +26 init 1 25 12 +27 constd 4 500 +28 constd 3 1 +29 xor 3 28 6 +30 constd 3 0 +31 concat 4 29 30 +32 constd 4 16 +33 sra 4 31 32 +34 eq 1 27 33 +35 and 1 -25 34 +36 bad 35 +37 input 1 f5 +38 input 1 f2 +39 ite 3 38 8 29 +40 ite 3 37 10 39 +41 xor 3 28 40 +42 next 3 6 41 +43 input 1 f1 +44 concat 4 8 30 +45 sra 4 44 32 +46 add 4 33 45 +47 slice 3 46 15 0 +48 input 1 f0 +49 ite 3 48 29 8 +50 ite 3 43 47 49 +51 next 3 8 50 +52 input 1 f4 +53 concat 4 10 30 +54 sra 4 53 32 +55 add 4 33 54 +56 slice 3 55 15 0 +57 input 1 f3 +58 ite 3 57 29 10 +59 ite 3 52 56 58 +60 next 3 10 59 +61 and 1 -13 -48 +62 or 1 61 38 +63 next 1 13 -62 +64 or 1 15 48 +65 and 1 64 -43 +66 next 1 15 65 +67 or 1 17 43 +68 and 1 67 -38 +69 next 1 17 68 +70 and 1 -19 -57 +71 or 1 70 37 +72 next 1 19 -71 +73 or 1 21 57 +74 and 1 73 -52 +75 next 1 21 74 +76 or 1 23 52 +77 and 1 76 -37 +78 next 1 23 77 +79 constd 4 200 +80 ulte 1 79 33 +81 and 1 -13 -80 +82 or 1 -48 81 +83 or 1 15 -43 +84 and 1 82 83 +85 or 1 17 -38 +86 and 1 84 85 +87 and 1 -19 -80 +88 or 1 -57 87 +89 and 1 86 88 +90 or 1 21 -52 +91 and 1 89 90 +92 or 1 23 -37 +93 and 1 91 92 +94 or 1 48 43 +95 or 1 38 94 +96 or 1 57 95 +97 or 1 52 96 +98 or 1 37 97 +99 and 1 93 98 +100 and 1 48 43 +101 and 1 38 94 +102 or 1 100 101 +103 and 1 57 95 +104 or 1 102 103 +105 and 1 52 96 +106 or 1 104 105 +107 and 1 37 97 +108 or 1 106 107 +109 and 1 99 -108 +110 and 1 -13 15 +111 or 1 -13 15 +112 and 1 17 111 +113 or 1 110 112 +114 or 1 17 111 +115 and 1 -113 114 +116 and 1 -19 21 +117 or 1 -19 21 +118 and 1 23 117 +119 or 1 116 118 +120 and 1 115 -119 +121 or 1 23 117 +122 and 1 120 121 +123 and 1 109 122 +124 and 1 65 62 +125 or 1 65 62 +126 and 1 68 125 +127 or 1 124 126 +128 or 1 68 125 +129 and 1 -127 128 +130 and 1 74 71 +131 or 1 74 71 +132 and 1 77 131 +133 or 1 130 132 +134 and 1 129 -133 +135 or 1 77 131 +136 and 1 134 135 +137 and 1 123 136 +138 and 1 137 -25 +139 next 1 25 -138 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..34ac31f2c1 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 @@ -0,0 +1,179 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 nextv_c +7 init 3 6 5 +8 state 3 nextv_x1 +9 init 3 8 5 +10 state 3 nextv_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 nexta_Q_a1 +14 init 1 13 12 +15 state 1 nexta_R_a1 +16 init 1 15 12 +17 state 1 nexta_S_a1 +18 init 1 17 12 +19 state 1 nexta_Q_a2 +20 init 1 19 12 +21 state 1 nexta_R_a2 +22 init 1 21 12 +23 state 1 nexta_S_a2 +24 init 1 23 12 +25 state 1 dve_initialized +26 init 1 25 12 +27 state 1 dve_valid +28 init 1 27 12 +29 and 1 13 -15 +30 and 1 29 -17 +31 and 1 30 19 +32 and 1 31 -21 +33 and 1 32 -23 +34 constd 3 1 +35 eq 1 34 6 +36 and 1 33 35 +37 constd 3 0 +38 eq 1 37 8 +39 and 1 36 38 +40 eq 1 37 10 +41 and 1 39 40 +42 and 1 27 41 +43 bad 42 +44 input 3 v_c +45 next 3 6 44 +46 input 3 v_x1 +47 next 3 8 46 +48 input 3 v_x2 +49 next 3 10 48 +50 input 1 a_Q_a1 +51 next 1 13 50 +52 input 1 a_R_a1 +53 next 1 15 52 +54 input 1 a_S_a1 +55 next 1 17 54 +56 input 1 a_Q_a2 +57 next 1 19 56 +58 input 1 a_R_a2 +59 next 1 21 58 +60 input 1 a_S_a2 +61 next 1 23 60 +62 const 1 1 +63 next 1 25 62 +64 input 1 f0 +65 constd 4 300 +66 constd 3 0 +67 concat 4 44 66 +68 constd 4 16 +69 sra 4 67 68 +70 ulte 1 65 69 +71 and 1 50 -70 +72 or 1 -64 71 +73 or 1 52 64 +74 input 1 f1 +75 or 1 73 -74 +76 and 1 72 75 +77 or 1 54 74 +78 input 1 f2 +79 or 1 77 -78 +80 and 1 76 79 +81 input 1 f3 +82 ite 3 64 44 46 +83 concat 4 82 66 +84 sra 4 83 68 +85 add 4 69 84 +86 slice 3 85 15 0 +87 ite 3 74 86 82 +88 ite 3 78 87 44 +89 concat 4 88 66 +90 sra 4 89 68 +91 ulte 1 65 90 +92 and 1 56 -91 +93 or 1 -81 92 +94 and 1 80 93 +95 or 1 58 81 +96 input 1 f4 +97 or 1 95 -96 +98 and 1 94 97 +99 or 1 60 96 +100 input 1 f5 +101 or 1 99 -100 +102 and 1 98 101 +103 or 1 64 74 +104 or 1 78 103 +105 or 1 81 104 +106 or 1 96 105 +107 or 1 100 106 +108 and 1 102 107 +109 and 1 50 52 +110 or 1 50 52 +111 and 1 54 110 +112 or 1 109 111 +113 or 1 54 110 +114 and 1 -112 113 +115 and 1 56 58 +116 or 1 56 58 +117 and 1 60 116 +118 or 1 115 117 +119 and 1 114 -118 +120 or 1 60 116 +121 and 1 119 120 +122 and 1 108 121 +123 and 1 73 -74 +124 and 1 50 -64 +125 or 1 124 78 +126 and 1 123 125 +127 and 1 77 -78 +128 or 1 123 125 +129 and 1 127 128 +130 or 1 126 129 +131 or 1 127 128 +132 and 1 -130 131 +133 and 1 95 -96 +134 and 1 56 -81 +135 or 1 134 100 +136 and 1 133 135 +137 and 1 99 -100 +138 or 1 133 135 +139 and 1 137 138 +140 or 1 136 139 +141 and 1 132 -140 +142 or 1 137 138 +143 and 1 141 142 +144 and 1 122 143 +145 ite 3 81 88 48 +146 concat 4 145 66 +147 sra 4 146 68 +148 add 4 90 147 +149 slice 3 148 15 0 +150 ite 3 96 149 145 +151 ite 3 100 150 88 +152 eq 1 151 6 +153 and 1 144 152 +154 eq 1 87 8 +155 and 1 153 154 +156 eq 1 150 10 +157 and 1 155 156 +158 eq 1 125 13 +159 and 1 157 158 +160 eq 1 123 15 +161 and 1 159 160 +162 eq 1 127 17 +163 and 1 161 162 +164 eq 1 135 19 +165 and 1 163 164 +166 eq 1 133 21 +167 and 1 165 166 +168 eq 1 137 23 +169 and 1 167 168 +170 and 1 169 27 +171 constd 4 637 +172 eq 1 171 69 +173 ite 1 25 170 172 +174 next 1 27 173 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-func-interl.btor2 new file mode 100644 index 0000000000..8ca4da0ba9 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-func-interl.btor2 @@ -0,0 +1,144 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 v_c +7 init 3 6 5 +8 state 3 v_x1 +9 init 3 8 5 +10 state 3 v_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 a_Q_a1 +14 init 1 13 12 +15 state 1 a_R_a1 +16 init 1 15 12 +17 state 1 a_S_a1 +18 init 1 17 12 +19 state 1 a_Q_a2 +20 init 1 19 12 +21 state 1 a_R_a2 +22 init 1 21 12 +23 state 1 a_S_a2 +24 init 1 23 12 +25 state 1 dve_invalid +26 init 1 25 12 +27 constd 4 637 +28 constd 3 1 +29 xor 3 28 6 +30 constd 3 0 +31 concat 4 29 30 +32 constd 4 16 +33 sra 4 31 32 +34 eq 1 27 33 +35 and 1 -25 34 +36 bad 35 +37 input 1 f5 +38 input 1 f2 +39 ite 3 38 8 29 +40 ite 3 37 10 39 +41 xor 3 28 40 +42 next 3 6 41 +43 input 1 f1 +44 concat 4 8 30 +45 sra 4 44 32 +46 add 4 33 45 +47 slice 3 46 15 0 +48 input 1 f0 +49 ite 3 48 29 8 +50 ite 3 43 47 49 +51 next 3 8 50 +52 input 1 f4 +53 concat 4 10 30 +54 sra 4 53 32 +55 add 4 33 54 +56 slice 3 55 15 0 +57 input 1 f3 +58 ite 3 57 29 10 +59 ite 3 52 56 58 +60 next 3 10 59 +61 and 1 -13 -48 +62 or 1 61 38 +63 next 1 13 -62 +64 or 1 15 48 +65 and 1 64 -43 +66 next 1 15 65 +67 or 1 17 43 +68 and 1 67 -38 +69 next 1 17 68 +70 and 1 -19 -57 +71 or 1 70 37 +72 next 1 19 -71 +73 or 1 21 57 +74 and 1 73 -52 +75 next 1 21 74 +76 or 1 23 52 +77 and 1 76 -37 +78 next 1 23 77 +79 constd 4 300 +80 ulte 1 79 33 +81 and 1 -13 -80 +82 or 1 -48 81 +83 or 1 15 -43 +84 and 1 82 83 +85 or 1 17 -38 +86 and 1 84 85 +87 and 1 -19 -80 +88 or 1 -57 87 +89 and 1 86 88 +90 or 1 21 -52 +91 and 1 89 90 +92 or 1 23 -37 +93 and 1 91 92 +94 or 1 48 43 +95 or 1 38 94 +96 or 1 57 95 +97 or 1 52 96 +98 or 1 37 97 +99 and 1 93 98 +100 and 1 48 43 +101 and 1 38 94 +102 or 1 100 101 +103 and 1 57 95 +104 or 1 102 103 +105 and 1 52 96 +106 or 1 104 105 +107 and 1 37 97 +108 or 1 106 107 +109 and 1 99 -108 +110 and 1 -13 15 +111 or 1 -13 15 +112 and 1 17 111 +113 or 1 110 112 +114 or 1 17 111 +115 and 1 -113 114 +116 and 1 -19 21 +117 or 1 -19 21 +118 and 1 23 117 +119 or 1 116 118 +120 and 1 115 -119 +121 or 1 23 117 +122 and 1 120 121 +123 and 1 109 122 +124 and 1 65 62 +125 or 1 65 62 +126 and 1 68 125 +127 or 1 124 126 +128 or 1 68 125 +129 and 1 -127 128 +130 and 1 74 71 +131 or 1 74 71 +132 and 1 77 131 +133 or 1 130 132 +134 and 1 129 -133 +135 or 1 77 131 +136 and 1 134 135 +137 and 1 123 136 +138 and 1 137 -25 +139 next 1 25 -138 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..9e06e30380 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-back-serstep.btor2 @@ -0,0 +1,179 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 nextv_c +7 init 3 6 5 +8 state 3 nextv_x1 +9 init 3 8 5 +10 state 3 nextv_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 nexta_Q_a1 +14 init 1 13 12 +15 state 1 nexta_R_a1 +16 init 1 15 12 +17 state 1 nexta_S_a1 +18 init 1 17 12 +19 state 1 nexta_Q_a2 +20 init 1 19 12 +21 state 1 nexta_R_a2 +22 init 1 21 12 +23 state 1 nexta_S_a2 +24 init 1 23 12 +25 state 1 dve_initialized +26 init 1 25 12 +27 state 1 dve_valid +28 init 1 27 12 +29 and 1 13 -15 +30 and 1 29 -17 +31 and 1 30 19 +32 and 1 31 -21 +33 and 1 32 -23 +34 constd 3 1 +35 eq 1 34 6 +36 and 1 33 35 +37 constd 3 0 +38 eq 1 37 8 +39 and 1 36 38 +40 eq 1 37 10 +41 and 1 39 40 +42 and 1 27 41 +43 bad 42 +44 input 3 v_c +45 next 3 6 44 +46 input 3 v_x1 +47 next 3 8 46 +48 input 3 v_x2 +49 next 3 10 48 +50 input 1 a_Q_a1 +51 next 1 13 50 +52 input 1 a_R_a1 +53 next 1 15 52 +54 input 1 a_S_a1 +55 next 1 17 54 +56 input 1 a_Q_a2 +57 next 1 19 56 +58 input 1 a_R_a2 +59 next 1 21 58 +60 input 1 a_S_a2 +61 next 1 23 60 +62 const 1 1 +63 next 1 25 62 +64 input 1 f0 +65 constd 4 400 +66 constd 3 0 +67 concat 4 44 66 +68 constd 4 16 +69 sra 4 67 68 +70 ulte 1 65 69 +71 and 1 50 -70 +72 or 1 -64 71 +73 or 1 52 64 +74 input 1 f1 +75 or 1 73 -74 +76 and 1 72 75 +77 or 1 54 74 +78 input 1 f2 +79 or 1 77 -78 +80 and 1 76 79 +81 input 1 f3 +82 ite 3 64 44 46 +83 concat 4 82 66 +84 sra 4 83 68 +85 add 4 69 84 +86 slice 3 85 15 0 +87 ite 3 74 86 82 +88 ite 3 78 87 44 +89 concat 4 88 66 +90 sra 4 89 68 +91 ulte 1 65 90 +92 and 1 56 -91 +93 or 1 -81 92 +94 and 1 80 93 +95 or 1 58 81 +96 input 1 f4 +97 or 1 95 -96 +98 and 1 94 97 +99 or 1 60 96 +100 input 1 f5 +101 or 1 99 -100 +102 and 1 98 101 +103 or 1 64 74 +104 or 1 78 103 +105 or 1 81 104 +106 or 1 96 105 +107 or 1 100 106 +108 and 1 102 107 +109 and 1 50 52 +110 or 1 50 52 +111 and 1 54 110 +112 or 1 109 111 +113 or 1 54 110 +114 and 1 -112 113 +115 and 1 56 58 +116 or 1 56 58 +117 and 1 60 116 +118 or 1 115 117 +119 and 1 114 -118 +120 or 1 60 116 +121 and 1 119 120 +122 and 1 108 121 +123 and 1 73 -74 +124 and 1 50 -64 +125 or 1 124 78 +126 and 1 123 125 +127 and 1 77 -78 +128 or 1 123 125 +129 and 1 127 128 +130 or 1 126 129 +131 or 1 127 128 +132 and 1 -130 131 +133 and 1 95 -96 +134 and 1 56 -81 +135 or 1 134 100 +136 and 1 133 135 +137 and 1 99 -100 +138 or 1 133 135 +139 and 1 137 138 +140 or 1 136 139 +141 and 1 132 -140 +142 or 1 137 138 +143 and 1 141 142 +144 and 1 122 143 +145 ite 3 81 88 48 +146 concat 4 145 66 +147 sra 4 146 68 +148 add 4 90 147 +149 slice 3 148 15 0 +150 ite 3 96 149 145 +151 ite 3 100 150 88 +152 eq 1 151 6 +153 and 1 144 152 +154 eq 1 87 8 +155 and 1 153 154 +156 eq 1 150 10 +157 and 1 155 156 +158 eq 1 125 13 +159 and 1 157 158 +160 eq 1 123 15 +161 and 1 159 160 +162 eq 1 127 17 +163 and 1 161 162 +164 eq 1 135 19 +165 and 1 163 164 +166 eq 1 133 21 +167 and 1 165 166 +168 eq 1 137 23 +169 and 1 167 168 +170 and 1 169 27 +171 constd 4 749 +172 eq 1 171 69 +173 ite 1 25 170 172 +174 next 1 27 173 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-func-interl.btor2 new file mode 100644 index 0000000000..fdf6dfe63b --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-func-interl.btor2 @@ -0,0 +1,144 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 v_c +7 init 3 6 5 +8 state 3 v_x1 +9 init 3 8 5 +10 state 3 v_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 a_Q_a1 +14 init 1 13 12 +15 state 1 a_R_a1 +16 init 1 15 12 +17 state 1 a_S_a1 +18 init 1 17 12 +19 state 1 a_Q_a2 +20 init 1 19 12 +21 state 1 a_R_a2 +22 init 1 21 12 +23 state 1 a_S_a2 +24 init 1 23 12 +25 state 1 dve_invalid +26 init 1 25 12 +27 constd 4 749 +28 constd 3 1 +29 xor 3 28 6 +30 constd 3 0 +31 concat 4 29 30 +32 constd 4 16 +33 sra 4 31 32 +34 eq 1 27 33 +35 and 1 -25 34 +36 bad 35 +37 input 1 f5 +38 input 1 f2 +39 ite 3 38 8 29 +40 ite 3 37 10 39 +41 xor 3 28 40 +42 next 3 6 41 +43 input 1 f1 +44 concat 4 8 30 +45 sra 4 44 32 +46 add 4 33 45 +47 slice 3 46 15 0 +48 input 1 f0 +49 ite 3 48 29 8 +50 ite 3 43 47 49 +51 next 3 8 50 +52 input 1 f4 +53 concat 4 10 30 +54 sra 4 53 32 +55 add 4 33 54 +56 slice 3 55 15 0 +57 input 1 f3 +58 ite 3 57 29 10 +59 ite 3 52 56 58 +60 next 3 10 59 +61 and 1 -13 -48 +62 or 1 61 38 +63 next 1 13 -62 +64 or 1 15 48 +65 and 1 64 -43 +66 next 1 15 65 +67 or 1 17 43 +68 and 1 67 -38 +69 next 1 17 68 +70 and 1 -19 -57 +71 or 1 70 37 +72 next 1 19 -71 +73 or 1 21 57 +74 and 1 73 -52 +75 next 1 21 74 +76 or 1 23 52 +77 and 1 76 -37 +78 next 1 23 77 +79 constd 4 400 +80 ulte 1 79 33 +81 and 1 -13 -80 +82 or 1 -48 81 +83 or 1 15 -43 +84 and 1 82 83 +85 or 1 17 -38 +86 and 1 84 85 +87 and 1 -19 -80 +88 or 1 -57 87 +89 and 1 86 88 +90 or 1 21 -52 +91 and 1 89 90 +92 or 1 23 -37 +93 and 1 91 92 +94 or 1 48 43 +95 or 1 38 94 +96 or 1 57 95 +97 or 1 52 96 +98 or 1 37 97 +99 and 1 93 98 +100 and 1 48 43 +101 and 1 38 94 +102 or 1 100 101 +103 and 1 57 95 +104 or 1 102 103 +105 and 1 52 96 +106 or 1 104 105 +107 and 1 37 97 +108 or 1 106 107 +109 and 1 99 -108 +110 and 1 -13 15 +111 or 1 -13 15 +112 and 1 17 111 +113 or 1 110 112 +114 or 1 17 111 +115 and 1 -113 114 +116 and 1 -19 21 +117 or 1 -19 21 +118 and 1 23 117 +119 or 1 116 118 +120 and 1 115 -119 +121 or 1 23 117 +122 and 1 120 121 +123 and 1 109 122 +124 and 1 65 62 +125 or 1 65 62 +126 and 1 68 125 +127 or 1 124 126 +128 or 1 68 125 +129 and 1 -127 128 +130 and 1 74 71 +131 or 1 74 71 +132 and 1 77 131 +133 or 1 130 132 +134 and 1 129 -133 +135 or 1 77 131 +136 and 1 134 135 +137 and 1 123 136 +138 and 1 137 -25 +139 next 1 25 -138 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..8d1f6a8b19 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-back-serstep.btor2 @@ -0,0 +1,179 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 nextv_c +7 init 3 6 5 +8 state 3 nextv_x1 +9 init 3 8 5 +10 state 3 nextv_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 nexta_Q_a1 +14 init 1 13 12 +15 state 1 nexta_R_a1 +16 init 1 15 12 +17 state 1 nexta_S_a1 +18 init 1 17 12 +19 state 1 nexta_Q_a2 +20 init 1 19 12 +21 state 1 nexta_R_a2 +22 init 1 21 12 +23 state 1 nexta_S_a2 +24 init 1 23 12 +25 state 1 dve_initialized +26 init 1 25 12 +27 state 1 dve_valid +28 init 1 27 12 +29 and 1 13 -15 +30 and 1 29 -17 +31 and 1 30 19 +32 and 1 31 -21 +33 and 1 32 -23 +34 constd 3 1 +35 eq 1 34 6 +36 and 1 33 35 +37 constd 3 0 +38 eq 1 37 8 +39 and 1 36 38 +40 eq 1 37 10 +41 and 1 39 40 +42 and 1 27 41 +43 bad 42 +44 input 3 v_c +45 next 3 6 44 +46 input 3 v_x1 +47 next 3 8 46 +48 input 3 v_x2 +49 next 3 10 48 +50 input 1 a_Q_a1 +51 next 1 13 50 +52 input 1 a_R_a1 +53 next 1 15 52 +54 input 1 a_S_a1 +55 next 1 17 54 +56 input 1 a_Q_a2 +57 next 1 19 56 +58 input 1 a_R_a2 +59 next 1 21 58 +60 input 1 a_S_a2 +61 next 1 23 60 +62 const 1 1 +63 next 1 25 62 +64 input 1 f0 +65 constd 4 500 +66 constd 3 0 +67 concat 4 44 66 +68 constd 4 16 +69 sra 4 67 68 +70 ulte 1 65 69 +71 and 1 50 -70 +72 or 1 -64 71 +73 or 1 52 64 +74 input 1 f1 +75 or 1 73 -74 +76 and 1 72 75 +77 or 1 54 74 +78 input 1 f2 +79 or 1 77 -78 +80 and 1 76 79 +81 input 1 f3 +82 ite 3 64 44 46 +83 concat 4 82 66 +84 sra 4 83 68 +85 add 4 69 84 +86 slice 3 85 15 0 +87 ite 3 74 86 82 +88 ite 3 78 87 44 +89 concat 4 88 66 +90 sra 4 89 68 +91 ulte 1 65 90 +92 and 1 56 -91 +93 or 1 -81 92 +94 and 1 80 93 +95 or 1 58 81 +96 input 1 f4 +97 or 1 95 -96 +98 and 1 94 97 +99 or 1 60 96 +100 input 1 f5 +101 or 1 99 -100 +102 and 1 98 101 +103 or 1 64 74 +104 or 1 78 103 +105 or 1 81 104 +106 or 1 96 105 +107 or 1 100 106 +108 and 1 102 107 +109 and 1 50 52 +110 or 1 50 52 +111 and 1 54 110 +112 or 1 109 111 +113 or 1 54 110 +114 and 1 -112 113 +115 and 1 56 58 +116 or 1 56 58 +117 and 1 60 116 +118 or 1 115 117 +119 and 1 114 -118 +120 or 1 60 116 +121 and 1 119 120 +122 and 1 108 121 +123 and 1 73 -74 +124 and 1 50 -64 +125 or 1 124 78 +126 and 1 123 125 +127 and 1 77 -78 +128 or 1 123 125 +129 and 1 127 128 +130 or 1 126 129 +131 or 1 127 128 +132 and 1 -130 131 +133 and 1 95 -96 +134 and 1 56 -81 +135 or 1 134 100 +136 and 1 133 135 +137 and 1 99 -100 +138 or 1 133 135 +139 and 1 137 138 +140 or 1 136 139 +141 and 1 132 -140 +142 or 1 137 138 +143 and 1 141 142 +144 and 1 122 143 +145 ite 3 81 88 48 +146 concat 4 145 66 +147 sra 4 146 68 +148 add 4 90 147 +149 slice 3 148 15 0 +150 ite 3 96 149 145 +151 ite 3 100 150 88 +152 eq 1 151 6 +153 and 1 144 152 +154 eq 1 87 8 +155 and 1 153 154 +156 eq 1 150 10 +157 and 1 155 156 +158 eq 1 125 13 +159 and 1 157 158 +160 eq 1 123 15 +161 and 1 159 160 +162 eq 1 127 17 +163 and 1 161 162 +164 eq 1 135 19 +165 and 1 163 164 +166 eq 1 133 21 +167 and 1 165 166 +168 eq 1 137 23 +169 and 1 167 168 +170 and 1 169 27 +171 constd 4 849 +172 eq 1 171 69 +173 ite 1 25 170 172 +174 next 1 27 173 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-func-interl.btor2 new file mode 100644 index 0000000000..5fe91de66e --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-func-interl.btor2 @@ -0,0 +1,144 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 v_c +7 init 3 6 5 +8 state 3 v_x1 +9 init 3 8 5 +10 state 3 v_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 a_Q_a1 +14 init 1 13 12 +15 state 1 a_R_a1 +16 init 1 15 12 +17 state 1 a_S_a1 +18 init 1 17 12 +19 state 1 a_Q_a2 +20 init 1 19 12 +21 state 1 a_R_a2 +22 init 1 21 12 +23 state 1 a_S_a2 +24 init 1 23 12 +25 state 1 dve_invalid +26 init 1 25 12 +27 constd 4 849 +28 constd 3 1 +29 xor 3 28 6 +30 constd 3 0 +31 concat 4 29 30 +32 constd 4 16 +33 sra 4 31 32 +34 eq 1 27 33 +35 and 1 -25 34 +36 bad 35 +37 input 1 f5 +38 input 1 f2 +39 ite 3 38 8 29 +40 ite 3 37 10 39 +41 xor 3 28 40 +42 next 3 6 41 +43 input 1 f1 +44 concat 4 8 30 +45 sra 4 44 32 +46 add 4 33 45 +47 slice 3 46 15 0 +48 input 1 f0 +49 ite 3 48 29 8 +50 ite 3 43 47 49 +51 next 3 8 50 +52 input 1 f4 +53 concat 4 10 30 +54 sra 4 53 32 +55 add 4 33 54 +56 slice 3 55 15 0 +57 input 1 f3 +58 ite 3 57 29 10 +59 ite 3 52 56 58 +60 next 3 10 59 +61 and 1 -13 -48 +62 or 1 61 38 +63 next 1 13 -62 +64 or 1 15 48 +65 and 1 64 -43 +66 next 1 15 65 +67 or 1 17 43 +68 and 1 67 -38 +69 next 1 17 68 +70 and 1 -19 -57 +71 or 1 70 37 +72 next 1 19 -71 +73 or 1 21 57 +74 and 1 73 -52 +75 next 1 21 74 +76 or 1 23 52 +77 and 1 76 -37 +78 next 1 23 77 +79 constd 4 500 +80 ulte 1 79 33 +81 and 1 -13 -80 +82 or 1 -48 81 +83 or 1 15 -43 +84 and 1 82 83 +85 or 1 17 -38 +86 and 1 84 85 +87 and 1 -19 -80 +88 or 1 -57 87 +89 and 1 86 88 +90 or 1 21 -52 +91 and 1 89 90 +92 or 1 23 -37 +93 and 1 91 92 +94 or 1 48 43 +95 or 1 38 94 +96 or 1 57 95 +97 or 1 52 96 +98 or 1 37 97 +99 and 1 93 98 +100 and 1 48 43 +101 and 1 38 94 +102 or 1 100 101 +103 and 1 57 95 +104 or 1 102 103 +105 and 1 52 96 +106 or 1 104 105 +107 and 1 37 97 +108 or 1 106 107 +109 and 1 99 -108 +110 and 1 -13 15 +111 or 1 -13 15 +112 and 1 17 111 +113 or 1 110 112 +114 or 1 17 111 +115 and 1 -113 114 +116 and 1 -19 21 +117 or 1 -19 21 +118 and 1 23 117 +119 or 1 116 118 +120 and 1 115 -119 +121 or 1 23 117 +122 and 1 120 121 +123 and 1 109 122 +124 and 1 65 62 +125 or 1 65 62 +126 and 1 68 125 +127 or 1 124 126 +128 or 1 68 125 +129 and 1 -127 128 +130 and 1 74 71 +131 or 1 74 71 +132 and 1 77 131 +133 or 1 130 132 +134 and 1 129 -133 +135 or 1 77 131 +136 and 1 134 135 +137 and 1 123 136 +138 and 1 137 -25 +139 next 1 25 -138 +; End + + From 3f8b2140499253039911ca050fd1f3808d3e367c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Thu, 15 May 2025 15:03:32 +0200 Subject: [PATCH 26/72] Slice corrected --- .../java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 84df955577..d26be94093 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -99,7 +99,8 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 } override fun getExpr(): Expr<*> { - return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(u)) + val newU : BigInteger = u + BigInteger.valueOf(1) + return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(newU)) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -148,7 +149,7 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.READ -> TODO() } From e5a5dede75145ee1a2890bd3b8779e9beabb2505 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Thu, 15 May 2025 15:16:31 +0200 Subject: [PATCH 27/72] ITS ALIVE --- .../java/hu/bme/mit/theta/core/type/anytype/IteExpr.java | 2 +- .../hu/bme/mit/theta/frontend/models/Btor2Operation.kt | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/anytype/IteExpr.java b/subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/anytype/IteExpr.java index 9857c29003..9a46d76733 100644 --- a/subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/anytype/IteExpr.java +++ b/subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/anytype/IteExpr.java @@ -30,7 +30,7 @@ import hu.bme.mit.theta.core.type.booltype.BoolType; import java.util.List; -public final class IteExpr implements Expr { + public final class IteExpr implements Expr { private static final int HASH_SEED = 181; private static final String OPERATOR_LABEL = "ite"; diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index d26be94093..759c4bc3ac 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -31,6 +31,7 @@ import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg import hu.bme.mit.theta.core.type.inttype.IntLitExpr import hu.bme.mit.theta.core.utils.TypeUtils.castBv +import hu.bme.mit.theta.core.utils.TypeUtils.checkAllTypesEqual import java.math.BigInteger @@ -271,11 +272,13 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor } override fun getExpr(): Expr { - val op1Expr = if (negated) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) + //checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) + val op1Expr = if (negated) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) + val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) return when(operator) { - Btor2TernaryOperator.ITE -> IteExpr.of(op1Expr as Expr, op2.getExpr() as Expr, op3.getExpr() as Expr) + Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2.getExpr() as Expr, op3.getExpr() as Expr) Btor2TernaryOperator.WRITE -> TODO() } } From 2ae4787016398eacd801d3467ac9938b57a2dd05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 24 Jun 2025 18:55:00 +0200 Subject: [PATCH 28/72] Hex numbers work --- .../btor2-frontend/src/main/antlr/Btor2.g4 | 138 ++-- .../theta/frontend/models/Btor2Operation.kt | 607 +++++++++--------- .../frontend/models/Btor2OperatorEnums.kt | 171 ++--- .../frontend/visitors/ConstantVisitor.kt | 205 +++--- .../frontend/visitors/OperationVisitor.kt | 343 +++++----- 5 files changed, 741 insertions(+), 723 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index 6e26890d77..39f32cd262 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -1,70 +1,70 @@ -// WARNING: this grammar is NOT an official BTOR2 grammar and will accept invalid btor2 circuits. -// Check your circuit with catbtor before using this grammar! -grammar Btor2; - -// Lexer rules -WS: [ ]+ -> skip; -NUM: (MINUS)? [0-9]+; -PLUS: '+'; -MINUS: '-'; -UNARYOP: 'not' - | 'inc' | 'dec' | 'neg' - | 'redand' | 'redor' | 'redxor'; -TERNARYOP: 'ite' | 'write'; -BINOP: 'and' | 'nand' | 'nor' | 'or' | 'xor' | 'iff' | 'implies' - | 'eq' | 'neq' - | 'slt' | 'slte' | 'sgt' | 'sgte' - | 'ult' | 'ulte' | 'ugt' | 'ugte' - | 'concat' | 'add' | 'mul' - | 'udiv' | 'urem' - | 'sdiv' | 'srem' | 'smod' - | 'saddo' | 'sdivo' | 'smulo' | 'ssubo' - | 'uaddo' | 'umulo' | 'usubo' - | 'rol' | 'ror' | 'sll' | 'sra' | 'srl' | 'read'; -SYMBOL: ~[ \r\n]+; -COMMENT: ';' ~[\r\n]+; - -// Parser rules -btor2: (line '\n')* line ('\n')*; - -line: comment | node (symbol)? (comment)?; - -comment: COMMENT; - -nid: NUM; -sid: NUM; - -node: ( array_sort | bitvec_sort ) #sort // sort declaration - | (input | state | init | next | property) #stateful - | (opidx | op) #operation - | (filled_constant | constant | constant_d | constant_h) #constantNode; - -opidx: ext | slice; - -ext: id=nid ('uext'|'sext') sid opd1=nid w=NUM; -slice: id=nid 'slice' sid opd1=nid u=NUM l=NUM; - -op: binop | unop | terop; - -binop: id=nid BINOP sid opd1=nid opd2=nid; -unop: id=nid UNARYOP sid opd1=nid; -terop: id=nid TERNARYOP sid opd1=nid opd2=nid opd3=nid; - -input: id=nid ('input') sid; - -init: id=nid 'init' sid param1=nid param2=nid; -next: id=nid 'next' sid param1=nid param2=nid; - -state: id=nid 'state' sid; - -property: id=nid property_type=('bad' | 'constraint' | 'fair' | 'output' | 'justice' ) param=nid; - -array_sort: id=sid 'sort array' sid1=sid sid2=sid; -bitvec_sort: id=sid 'sort bitvec' width=NUM; - -constant: id=nid 'const' sid bin=NUM; -constant_d: id=nid 'constd' sid dec=NUM; -constant_h: id=nid 'consth' sid hex=SYMBOL; -filled_constant: id=nid fill=('one' | 'ones' | 'zero') sid; - +// WARNING: this grammar is NOT an official BTOR2 grammar and will accept invalid btor2 circuits. +// Check your circuit with catbtor before using this grammar! +grammar Btor2; + +// Lexer rules +WS: [ ]+ -> skip; +NUM: (MINUS)? [0-9a-fA-F]+; +PLUS: '+'; +MINUS: '-'; +UNARYOP: 'not' + | 'inc' | 'dec' | 'neg' + | 'redand' | 'redor' | 'redxor'; +TERNARYOP: 'ite' | 'write'; +BINOP: 'and' | 'nand' | 'nor' | 'or' | 'xnor' | 'xor' | 'iff' | 'implies' + | 'eq' | 'neq' + | 'slt' | 'slte' | 'sgt' | 'sgte' + | 'ult' | 'ulte' | 'ugt' | 'ugte' + | 'concat' | 'add' | 'mul' + | 'udiv' | 'urem' + | 'sdiv' | 'srem' | 'smod' + | 'saddo' | 'sdivo' | 'smulo' | 'ssubo' + | 'uaddo' | 'umulo' | 'usubo' + | 'rol' | 'ror' | 'sll' | 'sra' | 'srl' | 'read'; +SYMBOL: ~[ \r\n]+; +COMMENT: ';' ~[\r\n]+; + +// Parser rules +btor2: (line '\n')* line ('\n')*; + +line: comment | node (symbol)? (comment)?; + +comment: COMMENT; + +nid: NUM; +sid: NUM; + +node: ( array_sort | bitvec_sort ) #sort // sort declaration + | (input | state | init | next | property) #stateful + | (opidx | op) #operation + | (filled_constant | constant | constant_d | constant_h) #constantNode; + +opidx: ext | slice; + +ext: id=nid ('uext'|'sext') sid opd1=nid w=NUM; +slice: id=nid 'slice' sid opd1=nid u=NUM l=NUM; + +op: binop | unop | terop; + +binop: id=nid BINOP sid opd1=nid opd2=nid; +unop: id=nid UNARYOP sid opd1=nid; +terop: id=nid TERNARYOP sid opd1=nid opd2=nid opd3=nid; + +input: id=nid ('input') sid; + +init: id=nid 'init' sid param1=nid param2=nid; +next: id=nid 'next' sid param1=nid param2=nid; + +state: id=nid 'state' sid; + +property: id=nid property_type=('bad' | 'constraint' | 'fair' | 'output' | 'justice' ) param=nid; + +array_sort: id=sid 'sort array' sid1=sid sid2=sid; +bitvec_sort: id=sid 'sort bitvec' width=NUM; + +constant: id=nid 'const' sid bin=NUM; +constant_d: id=nid 'constd' sid dec=NUM; +constant_h: id=nid 'consth' sid hex=NUM; +filled_constant: id=nid fill=('one' | 'ones' | 'zero') sid; + symbol: SYMBOL; \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 759c4bc3ac..672ffc3888 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -1,298 +1,311 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.models - -import hu.bme.mit.theta.core.decl.Decls -import hu.bme.mit.theta.core.decl.VarDecl -import hu.bme.mit.theta.core.stmt.AssignStmt -import hu.bme.mit.theta.core.stmt.AssumeStmt -import hu.bme.mit.theta.core.stmt.Stmt -import hu.bme.mit.theta.core.type.Expr -import hu.bme.mit.theta.core.type.abstracttype.NegExpr -import hu.bme.mit.theta.core.type.anytype.IteExpr -import hu.bme.mit.theta.core.type.anytype.RefExpr -import hu.bme.mit.theta.core.type.booltype.BoolType -import hu.bme.mit.theta.core.type.bvtype.* -import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq -import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg -import hu.bme.mit.theta.core.type.inttype.IntLitExpr -import hu.bme.mit.theta.core.utils.TypeUtils.castBv -import hu.bme.mit.theta.core.utils.TypeUtils.checkAllTypesEqual -import java.math.BigInteger - - -abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) -{ - abstract fun getStmt(negate: Boolean): Stmt - -} -// Operators -data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2UnaryOperator, val operand: Btor2Node) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("unary_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr<*> { - return when(operator) - { - Btor2UnaryOperator.NOT -> BvNotExpr.of(operand.getExpr() as Expr) - Btor2UnaryOperator.INC -> TODO() - Btor2UnaryOperator.DEC -> TODO() - Btor2UnaryOperator.NEG -> TODO() - Btor2UnaryOperator.REDAND -> TODO() - Btor2UnaryOperator.REDOR -> TODO() - Btor2UnaryOperator.REDXOR -> TODO() - } - } - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(negate: Boolean): Stmt { - TODO("Not yet implemented") - } -} - -data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val w : UInt) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("ext_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr<*> { - //return BvExt - TODO() - } - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(negate: Boolean): Stmt { - TODO("Not yet implemented") - } -} - -data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val u : BigInteger, val l : BigInteger) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("slice_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr<*> { - val newU : BigInteger = u + BigInteger.valueOf(1) - return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(newU)) - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(negate: Boolean): Stmt { - return AssignStmt.of(value, getExpr() as Expr) - } -} - -data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2BinaryOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("binary_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr<*> { - val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else op1.getExpr() as Expr - val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr - - return when(operator) - { - Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) - Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) - Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.UREM -> BvURemExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.SADDO -> TODO() - Btor2BinaryOperator.SDIVO -> TODO() - Btor2BinaryOperator.SMULO -> TODO() - Btor2BinaryOperator.SSUBO -> TODO() - Btor2BinaryOperator.UADDO -> TODO() - Btor2BinaryOperator.UMULO -> TODO() - Btor2BinaryOperator.USUBO -> TODO() - Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.READ -> TODO() - } - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(negate: Boolean): Stmt { - return when(operator) - { - Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.AND -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.NAND -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.NOR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.OR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.XOR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.MUL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.UDIV -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.UREM -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SDIV -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SREM -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SMOD -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.CONCAT -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SADDO -> TODO() - Btor2BinaryOperator.SDIVO -> TODO() - Btor2BinaryOperator.SMULO -> TODO() - Btor2BinaryOperator.SSUBO -> TODO() - Btor2BinaryOperator.UADDO -> TODO() - Btor2BinaryOperator.UMULO -> TODO() - Btor2BinaryOperator.USUBO -> TODO() - Btor2BinaryOperator.ROL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.ROR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SLL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SRA -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SRL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.READ -> TODO() - } - } -} - -data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2ComparisonOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("comparison_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr<*> { - val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else op1.getExpr() as Expr - val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr - return when(operator) - { - Btor2ComparisonOperator.EQ -> IteExpr.of(BvEqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - //Eq(op1_expr as RefExpr, op2_expr as RefExpr) - Btor2ComparisonOperator.NEQ -> IteExpr.of(BvNeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.SLT -> IteExpr.of(BvSLtExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.SLTE -> IteExpr.of(BvSLeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.SGT -> IteExpr.of(BvSGtExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.SGTE -> IteExpr.of(BvSGeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.ULT -> IteExpr.of(BvULtExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.ULTE -> IteExpr.of(BvULeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.UGT -> IteExpr.of(BvUGtExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.UGTE -> IteExpr.of(BvUGeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - } - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(negate: Boolean): Stmt { - return when(operator) - { - Btor2ComparisonOperator.EQ -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.NEQ -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.SLT -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.SLTE -> TODO() - Btor2ComparisonOperator.SGT -> TODO() - Btor2ComparisonOperator.SGTE -> TODO() - Btor2ComparisonOperator.ULT -> TODO() - Btor2ComparisonOperator.ULTE -> TODO() - Btor2ComparisonOperator.UGT -> TODO() - Btor2ComparisonOperator.UGTE -> TODO() - } - } -} - -// Ehhez a nidhez vezetünk be egy változót, bekötjük -data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor2Sort, val operator: Btor2TernaryOperator, - val op1: Btor2Node, val op2: Btor2Node, val op3: Btor2Node, val negated: Boolean) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("ternary_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr { - //checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) - - val op1Expr = if (negated) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) - val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) - return when(operator) - { - Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2.getExpr() as Expr, op3.getExpr() as Expr) - Btor2TernaryOperator.WRITE -> TODO() - } - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(negate: Boolean): Stmt { - return when(operator) - { - Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr() as Expr) - Btor2TernaryOperator.WRITE -> TODO() - } - - } +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.models + +import hu.bme.mit.theta.core.decl.Decls +import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.stmt.AssignStmt +import hu.bme.mit.theta.core.stmt.AssumeStmt +import hu.bme.mit.theta.core.stmt.Stmt +import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.abstracttype.NegExpr +import hu.bme.mit.theta.core.type.anytype.IteExpr +import hu.bme.mit.theta.core.type.anytype.RefExpr +import hu.bme.mit.theta.core.type.booltype.BoolType +import hu.bme.mit.theta.core.type.bvtype.* +import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq +import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg +import hu.bme.mit.theta.core.type.inttype.IntLitExpr +import hu.bme.mit.theta.core.utils.TypeUtils.castBv +import hu.bme.mit.theta.core.utils.TypeUtils.checkAllTypesEqual +import java.math.BigInteger + + +abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) +{ + abstract fun getStmt(negate: Boolean): Stmt +} + +// Operators +data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2UnaryOperator, val operand: Btor2Node) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("unary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + val one = BvExprs.Bv(booleanArrayOf(true)) as Expr + return when(operator) + { + Btor2UnaryOperator.NOT -> BvNotExpr.of(operand.getExpr() as Expr) + Btor2UnaryOperator.INC -> BvAddExpr.create(mutableListOf(operand.getExpr() as Expr, one)) + Btor2UnaryOperator.DEC -> BvSubExpr.create(operand.getExpr() as Expr, one) + Btor2UnaryOperator.NEG -> BvNegExpr.of(operand.getExpr() as Expr) + Btor2UnaryOperator.REDAND -> BvAndExpr.create(cutValue()) + Btor2UnaryOperator.REDOR -> BvOrExpr.create(cutValue()) + Btor2UnaryOperator.REDXOR -> BvXorExpr.create(cutValue()) + } + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + TODO("Not yet implemented") + } + + fun cutValue() : List> { + val expr = operand.getExpr() as BvLitExpr + val value = expr.value // BooleanArray + val cut = mutableListOf>() + for (i in value.indices) { + cut.add(BvLitExpr.of(booleanArrayOf(value[i]))) + } + return cut + } +} + +data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val w : UInt) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("ext_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + //return BvExt + TODO() + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + TODO("Not yet implemented") + } +} + +data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val u : BigInteger, val l : BigInteger) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("slice_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + val newU : BigInteger = u + BigInteger.valueOf(1) + return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(newU)) + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + return AssignStmt.of(value, getExpr() as Expr) + } +} + +data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2BinaryOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("binary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else op1.getExpr() as Expr + val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr + + return when(operator) + { + Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) + Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) + Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) + Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.UREM -> BvURemExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.SADDO -> TODO() + Btor2BinaryOperator.SDIVO -> TODO() + Btor2BinaryOperator.SMULO -> TODO() + Btor2BinaryOperator.SSUBO -> TODO() + Btor2BinaryOperator.UADDO -> TODO() + Btor2BinaryOperator.UMULO -> TODO() + Btor2BinaryOperator.USUBO -> TODO() + Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.READ -> TODO() + } + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + return when(operator) + { + Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.AND -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.NAND -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.NOR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.OR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.XNOR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.XOR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.MUL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.UDIV -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.UREM -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SDIV -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SREM -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SMOD -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.CONCAT -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SADDO -> TODO() + Btor2BinaryOperator.SDIVO -> TODO() + Btor2BinaryOperator.SMULO -> TODO() + Btor2BinaryOperator.SSUBO -> TODO() + Btor2BinaryOperator.UADDO -> TODO() + Btor2BinaryOperator.UMULO -> TODO() + Btor2BinaryOperator.USUBO -> TODO() + Btor2BinaryOperator.ROL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.ROR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SLL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SRA -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SRL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.READ -> TODO() + } + } +} + +data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2ComparisonOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("comparison_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr<*> { + val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else op1.getExpr() as Expr + val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr + return when(operator) + { + Btor2ComparisonOperator.EQ -> IteExpr.of(BvEqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + //Eq(op1_expr as RefExpr, op2_expr as RefExpr) + Btor2ComparisonOperator.NEQ -> IteExpr.of(BvNeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.SLT -> IteExpr.of(BvSLtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.SLTE -> IteExpr.of(BvSLeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.SGT -> IteExpr.of(BvSGtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.SGTE -> IteExpr.of(BvSGeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.ULT -> IteExpr.of(BvULtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.ULTE -> IteExpr.of(BvULeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.UGT -> IteExpr.of(BvUGtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + Btor2ComparisonOperator.UGTE -> IteExpr.of(BvUGeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false })) + } + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + return when(operator) + { + Btor2ComparisonOperator.EQ -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.NEQ -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.SLT -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.SLTE -> TODO() + Btor2ComparisonOperator.SGT -> TODO() + Btor2ComparisonOperator.SGTE -> TODO() + Btor2ComparisonOperator.ULT -> TODO() + Btor2ComparisonOperator.ULTE -> TODO() + Btor2ComparisonOperator.UGT -> TODO() + Btor2ComparisonOperator.UGTE -> TODO() + } + } +} + +// Ehhez a nidhez vezetünk be egy változót, bekötjük +data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor2Sort, val operator: Btor2TernaryOperator, + val op1: Btor2Node, val op2: Btor2Node, val op3: Btor2Node, val negated: Boolean) : Btor2Operation(nid, sort) +{ + val value = Decls.Var("ternary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + //checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) + + val op1Expr = if (negated) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) + val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) + return when(operator) + { + Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2.getExpr() as Expr, op3.getExpr() as Expr) + Btor2TernaryOperator.WRITE -> TODO() + } + } + + override fun accept(visitor: Btor2NodeVisitor, param : P): R { + return visitor.visit(this, param) + } + + override fun getStmt(negate: Boolean): Stmt { + return when(operator) + { + Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr() as Expr) + Btor2TernaryOperator.WRITE -> TODO() + } + + } } \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt index 3685bd9a7e..e32e34a781 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt @@ -1,85 +1,86 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.models -// Btor2Ext and Slice Operation already exists -//enum class Btor2IndexedOperator { -// SEXT, -// UEXT, -// SLICE -//} - -enum class Btor2UnaryOperator { - NOT, - INC, - DEC, - NEG, - REDAND, - REDOR, - REDXOR -} - -enum class Btor2ComparisonOperator { - EQ, - NEQ, - SLT, - SLTE, - SGT, - SGTE, - ULT, - ULTE, - UGT, - UGTE -} - -enum class Btor2BooleanOperator { - IFF, - IMPLIES -} - -enum class Btor2BinaryOperator { - AND, - NAND, - NOR, - OR, - XOR, - ADD, - MUL, - UDIV, - UREM, - SDIV, - SREM, - SMOD, - CONCAT, - SADDO, - SDIVO, - SMULO, - SSUBO, - UADDO, - UMULO, - USUBO, - ROL, - ROR, - SLL, - SRA, - SRL, - READ -} - -enum class Btor2TernaryOperator { - ITE, - WRITE -} +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.models +// Btor2Ext and Slice Operation already exists +//enum class Btor2IndexedOperator { +// SEXT, +// UEXT, +// SLICE +//} + +enum class Btor2UnaryOperator { + NOT, + INC, + DEC, + NEG, + REDAND, + REDOR, + REDXOR +} + +enum class Btor2ComparisonOperator { + EQ, + NEQ, + SLT, + SLTE, + SGT, + SGTE, + ULT, + ULTE, + UGT, + UGTE +} + +enum class Btor2BooleanOperator { + IFF, + IMPLIES +} + +enum class Btor2BinaryOperator { + AND, + NAND, + NOR, + OR, + XNOR, + XOR, + ADD, + MUL, + UDIV, + UREM, + SDIV, + SREM, + SMOD, + CONCAT, + SADDO, + SDIVO, + SMULO, + SSUBO, + UADDO, + UMULO, + USUBO, + ROL, + ROR, + SLL, + SRA, + SRL, + READ +} + +enum class Btor2TernaryOperator { + ITE, + WRITE +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt index fdf7d51dd3..10266277f4 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -1,102 +1,105 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.visitors - -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser -import hu.bme.mit.theta.frontend.models.* -import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts - -class ConstantVisitor : Btor2BaseVisitor() { - val idVisitor = IdVisitor() - - override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const { - check(ctx.childCount==1) - return this.visit(ctx.children[0]) - } - - override fun visitConstant(ctx: Btor2Parser.ConstantContext): Btor2Const { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - val value = ctx.NUM().text.toInt() - val size = sort.width.toInt() - val bin_array = BooleanArray(size) { index -> - (value shr (size - 1 - index)) and 1 == 1 - } - var node = Btor2Const(nid, bin_array, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitConstant_d(ctx: Btor2Parser.Constant_dContext): Btor2Const { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - val value = ctx.NUM().text.toInt() - val size = sort.width.toInt() - val bin_array = BooleanArray(size) { index -> - (value shr (size - 1 - index)) and 1 == 1 - } - var node = Btor2Const(nid, bin_array, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitConstant_h(ctx: Btor2Parser.Constant_hContext): Btor2Const { - //val nid = idVisitor.visit(ctx.id) - //val sid = idVisitor.visit(ctx.sid()) - //val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - //val value = ctx.SYMBOL().toString() - //val size = sort.width.toInt() - - //var node = Btor2Const(nid, bin_array, sort) - //Btor2Circuit.constants[nid] = node - //Btor2Circuit.nodes[nid] = node - //return node - TODO("Hexa not yet implemented") - } - - override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - val value = when(ctx.fill.text) { - "one" -> { - val size = sort.width.toInt() - BooleanArray(size) { it == size - 1 } - } - "ones" -> { - val size = sort.width.toInt() - BooleanArray(size) { true } - } - "zero" -> { - val size = sort.width.toInt() - BooleanArray(size) { false } - } - else -> { - throw RuntimeException("Constant with filler shorthand needs to be one/ones/zero") - } - } - var node = Btor2Const(nid, value, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* +import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts + +class ConstantVisitor : Btor2BaseVisitor() { + val idVisitor = IdVisitor() + + override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const { + check(ctx.childCount==1) + return this.visit(ctx.children[0]) + } + + override fun visitConstant(ctx: Btor2Parser.ConstantContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = ctx.NUM().text.toString() + val size = sort.width.toInt() + val binArray = BooleanArray(size) { index -> + (value[index] - '0') == 1 + } + var node = Btor2Const(nid, binArray, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitConstant_d(ctx: Btor2Parser.Constant_dContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = ctx.NUM().text.toInt() + val size = sort.width.toInt() + val binArray = BooleanArray(size) { index -> + ((value and ((1 shl size) - 1)) shr (size - 1 - index)) and 1 == 1 + } + var node = Btor2Const(nid, binArray, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitConstant_h(ctx: Btor2Parser.Constant_hContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = ctx.NUM().toString() + val size = sort.width.toInt() + val binArray = BooleanArray(size) { index -> + val hexDigit = value[index / 4] + val bitIndex = 3 - (index % 4) + ((hexDigit - '0') shr bitIndex and 1) == 1 + } + var node = Btor2Const(nid, binArray, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = when(ctx.fill.text) { + "one" -> { + val size = sort.width.toInt() + BooleanArray(size) { it == size - 1 } + } + "ones" -> { + val size = sort.width.toInt() + BooleanArray(size) { true } + } + "zero" -> { + val size = sort.width.toInt() + BooleanArray(size) { false } + } + else -> { + throw RuntimeException("Constant with filler shorthand needs to be one/ones/zero") + } + } + var node = Btor2Const(nid, value, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } } \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index fdc1bbab2e..3f29dd7bbd 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -1,172 +1,173 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.visitors - -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser -import hu.bme.mit.theta.frontend.models.* -import hu.bme.mit.theta.frontend.models.Btor2Circuit.nodes -import kotlin.math.abs - -class OperationVisitor : Btor2BaseVisitor() { - val idVisitor = IdVisitor() - override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Node { - check(ctx.childCount == 1) - return ctx.children[0].accept(this) - } - - override fun visitExt(ctx: Btor2Parser.ExtContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - - val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node - val w = ctx.w.text.toUInt() - - check(sort.width == (opd.sort as Btor2BitvecSort).width + w) - val node = Btor2ExtOperation(nid, sort, opd, w) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } - - override fun visitSlice(ctx: Btor2Parser.SliceContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - - val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node - val u = ctx.u.text.toBigInteger() - val l = ctx.l.text.toBigInteger() - - val node = Btor2SliceOperation(nid, sort, opd, u, l) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } - - override fun visitBinop(ctx: Btor2Parser.BinopContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - - val opd1_id = ctx.opd1.text.toInt() - val opd2_id = ctx.opd2.text.toInt() - - val opd1_negated = opd1_id < 0 - val opd2_negated = opd2_id < 0 - - val opd1 = nodes[abs(opd1_id).toUInt()] as Btor2Node - val opd2 = nodes[abs(opd2_id).toUInt()] as Btor2Node - - val op = when (ctx.BINOP().text) { - "and" -> Btor2BinaryOperator.AND - "nand" -> Btor2BinaryOperator.NAND - "nor" -> Btor2BinaryOperator.NOR - "or" -> Btor2BinaryOperator.OR - "xor" -> Btor2BinaryOperator.XOR - "add" -> Btor2BinaryOperator.ADD - "mul" -> Btor2BinaryOperator.MUL - "udiv" -> Btor2BinaryOperator.UDIV - "urem" -> Btor2BinaryOperator.UREM - "sdiv" -> Btor2BinaryOperator.SDIV - "srem" -> Btor2BinaryOperator.SREM - "smod" -> Btor2BinaryOperator.SMOD - "concat" -> Btor2BinaryOperator.CONCAT - "saddo" -> Btor2BinaryOperator.SADDO - "sdivo" -> Btor2BinaryOperator.SDIVO - "smulo" -> Btor2BinaryOperator.SMULO - "ssubo" -> Btor2BinaryOperator.SSUBO - "uaddo" -> Btor2BinaryOperator.UADDO - "umulo" -> Btor2BinaryOperator.UMULO - "usubo" -> Btor2BinaryOperator.USUBO - "rol" -> Btor2BinaryOperator.ROL - "ror" -> Btor2BinaryOperator.ROR - "sll" -> Btor2BinaryOperator.SLL - "sra" -> Btor2BinaryOperator.SRA - "srl" -> Btor2BinaryOperator.SRL - "eq" -> Btor2ComparisonOperator.EQ - "neq" -> Btor2ComparisonOperator.NEQ - "slt" -> Btor2ComparisonOperator.SLT - "slte" -> Btor2ComparisonOperator.SLTE - "sgt" -> Btor2ComparisonOperator.SGT - "sgte" -> Btor2ComparisonOperator.SGTE - "ult" -> Btor2ComparisonOperator.ULT - "ulte" -> Btor2ComparisonOperator.ULTE - "ugt" -> Btor2ComparisonOperator.UGT - "ugte" -> Btor2ComparisonOperator.UGTE - else -> throw RuntimeException("Binary operator unknown") - } - if (op is Btor2ComparisonOperator) { - val node = Btor2Comparison(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) - Btor2Circuit.nodes[nid] = node - return node - } - else if (op is Btor2BinaryOperator) { - val node = Btor2BinaryOperation(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } - else { - throw RuntimeException("Binary operator unknown") - } - } - - override fun visitUnop(ctx: Btor2Parser.UnopContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - - val op = when (ctx.UNARYOP().text) { - "not" -> Btor2UnaryOperator.NOT - "inc" -> Btor2UnaryOperator.INC - "dec" -> Btor2UnaryOperator.DEC - "neg" -> Btor2UnaryOperator.NEG - else -> throw RuntimeException("Unary operator unknown") - } - - val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node - - - val node = Btor2UnaryOperation(nid, sort, op, opd) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } - - override fun visitTerop(ctx: Btor2Parser.TeropContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - val op = when (ctx.TERNARYOP().text) { - "ite" -> Btor2TernaryOperator.ITE - "write" -> Btor2TernaryOperator.WRITE - else -> throw RuntimeException("Ternary operator unknown") - } - val negated = ctx.opd1.text.toInt() < 0 - - val opd1 = nodes[ctx.opd1.text.toUInt()] as Btor2Node - val opd2 = nodes[ctx.opd2.text.toUInt()] as Btor2Node - val opd3 = nodes[ctx.opd3.text.toUInt()] as Btor2Node - - val node = Btor2TernaryOperation(nid, sort, op, opd1, opd2, opd3, negated) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* +import hu.bme.mit.theta.frontend.models.Btor2Circuit.nodes +import kotlin.math.abs + +class OperationVisitor : Btor2BaseVisitor() { + val idVisitor = IdVisitor() + override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Node { + check(ctx.childCount == 1) + return ctx.children[0].accept(this) + } + + override fun visitExt(ctx: Btor2Parser.ExtContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val w = ctx.w.text.toUInt() + + check(sort.width == (opd.sort as Btor2BitvecSort).width + w) + val node = Btor2ExtOperation(nid, sort, opd, w) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + + override fun visitSlice(ctx: Btor2Parser.SliceContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val u = ctx.u.text.toBigInteger() + val l = ctx.l.text.toBigInteger() + + val node = Btor2SliceOperation(nid, sort, opd, u, l) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + + override fun visitBinop(ctx: Btor2Parser.BinopContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val opd1_id = ctx.opd1.text.toInt() + val opd2_id = ctx.opd2.text.toInt() + + val opd1_negated = opd1_id < 0 + val opd2_negated = opd2_id < 0 + + val opd1 = nodes[abs(opd1_id).toUInt()] as Btor2Node + val opd2 = nodes[abs(opd2_id).toUInt()] as Btor2Node + + val op = when (ctx.BINOP().text) { + "and" -> Btor2BinaryOperator.AND + "nand" -> Btor2BinaryOperator.NAND + "nor" -> Btor2BinaryOperator.NOR + "or" -> Btor2BinaryOperator.OR + "xnor" -> Btor2BinaryOperator.XNOR + "xor" -> Btor2BinaryOperator.XOR + "add" -> Btor2BinaryOperator.ADD + "mul" -> Btor2BinaryOperator.MUL + "udiv" -> Btor2BinaryOperator.UDIV + "urem" -> Btor2BinaryOperator.UREM + "sdiv" -> Btor2BinaryOperator.SDIV + "srem" -> Btor2BinaryOperator.SREM + "smod" -> Btor2BinaryOperator.SMOD + "concat" -> Btor2BinaryOperator.CONCAT + "saddo" -> Btor2BinaryOperator.SADDO + "sdivo" -> Btor2BinaryOperator.SDIVO + "smulo" -> Btor2BinaryOperator.SMULO + "ssubo" -> Btor2BinaryOperator.SSUBO + "uaddo" -> Btor2BinaryOperator.UADDO + "umulo" -> Btor2BinaryOperator.UMULO + "usubo" -> Btor2BinaryOperator.USUBO + "rol" -> Btor2BinaryOperator.ROL + "ror" -> Btor2BinaryOperator.ROR + "sll" -> Btor2BinaryOperator.SLL + "sra" -> Btor2BinaryOperator.SRA + "srl" -> Btor2BinaryOperator.SRL + "eq" -> Btor2ComparisonOperator.EQ + "neq" -> Btor2ComparisonOperator.NEQ + "slt" -> Btor2ComparisonOperator.SLT + "slte" -> Btor2ComparisonOperator.SLTE + "sgt" -> Btor2ComparisonOperator.SGT + "sgte" -> Btor2ComparisonOperator.SGTE + "ult" -> Btor2ComparisonOperator.ULT + "ulte" -> Btor2ComparisonOperator.ULTE + "ugt" -> Btor2ComparisonOperator.UGT + "ugte" -> Btor2ComparisonOperator.UGTE + else -> throw RuntimeException("Binary operator unknown") + } + if (op is Btor2ComparisonOperator) { + val node = Btor2Comparison(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) + Btor2Circuit.nodes[nid] = node + return node + } + else if (op is Btor2BinaryOperator) { + val node = Btor2BinaryOperation(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + else { + throw RuntimeException("Binary operator unknown") + } + } + + override fun visitUnop(ctx: Btor2Parser.UnopContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val op = when (ctx.UNARYOP().text) { + "not" -> Btor2UnaryOperator.NOT + "inc" -> Btor2UnaryOperator.INC + "dec" -> Btor2UnaryOperator.DEC + "neg" -> Btor2UnaryOperator.NEG + else -> throw RuntimeException("Unary operator unknown") + } + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + + + val node = Btor2UnaryOperation(nid, sort, op, opd) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + + override fun visitTerop(ctx: Btor2Parser.TeropContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + val op = when (ctx.TERNARYOP().text) { + "ite" -> Btor2TernaryOperator.ITE + "write" -> Btor2TernaryOperator.WRITE + else -> throw RuntimeException("Ternary operator unknown") + } + val negated = ctx.opd1.text.toInt() < 0 + + val opd1 = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val opd2 = nodes[ctx.opd2.text.toUInt()] as Btor2Node + val opd3 = nodes[ctx.opd3.text.toUInt()] as Btor2Node + + val node = Btor2TernaryOperation(nid, sort, op, opd1, opd2, opd3, negated) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } } \ No newline at end of file From 82ceee7489c13db550c8ed390c28d334c9ddf037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Wed, 25 Jun 2025 17:02:21 +0200 Subject: [PATCH 29/72] Sub added, fixed grammar --- .../frontends/btor2-frontend/src/main/antlr/Btor2.g4 | 7 +++++-- .../hu/bme/mit/theta/frontend/models/Btor2Operation.kt | 2 ++ .../hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt | 1 + .../hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index 39f32cd262..7514701bd0 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -4,7 +4,10 @@ grammar Btor2; // Lexer rules WS: [ ]+ -> skip; -NUM: (MINUS)? [0-9a-fA-F]+; +HEX: [0-9a-fA-F]+; +BIN: [0-1]+; +DEC: [0-9]; +NUM: (MINUS)? (HEX | BIN | DEC); PLUS: '+'; MINUS: '-'; UNARYOP: 'not' @@ -15,7 +18,7 @@ BINOP: 'and' | 'nand' | 'nor' | 'or' | 'xnor' | 'xor' | 'iff' | 'implies' | 'eq' | 'neq' | 'slt' | 'slte' | 'sgt' | 'sgte' | 'ult' | 'ulte' | 'ugt' | 'ugte' - | 'concat' | 'add' | 'mul' + | 'concat' | 'add' | 'mul' | 'sub' | 'udiv' | 'urem' | 'sdiv' | 'srem' | 'smod' | 'saddo' | 'sdivo' | 'smulo' | 'ssubo' diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 672ffc3888..81633346f4 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -146,6 +146,7 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.SUB -> BvSubExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.UREM -> BvURemExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1_expr as Expr, op2_expr as Expr) @@ -183,6 +184,7 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.XNOR -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.XOR -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.MUL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SUB -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.UDIV -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.UREM -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.SDIV -> AssignStmt.of(value, getExpr() as Expr) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt index e32e34a781..b36b8a7333 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt @@ -77,6 +77,7 @@ enum class Btor2BinaryOperator { SLL, SRA, SRL, + SUB, READ } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 3f29dd7bbd..49f1a6806f 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -82,6 +82,7 @@ class OperationVisitor : Btor2BaseVisitor() { "xor" -> Btor2BinaryOperator.XOR "add" -> Btor2BinaryOperator.ADD "mul" -> Btor2BinaryOperator.MUL + "sub" -> Btor2BinaryOperator.SUB "udiv" -> Btor2BinaryOperator.UDIV "urem" -> Btor2BinaryOperator.UREM "sdiv" -> Btor2BinaryOperator.SDIV From c621ca20081f50ed98a98c3801020b8881af0a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Thu, 26 Jun 2025 12:26:52 +0200 Subject: [PATCH 30/72] Fixed ite and init --- .../btor2-frontend/src/main/antlr/Btor2.g4 | 12 +- .../frontend/visitors/OperationVisitor.kt | 6 +- .../theta/frontend/visitors/StateVisitor.kt | 170 +++++++++--------- 3 files changed, 96 insertions(+), 92 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index 7514701bd0..d905ac068d 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -4,12 +4,6 @@ grammar Btor2; // Lexer rules WS: [ ]+ -> skip; -HEX: [0-9a-fA-F]+; -BIN: [0-1]+; -DEC: [0-9]; -NUM: (MINUS)? (HEX | BIN | DEC); -PLUS: '+'; -MINUS: '-'; UNARYOP: 'not' | 'inc' | 'dec' | 'neg' | 'redand' | 'redor' | 'redxor'; @@ -24,6 +18,12 @@ BINOP: 'and' | 'nand' | 'nor' | 'or' | 'xnor' | 'xor' | 'iff' | 'implies' | 'saddo' | 'sdivo' | 'smulo' | 'ssubo' | 'uaddo' | 'umulo' | 'usubo' | 'rol' | 'ror' | 'sll' | 'sra' | 'srl' | 'read'; +NUM: (MINUS)? (HEX | BIN | DEC); +HEX: [0-9a-fA-F]+; +BIN: [0-1]+; +DEC: [0-9]; +PLUS: '+'; +MINUS: '-'; SYMBOL: ~[ \r\n]+; COMMENT: ';' ~[\r\n]+; diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 49f1a6806f..3ea2b79c4f 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -139,6 +139,9 @@ class OperationVisitor : Btor2BaseVisitor() { "inc" -> Btor2UnaryOperator.INC "dec" -> Btor2UnaryOperator.DEC "neg" -> Btor2UnaryOperator.NEG + "redand" -> Btor2UnaryOperator.REDAND + "redor" -> Btor2UnaryOperator.REDOR + "redxor" -> Btor2UnaryOperator.REDXOR else -> throw RuntimeException("Unary operator unknown") } @@ -161,8 +164,9 @@ class OperationVisitor : Btor2BaseVisitor() { else -> throw RuntimeException("Ternary operator unknown") } val negated = ctx.opd1.text.toInt() < 0 + val opd1_index = abs(ctx.opd1.text.toInt()).toUInt() - val opd1 = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val opd1 = nodes[opd1_index] as Btor2Node val opd2 = nodes[ctx.opd2.text.toUInt()] as Btor2Node val opd3 = nodes[ctx.opd3.text.toUInt()] as Btor2Node diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index 72b3247832..c0646bb885 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -1,86 +1,86 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.visitors - -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser -import hu.bme.mit.theta.frontend.models.* - -class StateVisitor : Btor2BaseVisitor() { - private val idVisitor = IdVisitor() - - override fun visitStateful(ctx: Btor2Parser.StatefulContext): Btor2Node { - check(ctx.childCount==1) - return ctx.children[0].accept(this) - } - - override fun visitState(ctx: Btor2Parser.StateContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort = Btor2Circuit.sorts[sid] as Btor2Sort - - val node = Btor2State(nid, sort, null, null) - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitInput(ctx: Btor2Parser.InputContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort = Btor2Circuit.sorts[sid] as Btor2Sort - - val node = Btor2Input(nid, sort, null, null) - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitInit(ctx: Btor2Parser.InitContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort = Btor2Circuit.sorts[sid]!! - - val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State - val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Const - - - check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) - val node = Btor2Init(nid, sort, param1, param2) - Btor2Circuit.states[nid] = node - return node - } - - override fun visitNext(ctx: Btor2Parser.NextContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort = Btor2Circuit.sorts[sid] as Btor2Sort - - val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State - val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Node - val node = Btor2Next(nid, sort, param1, param2) - Btor2Circuit.states[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } -// Only adding bads - override fun visitProperty(ctx: Btor2Parser.PropertyContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) - Btor2Circuit.properties[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package hu.bme.mit.theta.frontend.visitors + +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* + +class StateVisitor : Btor2BaseVisitor() { + private val idVisitor = IdVisitor() + + override fun visitStateful(ctx: Btor2Parser.StatefulContext): Btor2Node { + check(ctx.childCount==1) + return ctx.children[0].accept(this) + } + + override fun visitState(ctx: Btor2Parser.StateContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val node = Btor2State(nid, sort, null, null) + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitInput(ctx: Btor2Parser.InputContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val node = Btor2Input(nid, sort, null, null) + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitInit(ctx: Btor2Parser.InitContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid]!! + + val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State + val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Node + + + check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) + val node = Btor2Init(nid, sort, param1, param2) + Btor2Circuit.states[nid] = node + return node + } + + override fun visitNext(ctx: Btor2Parser.NextContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State + val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Node + val node = Btor2Next(nid, sort, param1, param2) + Btor2Circuit.states[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } +// Only adding bads + override fun visitProperty(ctx: Btor2Parser.PropertyContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) + Btor2Circuit.properties[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } } \ No newline at end of file From 6a3077c62d2eb6a785138016be1df1ec9ccc58c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sat, 5 Jul 2025 19:34:41 +0200 Subject: [PATCH 31/72] Ite might be fixed --- .../theta/frontend/models/Btor2Operation.kt | 13 +- .../theta/frontend/visitors/Btor2Visitor.kt | 10 +- .../frontend/visitors/OperationVisitor.kt | 20 +- .../btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 2 +- .../adding.1.prop1-back-serstep.btor2 | 179 - .../adding.1.prop1-func-interl.btor2 | 144 - .../adding.2.prop1-back-serstep.btor2 | 179 - .../adding.2.prop1-func-interl.btor2 | 144 - .../adding.3.prop1-back-serstep.btor2 | 179 - .../adding.3.prop1-func-interl.btor2 | 144 - .../adding.4.prop1-back-serstep.btor2 | 179 - .../adding.4.prop1-func-interl.btor2 | 144 - .../adding.5.prop1-back-serstep.btor2 | 179 - .../adding.5.prop1-func-interl.btor2 | 144 - .../anderson.1.prop1-back-serstep.btor2 | 340 ++ .../anderson.1.prop1-func-interl.btor2 | 286 ++ .../anderson.2.prop1-back-serstep.btor2 | 504 ++ .../anderson.2.prop1-func-interl.btor2 | 422 ++ .../src/test/resources/bv_debug_0.btor2 | 70 - .../src/test/resources/bv_debug_1.btor2 | 70 - .../src/test/resources/bv_debug_2.btor2 | 55 - .../src/test/resources/bv_debug_3.btor2 | 45 - .../src/test/resources/bv_debug_4.btor2 | 52 - .../src/test/resources/bv_debug_5.btor2 | 54 - .../src/test/resources/bv_debug_6.btor2 | 48 - .../src/test/resources/cav14_example.btor2 | 38 - .../btor2xcfa/src/test/resources/count2.btor2 | 11 - .../btor2xcfa/src/test/resources/count4.btor2 | 11 - .../src/test/resources/factorial4even.btor2 | 26 - .../src/test/resources/noninitstate.btor2 | 17 - .../resources/ponylink-slaveTXlen-sat.btor2 | 4180 ----------------- .../src/test/resources/recount4.btor2 | 15 - .../src/test/resources/run-examples.sh | 78 - .../src/test/resources/twocount2.btor2 | 20 - .../src/test/resources/twocount2c.btor2 | 23 - .../src/test/resources/twocount32.btor2 | 20 - 36 files changed, 1579 insertions(+), 6466 deletions(-) delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_0.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_1.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_2.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_3.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_4.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_5.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_6.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/cav14_example.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/count4.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/noninitstate.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/ponylink-slaveTXlen-sat.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/recount4.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/run-examples.sh delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/twocount2.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/twocount2c.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/twocount32.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 81633346f4..740a64c534 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -278,7 +278,8 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort // Ehhez a nidhez vezetünk be egy változót, bekötjük data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor2Sort, val operator: Btor2TernaryOperator, - val op1: Btor2Node, val op2: Btor2Node, val op3: Btor2Node, val negated: Boolean) : Btor2Operation(nid, sort) + val op1: Btor2Node, val op2: Btor2Node, val op3: Btor2Node, + val negated1: Boolean, val negated2: Boolean, val negated3: Boolean) : Btor2Operation(nid, sort) { val value = Decls.Var("ternary_$nid", BvExprs.BvType(sort.width.toInt())) @@ -288,12 +289,16 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor override fun getExpr(): Expr { //checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) - - val op1Expr = if (negated) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) + val op1Expr = if (negated1) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) + val op2Expr = if (negated2) BvNotExpr.create(op2.getExpr() as Expr) else (op2.getExpr() as Expr ) + val op2ExprBool = Eq(op2Expr, BvExprs.Bv(BooleanArray(1) { true })) + val op3Expr = if (negated3) BvNotExpr.create(op3.getExpr() as Expr) else (op3.getExpr() as Expr ) + val op3ExprBool = Eq(op3Expr, BvExprs.Bv(BooleanArray(1) { true })) + return when(operator) { - Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2.getExpr() as Expr, op3.getExpr() as Expr) + Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2ExprBool as Expr, op3ExprBool as Expr) Btor2TernaryOperator.WRITE -> TODO() } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index 153c4b42aa..94e9535d1f 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -28,7 +28,7 @@ class Btor2Visitor : Btor2BaseVisitor() { private val constantVisitor = ConstantVisitor() private val operationVisitor = OperationVisitor() private val statefulVisitor = StateVisitor() - private val logger = ConsoleLogger(Logger.Level.VERBOSE) + //private val logger = ConsoleLogger(Logger.Level.VERBOSE) override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { for (child in ctx?.children!!) { @@ -39,23 +39,23 @@ class Btor2Visitor : Btor2BaseVisitor() { override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { val result = sortVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Visiting sort: " + result + "\n") + //logger.write(Logger.Level.VERBOSE, "Visiting sort: " + result + "\n") Btor2Circuit.sorts[result.sid] = result return Btor2Circuit } override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting constant: " + constantVisitor.visit(ctx) + "\n") + //logger.write(Logger.Level.VERBOSE, "Visiting constant: " + constantVisitor.visit(ctx) + "\n") return Btor2Circuit } override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting operation: " + operationVisitor.visit(ctx) + "\n") + //logger.write(Logger.Level.VERBOSE, "Visiting operation: " + operationVisitor.visit(ctx) + "\n") return Btor2Circuit } override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { - logger.write(Logger.Level.VERBOSE, "Visiting stateful: " + statefulVisitor.visit(ctx) + "\n") + //logger.write(Logger.Level.VERBOSE, "Visiting stateful: " + statefulVisitor.visit(ctx) + "\n") return Btor2Circuit } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 3ea2b79c4f..acf87418c9 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -163,14 +163,18 @@ class OperationVisitor : Btor2BaseVisitor() { "write" -> Btor2TernaryOperator.WRITE else -> throw RuntimeException("Ternary operator unknown") } - val negated = ctx.opd1.text.toInt() < 0 - val opd1_index = abs(ctx.opd1.text.toInt()).toUInt() - - val opd1 = nodes[opd1_index] as Btor2Node - val opd2 = nodes[ctx.opd2.text.toUInt()] as Btor2Node - val opd3 = nodes[ctx.opd3.text.toUInt()] as Btor2Node - - val node = Btor2TernaryOperation(nid, sort, op, opd1, opd2, opd3, negated) + val negated1 = ctx.opd1.text.toInt() < 0 + val opd1Index = abs(ctx.opd1.text.toInt()).toUInt() + val negated2 = ctx.opd2.text.toInt() < 0 + val negated3 = ctx.opd3.text.toInt() < 0 + val opd2Index = abs(ctx.opd2.text.toInt()).toUInt() + val opd3Index = abs(ctx.opd3.text.toInt()).toUInt() + + val opd1 = nodes[opd1Index] as Btor2Node + val opd2 = nodes[opd2Index] as Btor2Node + val opd3 = nodes[opd3Index] as Btor2Node + + val node = Btor2TernaryOperation(nid, sort, op, opd1, opd2, opd3, negated1, negated2, negated3) Btor2Circuit.nodes[nid] = node Btor2Circuit.ops[nid] = node return node diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index 1f2638f02a..65af52860d 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -33,7 +33,7 @@ class TestBtor2Xcfa { fun testBtor2Xcfa() { val logger = ConsoleLogger(Logger.Level.VERBOSE) val visitor = Btor2Visitor() - val btor2File = File("src/test/resources/adding.1.prop1-back-serstep.btor2") + val btor2File = File("") val input = btor2File.readLines().joinToString("\n") val cinput = CharStreams.fromString(input) diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 deleted file mode 100644 index 235dcdd01d..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 +++ /dev/null @@ -1,179 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 nextv_c -7 init 3 6 5 -8 state 3 nextv_x1 -9 init 3 8 5 -10 state 3 nextv_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 nexta_Q_a1 -14 init 1 13 12 -15 state 1 nexta_R_a1 -16 init 1 15 12 -17 state 1 nexta_S_a1 -18 init 1 17 12 -19 state 1 nexta_Q_a2 -20 init 1 19 12 -21 state 1 nexta_R_a2 -22 init 1 21 12 -23 state 1 nexta_S_a2 -24 init 1 23 12 -25 state 1 dve_initialized -26 init 1 25 12 -27 state 1 dve_valid -28 init 1 27 12 -29 and 1 13 -15 -30 and 1 29 -17 -31 and 1 30 19 -32 and 1 31 -21 -33 and 1 32 -23 -34 constd 3 1 -35 eq 1 34 6 -36 and 1 33 35 -37 constd 3 0 -38 eq 1 37 8 -39 and 1 36 38 -40 eq 1 37 10 -41 and 1 39 40 -42 and 1 27 41 -43 bad 42 -44 input 3 v_c -45 next 3 6 44 -46 input 3 v_x1 -47 next 3 8 46 -48 input 3 v_x2 -49 next 3 10 48 -50 input 1 a_Q_a1 -51 next 1 13 50 -52 input 1 a_R_a1 -53 next 1 15 52 -54 input 1 a_S_a1 -55 next 1 17 54 -56 input 1 a_Q_a2 -57 next 1 19 56 -58 input 1 a_R_a2 -59 next 1 21 58 -60 input 1 a_S_a2 -61 next 1 23 60 -62 const 1 1 -63 next 1 25 62 -64 input 1 f0 -65 constd 4 20 -66 constd 3 0 -67 concat 4 44 66 -68 constd 4 16 -69 sra 4 67 68 -70 ulte 1 65 69 -71 and 1 50 -70 -72 or 1 -64 71 -73 or 1 52 64 -74 input 1 f1 -75 or 1 73 -74 -76 and 1 72 75 -77 or 1 54 74 -78 input 1 f2 -79 or 1 77 -78 -80 and 1 76 79 -81 input 1 f3 -82 ite 3 64 44 46 -83 concat 4 82 66 -84 sra 4 83 68 -85 add 4 69 84 -86 slice 3 85 15 0 -87 ite 3 74 86 82 -88 ite 3 78 87 44 -89 concat 4 88 66 -90 sra 4 89 68 -91 ulte 1 65 90 -92 and 1 56 -91 -93 or 1 -81 92 -94 and 1 80 93 -95 or 1 58 81 -96 input 1 f4 -97 or 1 95 -96 -98 and 1 94 97 -99 or 1 60 96 -100 input 1 f5 -101 or 1 99 -100 -102 and 1 98 101 -103 or 1 64 74 -104 or 1 78 103 -105 or 1 81 104 -106 or 1 96 105 -107 or 1 100 106 -108 and 1 102 107 -109 and 1 50 52 -110 or 1 50 52 -111 and 1 54 110 -112 or 1 109 111 -113 or 1 54 110 -114 and 1 -112 113 -115 and 1 56 58 -116 or 1 56 58 -117 and 1 60 116 -118 or 1 115 117 -119 and 1 114 -118 -120 or 1 60 116 -121 and 1 119 120 -122 and 1 108 121 -123 and 1 73 -74 -124 and 1 50 -64 -125 or 1 124 78 -126 and 1 123 125 -127 and 1 77 -78 -128 or 1 123 125 -129 and 1 127 128 -130 or 1 126 129 -131 or 1 127 128 -132 and 1 -130 131 -133 and 1 95 -96 -134 and 1 56 -81 -135 or 1 134 100 -136 and 1 133 135 -137 and 1 99 -100 -138 or 1 133 135 -139 and 1 137 138 -140 or 1 136 139 -141 and 1 132 -140 -142 or 1 137 138 -143 and 1 141 142 -144 and 1 122 143 -145 ite 3 81 88 48 -146 concat 4 145 66 -147 sra 4 146 68 -148 add 4 90 147 -149 slice 3 148 15 0 -150 ite 3 96 149 145 -151 ite 3 100 150 88 -152 eq 1 151 6 -153 and 1 144 152 -154 eq 1 87 8 -155 and 1 153 154 -156 eq 1 150 10 -157 and 1 155 156 -158 eq 1 125 13 -159 and 1 157 158 -160 eq 1 123 15 -161 and 1 159 160 -162 eq 1 127 17 -163 and 1 161 162 -164 eq 1 135 19 -165 and 1 163 164 -166 eq 1 133 21 -167 and 1 165 166 -168 eq 1 137 23 -169 and 1 167 168 -170 and 1 169 27 -171 constd 4 17 -172 eq 1 171 69 -173 ite 1 25 170 172 -174 next 1 27 173 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 deleted file mode 100644 index 5b600358b7..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 +++ /dev/null @@ -1,144 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 v_c -7 init 3 6 5 -8 state 3 v_x1 -9 init 3 8 5 -10 state 3 v_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 a_Q_a1 -14 init 1 13 12 -15 state 1 a_R_a1 -16 init 1 15 12 -17 state 1 a_S_a1 -18 init 1 17 12 -19 state 1 a_Q_a2 -20 init 1 19 12 -21 state 1 a_R_a2 -22 init 1 21 12 -23 state 1 a_S_a2 -24 init 1 23 12 -25 state 1 dve_invalid -26 init 1 25 12 -27 constd 4 17 -28 constd 3 1 -29 xor 3 28 6 -30 constd 3 0 -31 concat 4 29 30 -32 constd 4 16 -33 sra 4 31 32 -34 eq 1 27 33 -35 and 1 -25 34 -36 bad 35 -37 input 1 f5 -38 input 1 f2 -39 ite 3 38 8 29 -40 ite 3 37 10 39 -41 xor 3 28 40 -42 next 3 6 41 -43 input 1 f1 -44 concat 4 8 30 -45 sra 4 44 32 -46 add 4 33 45 -47 slice 3 46 15 0 -48 input 1 f0 -49 ite 3 48 29 8 -50 ite 3 43 47 49 -51 next 3 8 50 -52 input 1 f4 -53 concat 4 10 30 -54 sra 4 53 32 -55 add 4 33 54 -56 slice 3 55 15 0 -57 input 1 f3 -58 ite 3 57 29 10 -59 ite 3 52 56 58 -60 next 3 10 59 -61 and 1 -13 -48 -62 or 1 61 38 -63 next 1 13 -62 -64 or 1 15 48 -65 and 1 64 -43 -66 next 1 15 65 -67 or 1 17 43 -68 and 1 67 -38 -69 next 1 17 68 -70 and 1 -19 -57 -71 or 1 70 37 -72 next 1 19 -71 -73 or 1 21 57 -74 and 1 73 -52 -75 next 1 21 74 -76 or 1 23 52 -77 and 1 76 -37 -78 next 1 23 77 -79 constd 4 20 -80 ulte 1 79 33 -81 and 1 -13 -80 -82 or 1 -48 81 -83 or 1 15 -43 -84 and 1 82 83 -85 or 1 17 -38 -86 and 1 84 85 -87 and 1 -19 -80 -88 or 1 -57 87 -89 and 1 86 88 -90 or 1 21 -52 -91 and 1 89 90 -92 or 1 23 -37 -93 and 1 91 92 -94 or 1 48 43 -95 or 1 38 94 -96 or 1 57 95 -97 or 1 52 96 -98 or 1 37 97 -99 and 1 93 98 -100 and 1 48 43 -101 and 1 38 94 -102 or 1 100 101 -103 and 1 57 95 -104 or 1 102 103 -105 and 1 52 96 -106 or 1 104 105 -107 and 1 37 97 -108 or 1 106 107 -109 and 1 99 -108 -110 and 1 -13 15 -111 or 1 -13 15 -112 and 1 17 111 -113 or 1 110 112 -114 or 1 17 111 -115 and 1 -113 114 -116 and 1 -19 21 -117 or 1 -19 21 -118 and 1 23 117 -119 or 1 116 118 -120 and 1 115 -119 -121 or 1 23 117 -122 and 1 120 121 -123 and 1 109 122 -124 and 1 65 62 -125 or 1 65 62 -126 and 1 68 125 -127 or 1 124 126 -128 or 1 68 125 -129 and 1 -127 128 -130 and 1 74 71 -131 or 1 74 71 -132 and 1 77 131 -133 or 1 130 132 -134 and 1 129 -133 -135 or 1 77 131 -136 and 1 134 135 -137 and 1 123 136 -138 and 1 137 -25 -139 next 1 25 -138 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-back-serstep.btor2 deleted file mode 100644 index 1e26469619..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-back-serstep.btor2 +++ /dev/null @@ -1,179 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 nextv_c -7 init 3 6 5 -8 state 3 nextv_x1 -9 init 3 8 5 -10 state 3 nextv_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 nexta_Q_a1 -14 init 1 13 12 -15 state 1 nexta_R_a1 -16 init 1 15 12 -17 state 1 nexta_S_a1 -18 init 1 17 12 -19 state 1 nexta_Q_a2 -20 init 1 19 12 -21 state 1 nexta_R_a2 -22 init 1 21 12 -23 state 1 nexta_S_a2 -24 init 1 23 12 -25 state 1 dve_initialized -26 init 1 25 12 -27 state 1 dve_valid -28 init 1 27 12 -29 and 1 13 -15 -30 and 1 29 -17 -31 and 1 30 19 -32 and 1 31 -21 -33 and 1 32 -23 -34 constd 3 1 -35 eq 1 34 6 -36 and 1 33 35 -37 constd 3 0 -38 eq 1 37 8 -39 and 1 36 38 -40 eq 1 37 10 -41 and 1 39 40 -42 and 1 27 41 -43 bad 42 -44 input 3 v_c -45 next 3 6 44 -46 input 3 v_x1 -47 next 3 8 46 -48 input 3 v_x2 -49 next 3 10 48 -50 input 1 a_Q_a1 -51 next 1 13 50 -52 input 1 a_R_a1 -53 next 1 15 52 -54 input 1 a_S_a1 -55 next 1 17 54 -56 input 1 a_Q_a2 -57 next 1 19 56 -58 input 1 a_R_a2 -59 next 1 21 58 -60 input 1 a_S_a2 -61 next 1 23 60 -62 const 1 1 -63 next 1 25 62 -64 input 1 f0 -65 constd 4 200 -66 constd 3 0 -67 concat 4 44 66 -68 constd 4 16 -69 sra 4 67 68 -70 ulte 1 65 69 -71 and 1 50 -70 -72 or 1 -64 71 -73 or 1 52 64 -74 input 1 f1 -75 or 1 73 -74 -76 and 1 72 75 -77 or 1 54 74 -78 input 1 f2 -79 or 1 77 -78 -80 and 1 76 79 -81 input 1 f3 -82 ite 3 64 44 46 -83 concat 4 82 66 -84 sra 4 83 68 -85 add 4 69 84 -86 slice 3 85 15 0 -87 ite 3 74 86 82 -88 ite 3 78 87 44 -89 concat 4 88 66 -90 sra 4 89 68 -91 ulte 1 65 90 -92 and 1 56 -91 -93 or 1 -81 92 -94 and 1 80 93 -95 or 1 58 81 -96 input 1 f4 -97 or 1 95 -96 -98 and 1 94 97 -99 or 1 60 96 -100 input 1 f5 -101 or 1 99 -100 -102 and 1 98 101 -103 or 1 64 74 -104 or 1 78 103 -105 or 1 81 104 -106 or 1 96 105 -107 or 1 100 106 -108 and 1 102 107 -109 and 1 50 52 -110 or 1 50 52 -111 and 1 54 110 -112 or 1 109 111 -113 or 1 54 110 -114 and 1 -112 113 -115 and 1 56 58 -116 or 1 56 58 -117 and 1 60 116 -118 or 1 115 117 -119 and 1 114 -118 -120 or 1 60 116 -121 and 1 119 120 -122 and 1 108 121 -123 and 1 73 -74 -124 and 1 50 -64 -125 or 1 124 78 -126 and 1 123 125 -127 and 1 77 -78 -128 or 1 123 125 -129 and 1 127 128 -130 or 1 126 129 -131 or 1 127 128 -132 and 1 -130 131 -133 and 1 95 -96 -134 and 1 56 -81 -135 or 1 134 100 -136 and 1 133 135 -137 and 1 99 -100 -138 or 1 133 135 -139 and 1 137 138 -140 or 1 136 139 -141 and 1 132 -140 -142 or 1 137 138 -143 and 1 141 142 -144 and 1 122 143 -145 ite 3 81 88 48 -146 concat 4 145 66 -147 sra 4 146 68 -148 add 4 90 147 -149 slice 3 148 15 0 -150 ite 3 96 149 145 -151 ite 3 100 150 88 -152 eq 1 151 6 -153 and 1 144 152 -154 eq 1 87 8 -155 and 1 153 154 -156 eq 1 150 10 -157 and 1 155 156 -158 eq 1 125 13 -159 and 1 157 158 -160 eq 1 123 15 -161 and 1 159 160 -162 eq 1 127 17 -163 and 1 161 162 -164 eq 1 135 19 -165 and 1 163 164 -166 eq 1 133 21 -167 and 1 165 166 -168 eq 1 137 23 -169 and 1 167 168 -170 and 1 169 27 -171 constd 4 500 -172 eq 1 171 69 -173 ite 1 25 170 172 -174 next 1 27 173 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-func-interl.btor2 deleted file mode 100644 index adc0ef1339..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.2.prop1-func-interl.btor2 +++ /dev/null @@ -1,144 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 v_c -7 init 3 6 5 -8 state 3 v_x1 -9 init 3 8 5 -10 state 3 v_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 a_Q_a1 -14 init 1 13 12 -15 state 1 a_R_a1 -16 init 1 15 12 -17 state 1 a_S_a1 -18 init 1 17 12 -19 state 1 a_Q_a2 -20 init 1 19 12 -21 state 1 a_R_a2 -22 init 1 21 12 -23 state 1 a_S_a2 -24 init 1 23 12 -25 state 1 dve_invalid -26 init 1 25 12 -27 constd 4 500 -28 constd 3 1 -29 xor 3 28 6 -30 constd 3 0 -31 concat 4 29 30 -32 constd 4 16 -33 sra 4 31 32 -34 eq 1 27 33 -35 and 1 -25 34 -36 bad 35 -37 input 1 f5 -38 input 1 f2 -39 ite 3 38 8 29 -40 ite 3 37 10 39 -41 xor 3 28 40 -42 next 3 6 41 -43 input 1 f1 -44 concat 4 8 30 -45 sra 4 44 32 -46 add 4 33 45 -47 slice 3 46 15 0 -48 input 1 f0 -49 ite 3 48 29 8 -50 ite 3 43 47 49 -51 next 3 8 50 -52 input 1 f4 -53 concat 4 10 30 -54 sra 4 53 32 -55 add 4 33 54 -56 slice 3 55 15 0 -57 input 1 f3 -58 ite 3 57 29 10 -59 ite 3 52 56 58 -60 next 3 10 59 -61 and 1 -13 -48 -62 or 1 61 38 -63 next 1 13 -62 -64 or 1 15 48 -65 and 1 64 -43 -66 next 1 15 65 -67 or 1 17 43 -68 and 1 67 -38 -69 next 1 17 68 -70 and 1 -19 -57 -71 or 1 70 37 -72 next 1 19 -71 -73 or 1 21 57 -74 and 1 73 -52 -75 next 1 21 74 -76 or 1 23 52 -77 and 1 76 -37 -78 next 1 23 77 -79 constd 4 200 -80 ulte 1 79 33 -81 and 1 -13 -80 -82 or 1 -48 81 -83 or 1 15 -43 -84 and 1 82 83 -85 or 1 17 -38 -86 and 1 84 85 -87 and 1 -19 -80 -88 or 1 -57 87 -89 and 1 86 88 -90 or 1 21 -52 -91 and 1 89 90 -92 or 1 23 -37 -93 and 1 91 92 -94 or 1 48 43 -95 or 1 38 94 -96 or 1 57 95 -97 or 1 52 96 -98 or 1 37 97 -99 and 1 93 98 -100 and 1 48 43 -101 and 1 38 94 -102 or 1 100 101 -103 and 1 57 95 -104 or 1 102 103 -105 and 1 52 96 -106 or 1 104 105 -107 and 1 37 97 -108 or 1 106 107 -109 and 1 99 -108 -110 and 1 -13 15 -111 or 1 -13 15 -112 and 1 17 111 -113 or 1 110 112 -114 or 1 17 111 -115 and 1 -113 114 -116 and 1 -19 21 -117 or 1 -19 21 -118 and 1 23 117 -119 or 1 116 118 -120 and 1 115 -119 -121 or 1 23 117 -122 and 1 120 121 -123 and 1 109 122 -124 and 1 65 62 -125 or 1 65 62 -126 and 1 68 125 -127 or 1 124 126 -128 or 1 68 125 -129 and 1 -127 128 -130 and 1 74 71 -131 or 1 74 71 -132 and 1 77 131 -133 or 1 130 132 -134 and 1 129 -133 -135 or 1 77 131 -136 and 1 134 135 -137 and 1 123 136 -138 and 1 137 -25 -139 next 1 25 -138 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 deleted file mode 100644 index 34ac31f2c1..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 +++ /dev/null @@ -1,179 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 nextv_c -7 init 3 6 5 -8 state 3 nextv_x1 -9 init 3 8 5 -10 state 3 nextv_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 nexta_Q_a1 -14 init 1 13 12 -15 state 1 nexta_R_a1 -16 init 1 15 12 -17 state 1 nexta_S_a1 -18 init 1 17 12 -19 state 1 nexta_Q_a2 -20 init 1 19 12 -21 state 1 nexta_R_a2 -22 init 1 21 12 -23 state 1 nexta_S_a2 -24 init 1 23 12 -25 state 1 dve_initialized -26 init 1 25 12 -27 state 1 dve_valid -28 init 1 27 12 -29 and 1 13 -15 -30 and 1 29 -17 -31 and 1 30 19 -32 and 1 31 -21 -33 and 1 32 -23 -34 constd 3 1 -35 eq 1 34 6 -36 and 1 33 35 -37 constd 3 0 -38 eq 1 37 8 -39 and 1 36 38 -40 eq 1 37 10 -41 and 1 39 40 -42 and 1 27 41 -43 bad 42 -44 input 3 v_c -45 next 3 6 44 -46 input 3 v_x1 -47 next 3 8 46 -48 input 3 v_x2 -49 next 3 10 48 -50 input 1 a_Q_a1 -51 next 1 13 50 -52 input 1 a_R_a1 -53 next 1 15 52 -54 input 1 a_S_a1 -55 next 1 17 54 -56 input 1 a_Q_a2 -57 next 1 19 56 -58 input 1 a_R_a2 -59 next 1 21 58 -60 input 1 a_S_a2 -61 next 1 23 60 -62 const 1 1 -63 next 1 25 62 -64 input 1 f0 -65 constd 4 300 -66 constd 3 0 -67 concat 4 44 66 -68 constd 4 16 -69 sra 4 67 68 -70 ulte 1 65 69 -71 and 1 50 -70 -72 or 1 -64 71 -73 or 1 52 64 -74 input 1 f1 -75 or 1 73 -74 -76 and 1 72 75 -77 or 1 54 74 -78 input 1 f2 -79 or 1 77 -78 -80 and 1 76 79 -81 input 1 f3 -82 ite 3 64 44 46 -83 concat 4 82 66 -84 sra 4 83 68 -85 add 4 69 84 -86 slice 3 85 15 0 -87 ite 3 74 86 82 -88 ite 3 78 87 44 -89 concat 4 88 66 -90 sra 4 89 68 -91 ulte 1 65 90 -92 and 1 56 -91 -93 or 1 -81 92 -94 and 1 80 93 -95 or 1 58 81 -96 input 1 f4 -97 or 1 95 -96 -98 and 1 94 97 -99 or 1 60 96 -100 input 1 f5 -101 or 1 99 -100 -102 and 1 98 101 -103 or 1 64 74 -104 or 1 78 103 -105 or 1 81 104 -106 or 1 96 105 -107 or 1 100 106 -108 and 1 102 107 -109 and 1 50 52 -110 or 1 50 52 -111 and 1 54 110 -112 or 1 109 111 -113 or 1 54 110 -114 and 1 -112 113 -115 and 1 56 58 -116 or 1 56 58 -117 and 1 60 116 -118 or 1 115 117 -119 and 1 114 -118 -120 or 1 60 116 -121 and 1 119 120 -122 and 1 108 121 -123 and 1 73 -74 -124 and 1 50 -64 -125 or 1 124 78 -126 and 1 123 125 -127 and 1 77 -78 -128 or 1 123 125 -129 and 1 127 128 -130 or 1 126 129 -131 or 1 127 128 -132 and 1 -130 131 -133 and 1 95 -96 -134 and 1 56 -81 -135 or 1 134 100 -136 and 1 133 135 -137 and 1 99 -100 -138 or 1 133 135 -139 and 1 137 138 -140 or 1 136 139 -141 and 1 132 -140 -142 or 1 137 138 -143 and 1 141 142 -144 and 1 122 143 -145 ite 3 81 88 48 -146 concat 4 145 66 -147 sra 4 146 68 -148 add 4 90 147 -149 slice 3 148 15 0 -150 ite 3 96 149 145 -151 ite 3 100 150 88 -152 eq 1 151 6 -153 and 1 144 152 -154 eq 1 87 8 -155 and 1 153 154 -156 eq 1 150 10 -157 and 1 155 156 -158 eq 1 125 13 -159 and 1 157 158 -160 eq 1 123 15 -161 and 1 159 160 -162 eq 1 127 17 -163 and 1 161 162 -164 eq 1 135 19 -165 and 1 163 164 -166 eq 1 133 21 -167 and 1 165 166 -168 eq 1 137 23 -169 and 1 167 168 -170 and 1 169 27 -171 constd 4 637 -172 eq 1 171 69 -173 ite 1 25 170 172 -174 next 1 27 173 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-func-interl.btor2 deleted file mode 100644 index 8ca4da0ba9..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-func-interl.btor2 +++ /dev/null @@ -1,144 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 v_c -7 init 3 6 5 -8 state 3 v_x1 -9 init 3 8 5 -10 state 3 v_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 a_Q_a1 -14 init 1 13 12 -15 state 1 a_R_a1 -16 init 1 15 12 -17 state 1 a_S_a1 -18 init 1 17 12 -19 state 1 a_Q_a2 -20 init 1 19 12 -21 state 1 a_R_a2 -22 init 1 21 12 -23 state 1 a_S_a2 -24 init 1 23 12 -25 state 1 dve_invalid -26 init 1 25 12 -27 constd 4 637 -28 constd 3 1 -29 xor 3 28 6 -30 constd 3 0 -31 concat 4 29 30 -32 constd 4 16 -33 sra 4 31 32 -34 eq 1 27 33 -35 and 1 -25 34 -36 bad 35 -37 input 1 f5 -38 input 1 f2 -39 ite 3 38 8 29 -40 ite 3 37 10 39 -41 xor 3 28 40 -42 next 3 6 41 -43 input 1 f1 -44 concat 4 8 30 -45 sra 4 44 32 -46 add 4 33 45 -47 slice 3 46 15 0 -48 input 1 f0 -49 ite 3 48 29 8 -50 ite 3 43 47 49 -51 next 3 8 50 -52 input 1 f4 -53 concat 4 10 30 -54 sra 4 53 32 -55 add 4 33 54 -56 slice 3 55 15 0 -57 input 1 f3 -58 ite 3 57 29 10 -59 ite 3 52 56 58 -60 next 3 10 59 -61 and 1 -13 -48 -62 or 1 61 38 -63 next 1 13 -62 -64 or 1 15 48 -65 and 1 64 -43 -66 next 1 15 65 -67 or 1 17 43 -68 and 1 67 -38 -69 next 1 17 68 -70 and 1 -19 -57 -71 or 1 70 37 -72 next 1 19 -71 -73 or 1 21 57 -74 and 1 73 -52 -75 next 1 21 74 -76 or 1 23 52 -77 and 1 76 -37 -78 next 1 23 77 -79 constd 4 300 -80 ulte 1 79 33 -81 and 1 -13 -80 -82 or 1 -48 81 -83 or 1 15 -43 -84 and 1 82 83 -85 or 1 17 -38 -86 and 1 84 85 -87 and 1 -19 -80 -88 or 1 -57 87 -89 and 1 86 88 -90 or 1 21 -52 -91 and 1 89 90 -92 or 1 23 -37 -93 and 1 91 92 -94 or 1 48 43 -95 or 1 38 94 -96 or 1 57 95 -97 or 1 52 96 -98 or 1 37 97 -99 and 1 93 98 -100 and 1 48 43 -101 and 1 38 94 -102 or 1 100 101 -103 and 1 57 95 -104 or 1 102 103 -105 and 1 52 96 -106 or 1 104 105 -107 and 1 37 97 -108 or 1 106 107 -109 and 1 99 -108 -110 and 1 -13 15 -111 or 1 -13 15 -112 and 1 17 111 -113 or 1 110 112 -114 or 1 17 111 -115 and 1 -113 114 -116 and 1 -19 21 -117 or 1 -19 21 -118 and 1 23 117 -119 or 1 116 118 -120 and 1 115 -119 -121 or 1 23 117 -122 and 1 120 121 -123 and 1 109 122 -124 and 1 65 62 -125 or 1 65 62 -126 and 1 68 125 -127 or 1 124 126 -128 or 1 68 125 -129 and 1 -127 128 -130 and 1 74 71 -131 or 1 74 71 -132 and 1 77 131 -133 or 1 130 132 -134 and 1 129 -133 -135 or 1 77 131 -136 and 1 134 135 -137 and 1 123 136 -138 and 1 137 -25 -139 next 1 25 -138 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-back-serstep.btor2 deleted file mode 100644 index 9e06e30380..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-back-serstep.btor2 +++ /dev/null @@ -1,179 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 nextv_c -7 init 3 6 5 -8 state 3 nextv_x1 -9 init 3 8 5 -10 state 3 nextv_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 nexta_Q_a1 -14 init 1 13 12 -15 state 1 nexta_R_a1 -16 init 1 15 12 -17 state 1 nexta_S_a1 -18 init 1 17 12 -19 state 1 nexta_Q_a2 -20 init 1 19 12 -21 state 1 nexta_R_a2 -22 init 1 21 12 -23 state 1 nexta_S_a2 -24 init 1 23 12 -25 state 1 dve_initialized -26 init 1 25 12 -27 state 1 dve_valid -28 init 1 27 12 -29 and 1 13 -15 -30 and 1 29 -17 -31 and 1 30 19 -32 and 1 31 -21 -33 and 1 32 -23 -34 constd 3 1 -35 eq 1 34 6 -36 and 1 33 35 -37 constd 3 0 -38 eq 1 37 8 -39 and 1 36 38 -40 eq 1 37 10 -41 and 1 39 40 -42 and 1 27 41 -43 bad 42 -44 input 3 v_c -45 next 3 6 44 -46 input 3 v_x1 -47 next 3 8 46 -48 input 3 v_x2 -49 next 3 10 48 -50 input 1 a_Q_a1 -51 next 1 13 50 -52 input 1 a_R_a1 -53 next 1 15 52 -54 input 1 a_S_a1 -55 next 1 17 54 -56 input 1 a_Q_a2 -57 next 1 19 56 -58 input 1 a_R_a2 -59 next 1 21 58 -60 input 1 a_S_a2 -61 next 1 23 60 -62 const 1 1 -63 next 1 25 62 -64 input 1 f0 -65 constd 4 400 -66 constd 3 0 -67 concat 4 44 66 -68 constd 4 16 -69 sra 4 67 68 -70 ulte 1 65 69 -71 and 1 50 -70 -72 or 1 -64 71 -73 or 1 52 64 -74 input 1 f1 -75 or 1 73 -74 -76 and 1 72 75 -77 or 1 54 74 -78 input 1 f2 -79 or 1 77 -78 -80 and 1 76 79 -81 input 1 f3 -82 ite 3 64 44 46 -83 concat 4 82 66 -84 sra 4 83 68 -85 add 4 69 84 -86 slice 3 85 15 0 -87 ite 3 74 86 82 -88 ite 3 78 87 44 -89 concat 4 88 66 -90 sra 4 89 68 -91 ulte 1 65 90 -92 and 1 56 -91 -93 or 1 -81 92 -94 and 1 80 93 -95 or 1 58 81 -96 input 1 f4 -97 or 1 95 -96 -98 and 1 94 97 -99 or 1 60 96 -100 input 1 f5 -101 or 1 99 -100 -102 and 1 98 101 -103 or 1 64 74 -104 or 1 78 103 -105 or 1 81 104 -106 or 1 96 105 -107 or 1 100 106 -108 and 1 102 107 -109 and 1 50 52 -110 or 1 50 52 -111 and 1 54 110 -112 or 1 109 111 -113 or 1 54 110 -114 and 1 -112 113 -115 and 1 56 58 -116 or 1 56 58 -117 and 1 60 116 -118 or 1 115 117 -119 and 1 114 -118 -120 or 1 60 116 -121 and 1 119 120 -122 and 1 108 121 -123 and 1 73 -74 -124 and 1 50 -64 -125 or 1 124 78 -126 and 1 123 125 -127 and 1 77 -78 -128 or 1 123 125 -129 and 1 127 128 -130 or 1 126 129 -131 or 1 127 128 -132 and 1 -130 131 -133 and 1 95 -96 -134 and 1 56 -81 -135 or 1 134 100 -136 and 1 133 135 -137 and 1 99 -100 -138 or 1 133 135 -139 and 1 137 138 -140 or 1 136 139 -141 and 1 132 -140 -142 or 1 137 138 -143 and 1 141 142 -144 and 1 122 143 -145 ite 3 81 88 48 -146 concat 4 145 66 -147 sra 4 146 68 -148 add 4 90 147 -149 slice 3 148 15 0 -150 ite 3 96 149 145 -151 ite 3 100 150 88 -152 eq 1 151 6 -153 and 1 144 152 -154 eq 1 87 8 -155 and 1 153 154 -156 eq 1 150 10 -157 and 1 155 156 -158 eq 1 125 13 -159 and 1 157 158 -160 eq 1 123 15 -161 and 1 159 160 -162 eq 1 127 17 -163 and 1 161 162 -164 eq 1 135 19 -165 and 1 163 164 -166 eq 1 133 21 -167 and 1 165 166 -168 eq 1 137 23 -169 and 1 167 168 -170 and 1 169 27 -171 constd 4 749 -172 eq 1 171 69 -173 ite 1 25 170 172 -174 next 1 27 173 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-func-interl.btor2 deleted file mode 100644 index fdf6dfe63b..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.4.prop1-func-interl.btor2 +++ /dev/null @@ -1,144 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 v_c -7 init 3 6 5 -8 state 3 v_x1 -9 init 3 8 5 -10 state 3 v_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 a_Q_a1 -14 init 1 13 12 -15 state 1 a_R_a1 -16 init 1 15 12 -17 state 1 a_S_a1 -18 init 1 17 12 -19 state 1 a_Q_a2 -20 init 1 19 12 -21 state 1 a_R_a2 -22 init 1 21 12 -23 state 1 a_S_a2 -24 init 1 23 12 -25 state 1 dve_invalid -26 init 1 25 12 -27 constd 4 749 -28 constd 3 1 -29 xor 3 28 6 -30 constd 3 0 -31 concat 4 29 30 -32 constd 4 16 -33 sra 4 31 32 -34 eq 1 27 33 -35 and 1 -25 34 -36 bad 35 -37 input 1 f5 -38 input 1 f2 -39 ite 3 38 8 29 -40 ite 3 37 10 39 -41 xor 3 28 40 -42 next 3 6 41 -43 input 1 f1 -44 concat 4 8 30 -45 sra 4 44 32 -46 add 4 33 45 -47 slice 3 46 15 0 -48 input 1 f0 -49 ite 3 48 29 8 -50 ite 3 43 47 49 -51 next 3 8 50 -52 input 1 f4 -53 concat 4 10 30 -54 sra 4 53 32 -55 add 4 33 54 -56 slice 3 55 15 0 -57 input 1 f3 -58 ite 3 57 29 10 -59 ite 3 52 56 58 -60 next 3 10 59 -61 and 1 -13 -48 -62 or 1 61 38 -63 next 1 13 -62 -64 or 1 15 48 -65 and 1 64 -43 -66 next 1 15 65 -67 or 1 17 43 -68 and 1 67 -38 -69 next 1 17 68 -70 and 1 -19 -57 -71 or 1 70 37 -72 next 1 19 -71 -73 or 1 21 57 -74 and 1 73 -52 -75 next 1 21 74 -76 or 1 23 52 -77 and 1 76 -37 -78 next 1 23 77 -79 constd 4 400 -80 ulte 1 79 33 -81 and 1 -13 -80 -82 or 1 -48 81 -83 or 1 15 -43 -84 and 1 82 83 -85 or 1 17 -38 -86 and 1 84 85 -87 and 1 -19 -80 -88 or 1 -57 87 -89 and 1 86 88 -90 or 1 21 -52 -91 and 1 89 90 -92 or 1 23 -37 -93 and 1 91 92 -94 or 1 48 43 -95 or 1 38 94 -96 or 1 57 95 -97 or 1 52 96 -98 or 1 37 97 -99 and 1 93 98 -100 and 1 48 43 -101 and 1 38 94 -102 or 1 100 101 -103 and 1 57 95 -104 or 1 102 103 -105 and 1 52 96 -106 or 1 104 105 -107 and 1 37 97 -108 or 1 106 107 -109 and 1 99 -108 -110 and 1 -13 15 -111 or 1 -13 15 -112 and 1 17 111 -113 or 1 110 112 -114 or 1 17 111 -115 and 1 -113 114 -116 and 1 -19 21 -117 or 1 -19 21 -118 and 1 23 117 -119 or 1 116 118 -120 and 1 115 -119 -121 or 1 23 117 -122 and 1 120 121 -123 and 1 109 122 -124 and 1 65 62 -125 or 1 65 62 -126 and 1 68 125 -127 or 1 124 126 -128 or 1 68 125 -129 and 1 -127 128 -130 and 1 74 71 -131 or 1 74 71 -132 and 1 77 131 -133 or 1 130 132 -134 and 1 129 -133 -135 or 1 77 131 -136 and 1 134 135 -137 and 1 123 136 -138 and 1 137 -25 -139 next 1 25 -138 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-back-serstep.btor2 deleted file mode 100644 index 8d1f6a8b19..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-back-serstep.btor2 +++ /dev/null @@ -1,179 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 nextv_c -7 init 3 6 5 -8 state 3 nextv_x1 -9 init 3 8 5 -10 state 3 nextv_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 nexta_Q_a1 -14 init 1 13 12 -15 state 1 nexta_R_a1 -16 init 1 15 12 -17 state 1 nexta_S_a1 -18 init 1 17 12 -19 state 1 nexta_Q_a2 -20 init 1 19 12 -21 state 1 nexta_R_a2 -22 init 1 21 12 -23 state 1 nexta_S_a2 -24 init 1 23 12 -25 state 1 dve_initialized -26 init 1 25 12 -27 state 1 dve_valid -28 init 1 27 12 -29 and 1 13 -15 -30 and 1 29 -17 -31 and 1 30 19 -32 and 1 31 -21 -33 and 1 32 -23 -34 constd 3 1 -35 eq 1 34 6 -36 and 1 33 35 -37 constd 3 0 -38 eq 1 37 8 -39 and 1 36 38 -40 eq 1 37 10 -41 and 1 39 40 -42 and 1 27 41 -43 bad 42 -44 input 3 v_c -45 next 3 6 44 -46 input 3 v_x1 -47 next 3 8 46 -48 input 3 v_x2 -49 next 3 10 48 -50 input 1 a_Q_a1 -51 next 1 13 50 -52 input 1 a_R_a1 -53 next 1 15 52 -54 input 1 a_S_a1 -55 next 1 17 54 -56 input 1 a_Q_a2 -57 next 1 19 56 -58 input 1 a_R_a2 -59 next 1 21 58 -60 input 1 a_S_a2 -61 next 1 23 60 -62 const 1 1 -63 next 1 25 62 -64 input 1 f0 -65 constd 4 500 -66 constd 3 0 -67 concat 4 44 66 -68 constd 4 16 -69 sra 4 67 68 -70 ulte 1 65 69 -71 and 1 50 -70 -72 or 1 -64 71 -73 or 1 52 64 -74 input 1 f1 -75 or 1 73 -74 -76 and 1 72 75 -77 or 1 54 74 -78 input 1 f2 -79 or 1 77 -78 -80 and 1 76 79 -81 input 1 f3 -82 ite 3 64 44 46 -83 concat 4 82 66 -84 sra 4 83 68 -85 add 4 69 84 -86 slice 3 85 15 0 -87 ite 3 74 86 82 -88 ite 3 78 87 44 -89 concat 4 88 66 -90 sra 4 89 68 -91 ulte 1 65 90 -92 and 1 56 -91 -93 or 1 -81 92 -94 and 1 80 93 -95 or 1 58 81 -96 input 1 f4 -97 or 1 95 -96 -98 and 1 94 97 -99 or 1 60 96 -100 input 1 f5 -101 or 1 99 -100 -102 and 1 98 101 -103 or 1 64 74 -104 or 1 78 103 -105 or 1 81 104 -106 or 1 96 105 -107 or 1 100 106 -108 and 1 102 107 -109 and 1 50 52 -110 or 1 50 52 -111 and 1 54 110 -112 or 1 109 111 -113 or 1 54 110 -114 and 1 -112 113 -115 and 1 56 58 -116 or 1 56 58 -117 and 1 60 116 -118 or 1 115 117 -119 and 1 114 -118 -120 or 1 60 116 -121 and 1 119 120 -122 and 1 108 121 -123 and 1 73 -74 -124 and 1 50 -64 -125 or 1 124 78 -126 and 1 123 125 -127 and 1 77 -78 -128 or 1 123 125 -129 and 1 127 128 -130 or 1 126 129 -131 or 1 127 128 -132 and 1 -130 131 -133 and 1 95 -96 -134 and 1 56 -81 -135 or 1 134 100 -136 and 1 133 135 -137 and 1 99 -100 -138 or 1 133 135 -139 and 1 137 138 -140 or 1 136 139 -141 and 1 132 -140 -142 or 1 137 138 -143 and 1 141 142 -144 and 1 122 143 -145 ite 3 81 88 48 -146 concat 4 145 66 -147 sra 4 146 68 -148 add 4 90 147 -149 slice 3 148 15 0 -150 ite 3 96 149 145 -151 ite 3 100 150 88 -152 eq 1 151 6 -153 and 1 144 152 -154 eq 1 87 8 -155 and 1 153 154 -156 eq 1 150 10 -157 and 1 155 156 -158 eq 1 125 13 -159 and 1 157 158 -160 eq 1 123 15 -161 and 1 159 160 -162 eq 1 127 17 -163 and 1 161 162 -164 eq 1 135 19 -165 and 1 163 164 -166 eq 1 133 21 -167 and 1 165 166 -168 eq 1 137 23 -169 and 1 167 168 -170 and 1 169 27 -171 constd 4 849 -172 eq 1 171 69 -173 ite 1 25 170 172 -174 next 1 27 173 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-func-interl.btor2 deleted file mode 100644 index 5fe91de66e..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.5.prop1-func-interl.btor2 +++ /dev/null @@ -1,144 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 5 -3 sort bitvec 16 -4 sort bitvec 32 -5 zero 3 -6 state 3 v_c -7 init 3 6 5 -8 state 3 v_x1 -9 init 3 8 5 -10 state 3 v_x2 -11 init 3 10 5 -12 zero 1 -13 state 1 a_Q_a1 -14 init 1 13 12 -15 state 1 a_R_a1 -16 init 1 15 12 -17 state 1 a_S_a1 -18 init 1 17 12 -19 state 1 a_Q_a2 -20 init 1 19 12 -21 state 1 a_R_a2 -22 init 1 21 12 -23 state 1 a_S_a2 -24 init 1 23 12 -25 state 1 dve_invalid -26 init 1 25 12 -27 constd 4 849 -28 constd 3 1 -29 xor 3 28 6 -30 constd 3 0 -31 concat 4 29 30 -32 constd 4 16 -33 sra 4 31 32 -34 eq 1 27 33 -35 and 1 -25 34 -36 bad 35 -37 input 1 f5 -38 input 1 f2 -39 ite 3 38 8 29 -40 ite 3 37 10 39 -41 xor 3 28 40 -42 next 3 6 41 -43 input 1 f1 -44 concat 4 8 30 -45 sra 4 44 32 -46 add 4 33 45 -47 slice 3 46 15 0 -48 input 1 f0 -49 ite 3 48 29 8 -50 ite 3 43 47 49 -51 next 3 8 50 -52 input 1 f4 -53 concat 4 10 30 -54 sra 4 53 32 -55 add 4 33 54 -56 slice 3 55 15 0 -57 input 1 f3 -58 ite 3 57 29 10 -59 ite 3 52 56 58 -60 next 3 10 59 -61 and 1 -13 -48 -62 or 1 61 38 -63 next 1 13 -62 -64 or 1 15 48 -65 and 1 64 -43 -66 next 1 15 65 -67 or 1 17 43 -68 and 1 67 -38 -69 next 1 17 68 -70 and 1 -19 -57 -71 or 1 70 37 -72 next 1 19 -71 -73 or 1 21 57 -74 and 1 73 -52 -75 next 1 21 74 -76 or 1 23 52 -77 and 1 76 -37 -78 next 1 23 77 -79 constd 4 500 -80 ulte 1 79 33 -81 and 1 -13 -80 -82 or 1 -48 81 -83 or 1 15 -43 -84 and 1 82 83 -85 or 1 17 -38 -86 and 1 84 85 -87 and 1 -19 -80 -88 or 1 -57 87 -89 and 1 86 88 -90 or 1 21 -52 -91 and 1 89 90 -92 or 1 23 -37 -93 and 1 91 92 -94 or 1 48 43 -95 or 1 38 94 -96 or 1 57 95 -97 or 1 52 96 -98 or 1 37 97 -99 and 1 93 98 -100 and 1 48 43 -101 and 1 38 94 -102 or 1 100 101 -103 and 1 57 95 -104 or 1 102 103 -105 and 1 52 96 -106 or 1 104 105 -107 and 1 37 97 -108 or 1 106 107 -109 and 1 99 -108 -110 and 1 -13 15 -111 or 1 -13 15 -112 and 1 17 111 -113 or 1 110 112 -114 or 1 17 111 -115 and 1 -113 114 -116 and 1 -19 21 -117 or 1 -19 21 -118 and 1 23 117 -119 or 1 116 118 -120 and 1 115 -119 -121 or 1 23 117 -122 and 1 120 121 -123 and 1 109 122 -124 and 1 65 62 -125 or 1 65 62 -126 and 1 68 125 -127 or 1 124 126 -128 or 1 68 125 -129 and 1 -127 128 -130 and 1 74 71 -131 or 1 74 71 -132 and 1 77 131 -133 or 1 130 132 -134 and 1 129 -133 -135 or 1 77 131 -136 and 1 134 135 -137 and 1 123 136 -138 and 1 137 -25 -139 next 1 25 -138 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..09f82a14cb --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 @@ -0,0 +1,340 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_next +11 init 2 10 5 +12 state 2 nextv_my_place_P_0 +13 init 2 12 5 +14 state 2 nextv_my_place_P_1 +15 init 2 14 5 +16 zero 1 +17 state 1 nexta_NCS_P_0 +18 init 1 17 16 +19 state 1 nexta_p1_P_0 +20 init 1 19 16 +21 state 1 nexta_p2_P_0 +22 init 1 21 16 +23 state 1 nexta_p3_P_0 +24 init 1 23 16 +25 state 1 nexta_CS_P_0 +26 init 1 25 16 +27 state 1 nexta_NCS_P_1 +28 init 1 27 16 +29 state 1 nexta_p1_P_1 +30 init 1 29 16 +31 state 1 nexta_p2_P_1 +32 init 1 31 16 +33 state 1 nexta_p3_P_1 +34 init 1 33 16 +35 state 1 nexta_CS_P_1 +36 init 1 35 16 +37 state 1 dve_initialized +38 init 1 37 16 +39 state 1 dve_valid +40 init 1 39 16 +41 and 1 17 -19 +42 and 1 41 -21 +43 and 1 42 -23 +44 and 1 43 -25 +45 and 1 44 27 +46 and 1 45 -29 +47 and 1 46 -31 +48 and 1 47 -33 +49 and 1 48 -35 +50 constd 2 1 +51 eq 1 50 6 +52 and 1 49 51 +53 constd 2 0 +54 eq 1 53 8 +55 and 1 52 54 +56 eq 1 53 10 +57 and 1 55 56 +58 eq 1 53 12 +59 and 1 57 58 +60 eq 1 53 14 +61 and 1 59 60 +62 and 1 39 61 +63 bad 62 +64 input 2 v_Slot_0 +65 next 2 6 64 +66 input 2 v_Slot_1 +67 next 2 8 66 +68 input 2 v_next +69 next 2 10 68 +70 input 2 v_my_place_P_0 +71 next 2 12 70 +72 input 2 v_my_place_P_1 +73 next 2 14 72 +74 input 1 a_NCS_P_0 +75 next 1 17 74 +76 input 1 a_p1_P_0 +77 next 1 19 76 +78 input 1 a_p2_P_0 +79 next 1 21 78 +80 input 1 a_p3_P_0 +81 next 1 23 80 +82 input 1 a_CS_P_0 +83 next 1 25 82 +84 input 1 a_NCS_P_1 +85 next 1 27 84 +86 input 1 a_p1_P_1 +87 next 1 29 86 +88 input 1 a_p2_P_1 +89 next 1 31 88 +90 input 1 a_p3_P_1 +91 next 1 33 90 +92 input 1 a_CS_P_1 +93 next 1 35 92 +94 const 1 1 +95 next 1 37 94 +96 input 1 f00 +97 or 1 74 -96 +98 input 1 f01 +99 or 1 76 96 +100 ite 2 96 68 70 +101 eq 1 50 100 +102 and 1 99 101 +103 or 1 -98 102 +104 and 1 97 103 +105 input 1 f02 +106 and 1 99 -98 +107 and 1 -101 106 +108 or 1 -105 107 +109 and 1 104 108 +110 input 1 f03 +111 or 1 78 98 +112 or 1 111 105 +113 constd 3 0 +114 concat 4 113 100 +115 constd 4 2 +116 srem 4 114 115 +117 slice 2 116 7 0 +118 ite 2 105 117 100 +119 eq 1 53 118 +120 ite 2 119 64 66 +121 eq 1 50 120 +122 and 1 112 121 +123 or 1 -110 122 +124 and 1 109 123 +125 or 1 80 110 +126 input 1 f04 +127 or 1 125 -126 +128 and 1 124 127 +129 or 1 82 126 +130 input 1 f05 +131 or 1 129 -130 +132 and 1 128 131 +133 input 1 f06 +134 or 1 84 -133 +135 and 1 132 134 +136 input 1 f07 +137 or 1 86 133 +138 constd 4 1 +139 concat 4 113 68 +140 add 4 138 139 +141 slice 2 140 7 0 +142 ite 2 96 141 68 +143 concat 4 113 142 +144 sub 4 143 115 +145 slice 2 144 7 0 +146 ite 2 98 145 142 +147 ite 2 133 146 72 +148 eq 1 50 147 +149 and 1 137 148 +150 or 1 -136 149 +151 and 1 135 150 +152 input 1 f08 +153 and 1 137 -136 +154 and 1 -148 153 +155 or 1 -152 154 +156 and 1 151 155 +157 input 1 f09 +158 or 1 88 136 +159 or 1 158 152 +160 concat 4 113 147 +161 srem 4 160 115 +162 slice 2 161 7 0 +163 ite 2 152 162 147 +164 eq 1 53 163 +165 constd 4 0 +166 concat 4 113 118 +167 add 4 138 166 +168 srem 4 167 115 +169 eq 1 165 168 +170 and 1 130 169 +171 add 4 115 166 +172 sub 4 171 138 +173 srem 4 172 115 +174 eq 1 165 173 +175 and 1 126 174 +176 ite 2 175 53 64 +177 ite 2 170 50 176 +178 eq 1 138 168 +179 and 1 130 178 +180 eq 1 138 173 +181 and 1 126 180 +182 ite 2 181 53 66 +183 ite 2 179 50 182 +184 ite 2 164 177 183 +185 eq 1 50 184 +186 and 1 159 185 +187 or 1 -157 186 +188 and 1 156 187 +189 or 1 90 157 +190 input 1 f10 +191 or 1 189 -190 +192 and 1 188 191 +193 or 1 92 190 +194 input 1 f11 +195 or 1 193 -194 +196 and 1 192 195 +197 or 1 96 98 +198 or 1 105 197 +199 or 1 110 198 +200 or 1 126 199 +201 or 1 130 200 +202 or 1 133 201 +203 or 1 136 202 +204 or 1 152 203 +205 or 1 157 204 +206 or 1 190 205 +207 or 1 194 206 +208 and 1 196 207 +209 and 1 74 76 +210 or 1 74 76 +211 and 1 78 210 +212 or 1 209 211 +213 or 1 78 210 +214 and 1 80 213 +215 or 1 212 214 +216 or 1 80 213 +217 and 1 82 216 +218 or 1 215 217 +219 or 1 82 216 +220 and 1 -218 219 +221 and 1 84 86 +222 or 1 84 86 +223 and 1 88 222 +224 or 1 221 223 +225 or 1 88 222 +226 and 1 90 225 +227 or 1 224 226 +228 or 1 90 225 +229 and 1 92 228 +230 or 1 227 229 +231 and 1 220 -230 +232 or 1 92 228 +233 and 1 231 232 +234 and 1 208 233 +235 and 1 106 -105 +236 and 1 74 -96 +237 or 1 236 130 +238 and 1 235 237 +239 and 1 112 -110 +240 or 1 235 237 +241 and 1 239 240 +242 or 1 238 241 +243 and 1 125 -126 +244 or 1 239 240 +245 and 1 243 244 +246 or 1 242 245 +247 and 1 129 -130 +248 or 1 243 244 +249 and 1 247 248 +250 or 1 246 249 +251 or 1 247 248 +252 and 1 -250 251 +253 and 1 153 -152 +254 and 1 84 -133 +255 or 1 254 194 +256 and 1 253 255 +257 and 1 159 -157 +258 or 1 253 255 +259 and 1 257 258 +260 or 1 256 259 +261 and 1 189 -190 +262 or 1 257 258 +263 and 1 261 262 +264 or 1 260 263 +265 and 1 193 -194 +266 or 1 261 262 +267 and 1 265 266 +268 or 1 264 267 +269 and 1 252 -268 +270 or 1 265 266 +271 and 1 269 270 +272 and 1 234 271 +273 concat 4 113 163 +274 add 4 138 273 +275 srem 4 274 115 +276 eq 1 165 275 +277 and 1 194 276 +278 add 4 115 273 +279 sub 4 278 138 +280 srem 4 279 115 +281 eq 1 165 280 +282 and 1 190 281 +283 ite 2 282 53 177 +284 ite 2 277 50 283 +285 eq 1 284 6 +286 and 1 272 285 +287 eq 1 138 275 +288 and 1 194 287 +289 eq 1 138 280 +290 and 1 190 289 +291 ite 2 290 53 183 +292 ite 2 288 50 291 +293 eq 1 292 8 +294 and 1 286 293 +295 concat 4 113 146 +296 add 4 138 295 +297 slice 2 296 7 0 +298 ite 2 133 297 146 +299 concat 4 113 298 +300 sub 4 299 115 +301 slice 2 300 7 0 +302 ite 2 136 301 298 +303 eq 1 302 10 +304 and 1 294 303 +305 eq 1 118 12 +306 and 1 304 305 +307 eq 1 163 14 +308 and 1 306 307 +309 eq 1 237 17 +310 and 1 308 309 +311 eq 1 235 19 +312 and 1 310 311 +313 eq 1 239 21 +314 and 1 312 313 +315 eq 1 243 23 +316 and 1 314 315 +317 eq 1 247 25 +318 and 1 316 317 +319 eq 1 255 27 +320 and 1 318 319 +321 eq 1 253 29 +322 and 1 320 321 +323 eq 1 257 31 +324 and 1 322 323 +325 eq 1 261 33 +326 and 1 324 325 +327 eq 1 265 35 +328 and 1 326 327 +329 and 1 328 39 +330 ite 4 82 138 165 +331 ite 4 92 138 165 +332 add 4 330 331 +333 ulte 1 332 138 +334 ite 1 37 329 -333 +335 next 1 39 334 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-func-interl.btor2 new file mode 100644 index 0000000000..f266c2b286 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-func-interl.btor2 @@ -0,0 +1,286 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_Slot_0 +7 init 2 6 5 +8 state 2 v_Slot_1 +9 init 2 8 5 +10 state 2 v_next +11 init 2 10 5 +12 state 2 v_my_place_P_0 +13 init 2 12 5 +14 state 2 v_my_place_P_1 +15 init 2 14 5 +16 zero 1 +17 state 1 a_NCS_P_0 +18 init 1 17 16 +19 state 1 a_p1_P_0 +20 init 1 19 16 +21 state 1 a_p2_P_0 +22 init 1 21 16 +23 state 1 a_p3_P_0 +24 init 1 23 16 +25 state 1 a_CS_P_0 +26 init 1 25 16 +27 state 1 a_NCS_P_1 +28 init 1 27 16 +29 state 1 a_p1_P_1 +30 init 1 29 16 +31 state 1 a_p2_P_1 +32 init 1 31 16 +33 state 1 a_p3_P_1 +34 init 1 33 16 +35 state 1 a_CS_P_1 +36 init 1 35 16 +37 state 1 dve_invalid +38 init 1 37 16 +39 constd 4 1 +40 constd 4 0 +41 ite 4 25 39 40 +42 ite 4 35 39 40 +43 add 4 41 42 +44 ulte 1 43 39 +45 and 1 -37 -44 +46 bad 45 +47 constd 2 1 +48 input 1 f11 +49 constd 3 0 +50 concat 4 49 14 +51 add 4 39 50 +52 constd 4 2 +53 srem 4 51 52 +54 eq 1 40 53 +55 and 1 48 54 +56 input 1 f10 +57 add 4 52 50 +58 sub 4 57 39 +59 srem 4 58 52 +60 eq 1 40 59 +61 and 1 56 60 +62 constd 2 0 +63 input 1 f05 +64 concat 4 49 12 +65 add 4 39 64 +66 srem 4 65 52 +67 eq 1 40 66 +68 and 1 63 67 +69 input 1 f04 +70 add 4 52 64 +71 sub 4 70 39 +72 srem 4 71 52 +73 eq 1 40 72 +74 and 1 69 73 +75 xor 2 47 6 +76 ite 2 74 62 75 +77 ite 2 68 47 76 +78 ite 2 61 62 77 +79 ite 2 55 47 78 +80 xor 2 47 79 +81 next 2 6 80 +82 eq 1 39 53 +83 and 1 48 82 +84 eq 1 39 59 +85 and 1 56 84 +86 eq 1 39 66 +87 and 1 63 86 +88 eq 1 39 72 +89 and 1 69 88 +90 ite 2 89 62 8 +91 ite 2 87 47 90 +92 ite 2 85 62 91 +93 ite 2 83 47 92 +94 next 2 8 93 +95 input 1 f07 +96 concat 4 49 10 +97 sub 4 96 52 +98 slice 2 97 7 0 +99 input 1 f06 +100 add 4 39 96 +101 slice 2 100 7 0 +102 input 1 f01 +103 input 1 f00 +104 ite 2 103 101 10 +105 ite 2 102 98 104 +106 ite 2 99 101 105 +107 ite 2 95 98 106 +108 next 2 10 107 +109 input 1 f02 +110 srem 4 64 52 +111 slice 2 110 7 0 +112 ite 2 103 10 12 +113 ite 2 109 111 112 +114 next 2 12 113 +115 input 1 f08 +116 srem 4 50 52 +117 slice 2 116 7 0 +118 ite 2 99 10 14 +119 ite 2 115 117 118 +120 next 2 14 119 +121 and 1 -17 -103 +122 or 1 121 63 +123 next 1 17 -122 +124 or 1 19 103 +125 and 1 124 -102 +126 and 1 125 -109 +127 next 1 19 126 +128 or 1 21 102 +129 or 1 128 109 +130 input 1 f03 +131 and 1 129 -130 +132 next 1 21 131 +133 or 1 23 130 +134 and 1 133 -69 +135 next 1 23 134 +136 or 1 25 69 +137 and 1 136 -63 +138 next 1 25 137 +139 and 1 -27 -99 +140 or 1 139 48 +141 next 1 27 -140 +142 or 1 29 99 +143 and 1 142 -95 +144 and 1 143 -115 +145 next 1 29 144 +146 or 1 31 95 +147 or 1 146 115 +148 input 1 f09 +149 and 1 147 -148 +150 next 1 31 149 +151 or 1 33 148 +152 and 1 151 -56 +153 next 1 33 152 +154 or 1 35 56 +155 and 1 154 -48 +156 next 1 35 155 +157 or 1 -17 -103 +158 eq 1 47 12 +159 and 1 19 158 +160 or 1 -102 159 +161 and 1 157 160 +162 and 1 19 -158 +163 or 1 -109 162 +164 and 1 161 163 +165 eq 1 62 12 +166 ite 2 165 75 8 +167 eq 1 47 166 +168 and 1 21 167 +169 or 1 -130 168 +170 and 1 164 169 +171 or 1 23 -69 +172 and 1 170 171 +173 or 1 25 -63 +174 and 1 172 173 +175 or 1 -27 -99 +176 and 1 174 175 +177 eq 1 47 14 +178 and 1 29 177 +179 or 1 -95 178 +180 and 1 176 179 +181 and 1 29 -177 +182 or 1 -115 181 +183 and 1 180 182 +184 eq 1 62 14 +185 ite 2 184 75 8 +186 eq 1 47 185 +187 and 1 31 186 +188 or 1 -148 187 +189 and 1 183 188 +190 or 1 33 -56 +191 and 1 189 190 +192 or 1 35 -48 +193 and 1 191 192 +194 or 1 103 102 +195 or 1 109 194 +196 or 1 130 195 +197 or 1 69 196 +198 or 1 63 197 +199 or 1 99 198 +200 or 1 95 199 +201 or 1 115 200 +202 or 1 148 201 +203 or 1 56 202 +204 or 1 48 203 +205 and 1 193 204 +206 and 1 103 102 +207 and 1 109 194 +208 or 1 206 207 +209 and 1 130 195 +210 or 1 208 209 +211 and 1 69 196 +212 or 1 210 211 +213 and 1 63 197 +214 or 1 212 213 +215 and 1 99 198 +216 or 1 214 215 +217 and 1 95 199 +218 or 1 216 217 +219 and 1 115 200 +220 or 1 218 219 +221 and 1 148 201 +222 or 1 220 221 +223 and 1 56 202 +224 or 1 222 223 +225 and 1 48 203 +226 or 1 224 225 +227 and 1 205 -226 +228 and 1 -17 19 +229 or 1 -17 19 +230 and 1 21 229 +231 or 1 228 230 +232 or 1 21 229 +233 and 1 23 232 +234 or 1 231 233 +235 or 1 23 232 +236 and 1 25 235 +237 or 1 234 236 +238 or 1 25 235 +239 and 1 -237 238 +240 and 1 -27 29 +241 or 1 -27 29 +242 and 1 31 241 +243 or 1 240 242 +244 or 1 31 241 +245 and 1 33 244 +246 or 1 243 245 +247 or 1 33 244 +248 and 1 35 247 +249 or 1 246 248 +250 and 1 239 -249 +251 or 1 35 247 +252 and 1 250 251 +253 and 1 227 252 +254 and 1 126 122 +255 or 1 126 122 +256 and 1 131 255 +257 or 1 254 256 +258 or 1 131 255 +259 and 1 134 258 +260 or 1 257 259 +261 or 1 134 258 +262 and 1 137 261 +263 or 1 260 262 +264 or 1 137 261 +265 and 1 -263 264 +266 and 1 144 140 +267 or 1 144 140 +268 and 1 149 267 +269 or 1 266 268 +270 or 1 149 267 +271 and 1 152 270 +272 or 1 269 271 +273 or 1 152 270 +274 and 1 155 273 +275 or 1 272 274 +276 and 1 265 -275 +277 or 1 155 273 +278 and 1 276 277 +279 and 1 253 278 +280 and 1 279 -37 +281 next 1 37 -280 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..6f7e688a62 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-back-serstep.btor2 @@ -0,0 +1,504 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_Slot_2 +11 init 2 10 5 +12 state 2 nextv_next +13 init 2 12 5 +14 state 2 nextv_my_place_P_0 +15 init 2 14 5 +16 state 2 nextv_my_place_P_1 +17 init 2 16 5 +18 state 2 nextv_my_place_P_2 +19 init 2 18 5 +20 zero 1 +21 state 1 nexta_NCS_P_0 +22 init 1 21 20 +23 state 1 nexta_p1_P_0 +24 init 1 23 20 +25 state 1 nexta_p2_P_0 +26 init 1 25 20 +27 state 1 nexta_p3_P_0 +28 init 1 27 20 +29 state 1 nexta_CS_P_0 +30 init 1 29 20 +31 state 1 nexta_NCS_P_1 +32 init 1 31 20 +33 state 1 nexta_p1_P_1 +34 init 1 33 20 +35 state 1 nexta_p2_P_1 +36 init 1 35 20 +37 state 1 nexta_p3_P_1 +38 init 1 37 20 +39 state 1 nexta_CS_P_1 +40 init 1 39 20 +41 state 1 nexta_NCS_P_2 +42 init 1 41 20 +43 state 1 nexta_p1_P_2 +44 init 1 43 20 +45 state 1 nexta_p2_P_2 +46 init 1 45 20 +47 state 1 nexta_p3_P_2 +48 init 1 47 20 +49 state 1 nexta_CS_P_2 +50 init 1 49 20 +51 state 1 dve_initialized +52 init 1 51 20 +53 state 1 dve_valid +54 init 1 53 20 +55 and 1 21 -23 +56 and 1 55 -25 +57 and 1 56 -27 +58 and 1 57 -29 +59 and 1 58 31 +60 and 1 59 -33 +61 and 1 60 -35 +62 and 1 61 -37 +63 and 1 62 -39 +64 and 1 63 41 +65 and 1 64 -43 +66 and 1 65 -45 +67 and 1 66 -47 +68 and 1 67 -49 +69 constd 2 1 +70 eq 1 69 6 +71 and 1 68 70 +72 constd 2 0 +73 eq 1 72 8 +74 and 1 71 73 +75 eq 1 72 10 +76 and 1 74 75 +77 eq 1 72 12 +78 and 1 76 77 +79 eq 1 72 14 +80 and 1 78 79 +81 eq 1 72 16 +82 and 1 80 81 +83 eq 1 72 18 +84 and 1 82 83 +85 and 1 53 84 +86 bad 85 +87 input 2 v_Slot_0 +88 next 2 6 87 +89 input 2 v_Slot_1 +90 next 2 8 89 +91 input 2 v_Slot_2 +92 next 2 10 91 +93 input 2 v_next +94 next 2 12 93 +95 input 2 v_my_place_P_0 +96 next 2 14 95 +97 input 2 v_my_place_P_1 +98 next 2 16 97 +99 input 2 v_my_place_P_2 +100 next 2 18 99 +101 input 1 a_NCS_P_0 +102 next 1 21 101 +103 input 1 a_p1_P_0 +104 next 1 23 103 +105 input 1 a_p2_P_0 +106 next 1 25 105 +107 input 1 a_p3_P_0 +108 next 1 27 107 +109 input 1 a_CS_P_0 +110 next 1 29 109 +111 input 1 a_NCS_P_1 +112 next 1 31 111 +113 input 1 a_p1_P_1 +114 next 1 33 113 +115 input 1 a_p2_P_1 +116 next 1 35 115 +117 input 1 a_p3_P_1 +118 next 1 37 117 +119 input 1 a_CS_P_1 +120 next 1 39 119 +121 input 1 a_NCS_P_2 +122 next 1 41 121 +123 input 1 a_p1_P_2 +124 next 1 43 123 +125 input 1 a_p2_P_2 +126 next 1 45 125 +127 input 1 a_p3_P_2 +128 next 1 47 127 +129 input 1 a_CS_P_2 +130 next 1 49 129 +131 const 1 1 +132 next 1 51 131 +133 input 1 f00 +134 or 1 101 -133 +135 input 1 f01 +136 or 1 103 133 +137 constd 2 2 +138 ite 2 133 93 95 +139 eq 1 137 138 +140 and 1 136 139 +141 or 1 -135 140 +142 and 1 134 141 +143 input 1 f02 +144 and 1 136 -135 +145 and 1 -139 144 +146 or 1 -143 145 +147 and 1 142 146 +148 input 1 f03 +149 or 1 105 135 +150 or 1 149 143 +151 constd 3 0 +152 concat 4 151 138 +153 constd 4 3 +154 srem 4 152 153 +155 slice 2 154 7 0 +156 ite 2 143 155 138 +157 eq 1 72 156 +158 eq 1 69 156 +159 ite 2 158 89 91 +160 ite 2 157 87 159 +161 eq 1 69 160 +162 and 1 150 161 +163 or 1 -148 162 +164 and 1 147 163 +165 or 1 107 148 +166 input 1 f04 +167 or 1 165 -166 +168 and 1 164 167 +169 or 1 109 166 +170 input 1 f05 +171 or 1 169 -170 +172 and 1 168 171 +173 input 1 f06 +174 or 1 111 -173 +175 and 1 172 174 +176 input 1 f07 +177 or 1 113 173 +178 constd 4 1 +179 concat 4 151 93 +180 add 4 178 179 +181 slice 2 180 7 0 +182 ite 2 133 181 93 +183 concat 4 151 182 +184 sub 4 183 153 +185 slice 2 184 7 0 +186 ite 2 135 185 182 +187 ite 2 173 186 97 +188 eq 1 137 187 +189 and 1 177 188 +190 or 1 -176 189 +191 and 1 175 190 +192 input 1 f08 +193 and 1 177 -176 +194 and 1 -188 193 +195 or 1 -192 194 +196 and 1 191 195 +197 input 1 f09 +198 or 1 115 176 +199 or 1 198 192 +200 concat 4 151 187 +201 srem 4 200 153 +202 slice 2 201 7 0 +203 ite 2 192 202 187 +204 eq 1 72 203 +205 constd 4 0 +206 concat 4 151 156 +207 add 4 178 206 +208 srem 4 207 153 +209 eq 1 205 208 +210 and 1 170 209 +211 and 1 157 166 +212 ite 2 211 72 87 +213 ite 2 210 69 212 +214 eq 1 69 203 +215 eq 1 178 208 +216 and 1 170 215 +217 and 1 158 166 +218 ite 2 217 72 89 +219 ite 2 216 69 218 +220 constd 4 2 +221 eq 1 220 208 +222 and 1 170 221 +223 eq 1 137 156 +224 and 1 223 166 +225 ite 2 224 72 91 +226 ite 2 222 69 225 +227 ite 2 214 219 226 +228 ite 2 204 213 227 +229 eq 1 69 228 +230 and 1 199 229 +231 or 1 -197 230 +232 and 1 196 231 +233 or 1 117 197 +234 input 1 f10 +235 or 1 233 -234 +236 and 1 232 235 +237 or 1 119 234 +238 input 1 f11 +239 or 1 237 -238 +240 and 1 236 239 +241 input 1 f12 +242 or 1 121 -241 +243 and 1 240 242 +244 input 1 f13 +245 or 1 123 241 +246 concat 4 151 186 +247 add 4 178 246 +248 slice 2 247 7 0 +249 ite 2 173 248 186 +250 concat 4 151 249 +251 sub 4 250 153 +252 slice 2 251 7 0 +253 ite 2 176 252 249 +254 ite 2 241 253 99 +255 eq 1 137 254 +256 and 1 245 255 +257 or 1 -244 256 +258 and 1 243 257 +259 input 1 f14 +260 and 1 245 -244 +261 and 1 -255 260 +262 or 1 -259 261 +263 and 1 258 262 +264 input 1 f15 +265 or 1 125 244 +266 or 1 265 259 +267 concat 4 151 254 +268 srem 4 267 153 +269 slice 2 268 7 0 +270 ite 2 259 269 254 +271 eq 1 72 270 +272 concat 4 151 203 +273 add 4 178 272 +274 srem 4 273 153 +275 eq 1 205 274 +276 and 1 238 275 +277 and 1 204 234 +278 ite 2 277 72 213 +279 ite 2 276 69 278 +280 eq 1 69 270 +281 eq 1 178 274 +282 and 1 238 281 +283 and 1 214 234 +284 ite 2 283 72 219 +285 ite 2 282 69 284 +286 eq 1 220 274 +287 and 1 238 286 +288 eq 1 137 203 +289 and 1 288 234 +290 ite 2 289 72 226 +291 ite 2 287 69 290 +292 ite 2 280 285 291 +293 ite 2 271 279 292 +294 eq 1 69 293 +295 and 1 266 294 +296 or 1 -264 295 +297 and 1 263 296 +298 or 1 127 264 +299 input 1 f16 +300 or 1 298 -299 +301 and 1 297 300 +302 or 1 129 299 +303 input 1 f17 +304 or 1 302 -303 +305 and 1 301 304 +306 or 1 133 135 +307 or 1 143 306 +308 or 1 148 307 +309 or 1 166 308 +310 or 1 170 309 +311 or 1 173 310 +312 or 1 176 311 +313 or 1 192 312 +314 or 1 197 313 +315 or 1 234 314 +316 or 1 238 315 +317 or 1 241 316 +318 or 1 244 317 +319 or 1 259 318 +320 or 1 264 319 +321 or 1 299 320 +322 or 1 303 321 +323 and 1 305 322 +324 and 1 101 103 +325 or 1 101 103 +326 and 1 105 325 +327 or 1 324 326 +328 or 1 105 325 +329 and 1 107 328 +330 or 1 327 329 +331 or 1 107 328 +332 and 1 109 331 +333 or 1 330 332 +334 or 1 109 331 +335 and 1 -333 334 +336 and 1 111 113 +337 or 1 111 113 +338 and 1 115 337 +339 or 1 336 338 +340 or 1 115 337 +341 and 1 117 340 +342 or 1 339 341 +343 or 1 117 340 +344 and 1 119 343 +345 or 1 342 344 +346 and 1 335 -345 +347 or 1 119 343 +348 and 1 346 347 +349 and 1 121 123 +350 or 1 121 123 +351 and 1 125 350 +352 or 1 349 351 +353 or 1 125 350 +354 and 1 127 353 +355 or 1 352 354 +356 or 1 127 353 +357 and 1 129 356 +358 or 1 355 357 +359 and 1 348 -358 +360 or 1 129 356 +361 and 1 359 360 +362 and 1 323 361 +363 and 1 144 -143 +364 and 1 101 -133 +365 or 1 364 170 +366 and 1 363 365 +367 and 1 150 -148 +368 or 1 363 365 +369 and 1 367 368 +370 or 1 366 369 +371 and 1 165 -166 +372 or 1 367 368 +373 and 1 371 372 +374 or 1 370 373 +375 and 1 169 -170 +376 or 1 371 372 +377 and 1 375 376 +378 or 1 374 377 +379 or 1 375 376 +380 and 1 -378 379 +381 and 1 193 -192 +382 and 1 111 -173 +383 or 1 382 238 +384 and 1 381 383 +385 and 1 199 -197 +386 or 1 381 383 +387 and 1 385 386 +388 or 1 384 387 +389 and 1 233 -234 +390 or 1 385 386 +391 and 1 389 390 +392 or 1 388 391 +393 and 1 237 -238 +394 or 1 389 390 +395 and 1 393 394 +396 or 1 392 395 +397 and 1 380 -396 +398 or 1 393 394 +399 and 1 397 398 +400 and 1 260 -259 +401 and 1 121 -241 +402 or 1 401 303 +403 and 1 400 402 +404 and 1 266 -264 +405 or 1 400 402 +406 and 1 404 405 +407 or 1 403 406 +408 and 1 298 -299 +409 or 1 404 405 +410 and 1 408 409 +411 or 1 407 410 +412 and 1 302 -303 +413 or 1 408 409 +414 and 1 412 413 +415 or 1 411 414 +416 and 1 399 -415 +417 or 1 412 413 +418 and 1 416 417 +419 and 1 362 418 +420 concat 4 151 270 +421 add 4 178 420 +422 srem 4 421 153 +423 eq 1 205 422 +424 and 1 303 423 +425 and 1 271 299 +426 ite 2 425 72 279 +427 ite 2 424 69 426 +428 eq 1 427 6 +429 and 1 419 428 +430 eq 1 178 422 +431 and 1 303 430 +432 and 1 280 299 +433 ite 2 432 72 285 +434 ite 2 431 69 433 +435 eq 1 434 8 +436 and 1 429 435 +437 eq 1 220 422 +438 and 1 303 437 +439 eq 1 137 270 +440 and 1 439 299 +441 ite 2 440 72 291 +442 ite 2 438 69 441 +443 eq 1 442 10 +444 and 1 436 443 +445 concat 4 151 253 +446 add 4 178 445 +447 slice 2 446 7 0 +448 ite 2 241 447 253 +449 concat 4 151 448 +450 sub 4 449 153 +451 slice 2 450 7 0 +452 ite 2 244 451 448 +453 eq 1 452 12 +454 and 1 444 453 +455 eq 1 156 14 +456 and 1 454 455 +457 eq 1 203 16 +458 and 1 456 457 +459 eq 1 270 18 +460 and 1 458 459 +461 eq 1 365 21 +462 and 1 460 461 +463 eq 1 363 23 +464 and 1 462 463 +465 eq 1 367 25 +466 and 1 464 465 +467 eq 1 371 27 +468 and 1 466 467 +469 eq 1 375 29 +470 and 1 468 469 +471 eq 1 383 31 +472 and 1 470 471 +473 eq 1 381 33 +474 and 1 472 473 +475 eq 1 385 35 +476 and 1 474 475 +477 eq 1 389 37 +478 and 1 476 477 +479 eq 1 393 39 +480 and 1 478 479 +481 eq 1 402 41 +482 and 1 480 481 +483 eq 1 400 43 +484 and 1 482 483 +485 eq 1 404 45 +486 and 1 484 485 +487 eq 1 408 47 +488 and 1 486 487 +489 eq 1 412 49 +490 and 1 488 489 +491 and 1 490 53 +492 ite 4 109 178 205 +493 ite 4 119 178 205 +494 add 4 492 493 +495 ite 4 129 178 205 +496 add 4 494 495 +497 ulte 1 496 178 +498 ite 1 51 491 -497 +499 next 1 53 498 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-func-interl.btor2 new file mode 100644 index 0000000000..1392fd7342 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-func-interl.btor2 @@ -0,0 +1,422 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_Slot_0 +7 init 2 6 5 +8 state 2 v_Slot_1 +9 init 2 8 5 +10 state 2 v_Slot_2 +11 init 2 10 5 +12 state 2 v_next +13 init 2 12 5 +14 state 2 v_my_place_P_0 +15 init 2 14 5 +16 state 2 v_my_place_P_1 +17 init 2 16 5 +18 state 2 v_my_place_P_2 +19 init 2 18 5 +20 zero 1 +21 state 1 a_NCS_P_0 +22 init 1 21 20 +23 state 1 a_p1_P_0 +24 init 1 23 20 +25 state 1 a_p2_P_0 +26 init 1 25 20 +27 state 1 a_p3_P_0 +28 init 1 27 20 +29 state 1 a_CS_P_0 +30 init 1 29 20 +31 state 1 a_NCS_P_1 +32 init 1 31 20 +33 state 1 a_p1_P_1 +34 init 1 33 20 +35 state 1 a_p2_P_1 +36 init 1 35 20 +37 state 1 a_p3_P_1 +38 init 1 37 20 +39 state 1 a_CS_P_1 +40 init 1 39 20 +41 state 1 a_NCS_P_2 +42 init 1 41 20 +43 state 1 a_p1_P_2 +44 init 1 43 20 +45 state 1 a_p2_P_2 +46 init 1 45 20 +47 state 1 a_p3_P_2 +48 init 1 47 20 +49 state 1 a_CS_P_2 +50 init 1 49 20 +51 state 1 dve_invalid +52 init 1 51 20 +53 constd 4 1 +54 constd 4 0 +55 ite 4 29 53 54 +56 ite 4 39 53 54 +57 add 4 55 56 +58 ite 4 49 53 54 +59 add 4 57 58 +60 ulte 1 59 53 +61 and 1 -51 -60 +62 bad 61 +63 constd 2 1 +64 input 1 f17 +65 constd 3 0 +66 concat 4 65 18 +67 add 4 53 66 +68 constd 4 3 +69 srem 4 67 68 +70 eq 1 54 69 +71 and 1 64 70 +72 constd 2 0 +73 eq 1 72 18 +74 input 1 f16 +75 and 1 73 74 +76 input 1 f11 +77 concat 4 65 16 +78 add 4 53 77 +79 srem 4 78 68 +80 eq 1 54 79 +81 and 1 76 80 +82 eq 1 72 16 +83 input 1 f10 +84 and 1 82 83 +85 input 1 f05 +86 concat 4 65 14 +87 add 4 53 86 +88 srem 4 87 68 +89 eq 1 54 88 +90 and 1 85 89 +91 eq 1 72 14 +92 input 1 f04 +93 and 1 91 92 +94 xor 2 63 6 +95 ite 2 93 72 94 +96 ite 2 90 63 95 +97 ite 2 84 72 96 +98 ite 2 81 63 97 +99 ite 2 75 72 98 +100 ite 2 71 63 99 +101 xor 2 63 100 +102 next 2 6 101 +103 eq 1 53 69 +104 and 1 64 103 +105 eq 1 63 18 +106 and 1 105 74 +107 eq 1 53 79 +108 and 1 76 107 +109 eq 1 63 16 +110 and 1 109 83 +111 eq 1 53 88 +112 and 1 85 111 +113 eq 1 63 14 +114 and 1 113 92 +115 ite 2 114 72 8 +116 ite 2 112 63 115 +117 ite 2 110 72 116 +118 ite 2 108 63 117 +119 ite 2 106 72 118 +120 ite 2 104 63 119 +121 next 2 8 120 +122 constd 4 2 +123 eq 1 122 69 +124 and 1 64 123 +125 constd 2 2 +126 eq 1 125 18 +127 and 1 126 74 +128 eq 1 122 79 +129 and 1 76 128 +130 eq 1 125 16 +131 and 1 130 83 +132 eq 1 122 88 +133 and 1 85 132 +134 eq 1 125 14 +135 and 1 134 92 +136 ite 2 135 72 10 +137 ite 2 133 63 136 +138 ite 2 131 72 137 +139 ite 2 129 63 138 +140 ite 2 127 72 139 +141 ite 2 124 63 140 +142 next 2 10 141 +143 input 1 f13 +144 concat 4 65 12 +145 sub 4 144 68 +146 slice 2 145 7 0 +147 input 1 f12 +148 add 4 53 144 +149 slice 2 148 7 0 +150 input 1 f07 +151 input 1 f06 +152 input 1 f01 +153 input 1 f00 +154 ite 2 153 149 12 +155 ite 2 152 146 154 +156 ite 2 151 149 155 +157 ite 2 150 146 156 +158 ite 2 147 149 157 +159 ite 2 143 146 158 +160 next 2 12 159 +161 input 1 f02 +162 srem 4 86 68 +163 slice 2 162 7 0 +164 ite 2 153 12 14 +165 ite 2 161 163 164 +166 next 2 14 165 +167 input 1 f08 +168 srem 4 77 68 +169 slice 2 168 7 0 +170 ite 2 151 12 16 +171 ite 2 167 169 170 +172 next 2 16 171 +173 input 1 f14 +174 srem 4 66 68 +175 slice 2 174 7 0 +176 ite 2 147 12 18 +177 ite 2 173 175 176 +178 next 2 18 177 +179 and 1 -21 -153 +180 or 1 179 85 +181 next 1 21 -180 +182 or 1 23 153 +183 and 1 182 -152 +184 and 1 183 -161 +185 next 1 23 184 +186 or 1 25 152 +187 or 1 186 161 +188 input 1 f03 +189 and 1 187 -188 +190 next 1 25 189 +191 or 1 27 188 +192 and 1 191 -92 +193 next 1 27 192 +194 or 1 29 92 +195 and 1 194 -85 +196 next 1 29 195 +197 and 1 -31 -151 +198 or 1 197 76 +199 next 1 31 -198 +200 or 1 33 151 +201 and 1 200 -150 +202 and 1 201 -167 +203 next 1 33 202 +204 or 1 35 150 +205 or 1 204 167 +206 input 1 f09 +207 and 1 205 -206 +208 next 1 35 207 +209 or 1 37 206 +210 and 1 209 -83 +211 next 1 37 210 +212 or 1 39 83 +213 and 1 212 -76 +214 next 1 39 213 +215 and 1 -41 -147 +216 or 1 215 64 +217 next 1 41 -216 +218 or 1 43 147 +219 and 1 218 -143 +220 and 1 219 -173 +221 next 1 43 220 +222 or 1 45 143 +223 or 1 222 173 +224 input 1 f15 +225 and 1 223 -224 +226 next 1 45 225 +227 or 1 47 224 +228 and 1 227 -74 +229 next 1 47 228 +230 or 1 49 74 +231 and 1 230 -64 +232 next 1 49 231 +233 or 1 -21 -153 +234 and 1 23 134 +235 or 1 -152 234 +236 and 1 233 235 +237 and 1 23 -134 +238 or 1 -161 237 +239 and 1 236 238 +240 ite 2 113 8 10 +241 ite 2 91 94 240 +242 eq 1 63 241 +243 and 1 25 242 +244 or 1 -188 243 +245 and 1 239 244 +246 or 1 27 -92 +247 and 1 245 246 +248 or 1 29 -85 +249 and 1 247 248 +250 or 1 -31 -151 +251 and 1 249 250 +252 and 1 33 130 +253 or 1 -150 252 +254 and 1 251 253 +255 and 1 33 -130 +256 or 1 -167 255 +257 and 1 254 256 +258 ite 2 109 8 10 +259 ite 2 82 94 258 +260 eq 1 63 259 +261 and 1 35 260 +262 or 1 -206 261 +263 and 1 257 262 +264 or 1 37 -83 +265 and 1 263 264 +266 or 1 39 -76 +267 and 1 265 266 +268 or 1 -41 -147 +269 and 1 267 268 +270 and 1 43 126 +271 or 1 -143 270 +272 and 1 269 271 +273 and 1 43 -126 +274 or 1 -173 273 +275 and 1 272 274 +276 ite 2 105 8 10 +277 ite 2 73 94 276 +278 eq 1 63 277 +279 and 1 45 278 +280 or 1 -224 279 +281 and 1 275 280 +282 or 1 47 -74 +283 and 1 281 282 +284 or 1 49 -64 +285 and 1 283 284 +286 or 1 153 152 +287 or 1 161 286 +288 or 1 188 287 +289 or 1 92 288 +290 or 1 85 289 +291 or 1 151 290 +292 or 1 150 291 +293 or 1 167 292 +294 or 1 206 293 +295 or 1 83 294 +296 or 1 76 295 +297 or 1 147 296 +298 or 1 143 297 +299 or 1 173 298 +300 or 1 224 299 +301 or 1 74 300 +302 or 1 64 301 +303 and 1 285 302 +304 and 1 153 152 +305 and 1 161 286 +306 or 1 304 305 +307 and 1 188 287 +308 or 1 306 307 +309 and 1 92 288 +310 or 1 308 309 +311 and 1 85 289 +312 or 1 310 311 +313 and 1 151 290 +314 or 1 312 313 +315 and 1 150 291 +316 or 1 314 315 +317 and 1 167 292 +318 or 1 316 317 +319 and 1 206 293 +320 or 1 318 319 +321 and 1 83 294 +322 or 1 320 321 +323 and 1 76 295 +324 or 1 322 323 +325 and 1 147 296 +326 or 1 324 325 +327 and 1 143 297 +328 or 1 326 327 +329 and 1 173 298 +330 or 1 328 329 +331 and 1 224 299 +332 or 1 330 331 +333 and 1 74 300 +334 or 1 332 333 +335 and 1 64 301 +336 or 1 334 335 +337 and 1 303 -336 +338 and 1 -21 23 +339 or 1 -21 23 +340 and 1 25 339 +341 or 1 338 340 +342 or 1 25 339 +343 and 1 27 342 +344 or 1 341 343 +345 or 1 27 342 +346 and 1 29 345 +347 or 1 344 346 +348 or 1 29 345 +349 and 1 -347 348 +350 and 1 -31 33 +351 or 1 -31 33 +352 and 1 35 351 +353 or 1 350 352 +354 or 1 35 351 +355 and 1 37 354 +356 or 1 353 355 +357 or 1 37 354 +358 and 1 39 357 +359 or 1 356 358 +360 and 1 349 -359 +361 or 1 39 357 +362 and 1 360 361 +363 and 1 -41 43 +364 or 1 -41 43 +365 and 1 45 364 +366 or 1 363 365 +367 or 1 45 364 +368 and 1 47 367 +369 or 1 366 368 +370 or 1 47 367 +371 and 1 49 370 +372 or 1 369 371 +373 and 1 362 -372 +374 or 1 49 370 +375 and 1 373 374 +376 and 1 337 375 +377 and 1 184 180 +378 or 1 184 180 +379 and 1 189 378 +380 or 1 377 379 +381 or 1 189 378 +382 and 1 192 381 +383 or 1 380 382 +384 or 1 192 381 +385 and 1 195 384 +386 or 1 383 385 +387 or 1 195 384 +388 and 1 -386 387 +389 and 1 202 198 +390 or 1 202 198 +391 and 1 207 390 +392 or 1 389 391 +393 or 1 207 390 +394 and 1 210 393 +395 or 1 392 394 +396 or 1 210 393 +397 and 1 213 396 +398 or 1 395 397 +399 and 1 388 -398 +400 or 1 213 396 +401 and 1 399 400 +402 and 1 220 216 +403 or 1 220 216 +404 and 1 225 403 +405 or 1 402 404 +406 or 1 225 403 +407 and 1 228 406 +408 or 1 405 407 +409 or 1 228 406 +410 and 1 231 409 +411 or 1 408 410 +412 and 1 401 -411 +413 or 1 231 409 +414 and 1 412 413 +415 and 1 376 414 +416 and 1 415 -51 +417 next 1 51 -416 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_0.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_0.btor2 deleted file mode 100644 index 8aab7f1cf3..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_0.btor2 +++ /dev/null @@ -1,70 +0,0 @@ -; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) -; seed for random number: 0 -; maximal depth of syntax trees: 4 -; number of bit-vector state variables: 3 -; number of array state variables: 0 -; maximum number of input variables: 3 -; number of bad properties: 1 -; number of constraints: 1 -; candidate sizes: 1 2 3 4 5 6 7 8 -1 sort bitvec 1 -2 sort bitvec 6 -3 sort bitvec 4 -4 ones 3 -5 redxor 1 4 -6 one 2 -7 constd 2 18 -8 xnor 2 6 7 -9 const 2 110100 -10 sdiv 2 6 9 -11 ite 2 -5 8 10 -12 consth 2 11 -13 not 2 12 -14 zero 2 -15 const 2 100010 -16 sub 2 14 15 -17 sll 2 13 16 -18 slt 1 11 17 -19 sort bitvec 3 -20 state 1 -21 srem 1 20 20 -22 add 1 20 21 -23 ones 19 -24 constd 19 0 -25 and 19 23 24 -26 xor 19 24 24 -27 xnor 19 25 26 -28 ite 19 22 27 23 -29 state 19 bv2_3 -30 consth 19 1 -31 xor 19 29 30 -32 srl 19 29 31 -33 const 2 101000 -34 slice 19 33 3 1 -35 ugt 1 32 34 -36 state 1 bv0_1 -37 init 1 36 35 -38 consth 1 1 -39 eq 1 38 20 -40 input 1 input0_1 -41 input 1 input1_1 -42 xor 1 38 41 -43 const 19 101 -44 sgt 1 43 29 -45 ite 1 40 42 44 -46 xor 1 39 45 -47 next 1 36 46 -48 init 1 20 18 -49 consth 2 01 -50 redxor 1 49 -51 sdiv 1 50 20 -52 next 1 20 51 -53 init 19 29 28 -54 input 19 input2_3 -55 srem 19 54 29 -56 srl 19 55 29 -57 xor 19 56 56 -58 next 19 29 57 -59 and 1 36 40 -60 bad 59 -61 constraint 46 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_1.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_1.btor2 deleted file mode 100644 index 70085cfe16..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_1.btor2 +++ /dev/null @@ -1,70 +0,0 @@ -; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) -; seed for random number: 1 -; maximal depth of syntax trees: 4 -; number of bit-vector state variables: 3 -; number of array state variables: 0 -; maximum number of input variables: 3 -; number of bad properties: 1 -; number of constraints: 1 -; candidate sizes: 1 2 3 4 5 6 7 8 -1 sort bitvec 1 -2 sort bitvec 6 -3 sort bitvec 4 -4 ones 3 -5 redxor 1 4 -6 one 2 -7 constd 2 18 -8 xnor 2 6 7 -9 const 2 110100 -10 sdiv 2 6 9 -11 ite 2 -5 8 10 -12 consth 2 11 -13 not 2 12 -14 zero 2 -15 const 2 100010 -16 sub 2 14 15 -17 sll 2 13 16 -18 slt 1 11 17 -19 sort bitvec 3 -20 state 1 -21 srem 1 20 20 -22 add 1 20 21 -23 ones 19 -24 constd 19 0 -25 and 19 23 24 -26 xor 19 24 24 -27 xnor 19 25 26 -28 ite 19 22 27 23 -29 state 19 bv2_3 -30 consth 19 1 -31 xor 19 29 30 -32 srl 19 29 31 -33 const 2 101000 -34 slice 19 33 3 1 -35 ugt 1 32 34 -36 state 1 bv0_1 -37 init 1 36 35 -38 consth 1 1 -39 eq 1 38 20 -40 input 1 input0_1 -41 input 1 input1_1 -42 xor 1 38 41 -43 const 19 101 -44 sgt 1 43 29 -45 ite 1 40 42 44 -46 xor 1 39 45 -47 next 1 36 46 -48 init 1 20 18 -49 consth 2 01 -50 redxor 1 49 -51 sdiv 1 50 20 -52 next 1 20 51 -53 init 19 29 28 -54 input 19 input2_3 -55 srem 19 54 29 -56 srl 19 55 29 -57 xor 19 56 56 -58 next 19 29 57 -59 and 1 36 40 -60 bad 59 -61 constraint 46 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_2.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_2.btor2 deleted file mode 100644 index 5797a648f0..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_2.btor2 +++ /dev/null @@ -1,55 +0,0 @@ -; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) -; seed for random number: 2 -; maximal depth of syntax trees: 4 -; number of bit-vector state variables: 3 -; number of array state variables: 0 -; maximum number of input variables: 3 -; number of bad properties: 1 -; number of constraints: 1 -; candidate sizes: 1 2 3 4 5 6 7 8 -1 sort bitvec 1 -2 sort bitvec 5 -3 const 2 00000 -4 one 1 -5 const 2 00001 -6 constd 2 9 -7 ite 2 4 5 6 -8 ugt 1 3 7 -9 redor 1 8 -10 sort bitvec 4 -11 state 1 bv0_1 -12 one 10 -13 const 10 0000 -14 ite 10 11 12 13 -15 sort bitvec 2 -16 ones 15 -17 one 15 -18 xor 15 16 17 -19 neg 15 18 -20 init 1 11 9 -21 input 15 input1_2 -22 state 15 bv1_2 -23 sdiv 15 21 22 -24 sra 15 22 21 -25 neq 1 23 24 -26 input 10 input2_4 -27 consth 1 1 -28 state 10 -29 ite 10 -27 28 28 -30 neq 1 26 29 -31 mul 1 25 30 -32 next 1 11 31 -33 init 15 22 19 -34 srl 15 22 17 -35 neg 15 34 -36 next 15 22 35 -37 init 10 28 14 -38 next 10 28 26 -39 input 1 input0_1 -40 sdiv 1 4 39 -41 srem 1 11 40 -42 neq 1 41 41 -43 bad 42 -44 not 1 40 -45 not 1 44 -46 constraint 45 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_3.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_3.btor2 deleted file mode 100644 index eb0d8c3422..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_3.btor2 +++ /dev/null @@ -1,45 +0,0 @@ -; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) -; seed for random number: 3 -; maximal depth of syntax trees: 4 -; number of bit-vector state variables: 3 -; number of array state variables: 0 -; maximum number of input variables: 3 -; number of bad properties: 1 -; number of constraints: 1 -; candidate sizes: 1 2 3 4 5 6 7 8 -1 sort bitvec 1 -2 zero 1 -3 one 1 -4 sra 1 3 3 -5 srem 1 2 4 -6 neq 1 3 2 -7 or 1 5 6 -8 sort bitvec 2 -9 constd 8 0 -10 consth 8 1 -11 sdiv 8 9 10 -12 sort bitvec 7 -13 constd 12 10 -14 const 12 1000011 -15 mul 12 13 14 -16 state 12 bv0_7 -17 init 12 16 15 -18 sort bitvec 5 -19 input 18 input2_5 -20 sra 18 19 19 -21 sext 12 20 2 -22 next 12 16 21 -23 state 8 -24 init 8 23 11 -25 next 8 23 23 -26 state 1 bv2_1 -27 init 1 26 7 -28 next 1 26 3 -29 input 12 input0_7 -30 sgte 1 16 29 -31 bad 30 -32 input 1 input1_1 -33 xnor 1 32 26 -34 sext 8 33 1 -35 slt 1 23 34 -36 constraint 35 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_4.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_4.btor2 deleted file mode 100644 index c86624fb36..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_4.btor2 +++ /dev/null @@ -1,52 +0,0 @@ -; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) -; seed for random number: 4 -; maximal depth of syntax trees: 4 -; number of bit-vector state variables: 3 -; number of array state variables: 0 -; maximum number of input variables: 3 -; number of bad properties: 1 -; number of constraints: 1 -; candidate sizes: 1 2 3 4 5 6 7 8 -1 sort bitvec 7 -2 consth 1 11 -3 sort bitvec 1 -4 sort bitvec 15 -5 ones 4 -6 zero 4 -7 consth 4 0101 -8 sra 4 6 7 -9 sgte 3 5 8 -10 sort bitvec 2 -11 constd 10 -1 -12 zero 10 -13 sdiv 10 11 12 -14 ulte 3 11 13 -15 srl 3 9 14 -16 sort bitvec 6 -17 const 16 000000 -18 const 16 101111 -19 sub 16 17 18 -20 state 16 bv0_6 -21 init 16 20 19 -22 input 16 input1_6 -23 udiv 16 20 22 -24 next 16 20 23 -25 state 3 bv1_1 -26 init 3 25 15 -27 zero 3 -28 input 3 input0_1 -29 srem 3 28 28 -30 and 3 27 29 -31 next 3 25 30 -32 state 1 -33 init 1 32 2 -34 neg 1 32 -35 urem 1 34 32 -36 xor 1 32 32 -37 or 1 35 36 -38 next 1 32 37 -39 uext 4 20 9 -40 not 4 39 -41 ulte 3 40 39 -42 bad 41 -43 constraint 30 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_5.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_5.btor2 deleted file mode 100644 index 1f5211be35..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_5.btor2 +++ /dev/null @@ -1,54 +0,0 @@ -; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) -; seed for random number: 5 -; maximal depth of syntax trees: 4 -; number of bit-vector state variables: 3 -; number of array state variables: 0 -; maximum number of input variables: 3 -; number of bad properties: 1 -; number of constraints: 1 -; candidate sizes: 1 2 3 4 5 6 7 8 -1 sort bitvec 1 -2 one 1 -3 sort bitvec 5 -4 zero 1 -5 mul 1 2 4 -6 uext 3 5 4 -7 sort bitvec 6 -8 constd 7 -25 -9 consth 7 11 -10 sll 7 8 9 -11 constd 7 2 -12 xor 7 10 11 -13 const 7 000000 -14 const 7 111111 -15 or 7 13 14 -16 state 1 bv2_1 -17 sext 7 16 5 -18 mul 7 15 17 -19 and 7 12 18 -20 state 7 bv0_6 -21 init 7 20 19 -22 input 7 input2_6 -23 sll 7 22 22 -24 sll 7 22 20 -25 sll 7 23 24 -26 srl 7 22 25 -27 next 7 20 26 -28 state 3 bv1_5 -29 init 3 28 6 -30 sort bitvec 2 -31 zero 30 -32 sext 3 31 3 -33 next 3 28 32 -34 init 1 16 2 -35 input 1 -36 input 1 input1_1 -37 neg 1 36 -38 implies 1 35 37 -39 next 1 16 38 -40 bad 35 -41 add 7 9 20 -42 concat 7 36 28 -43 add 7 41 42 -44 redand 1 43 -45 constraint 44 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_6.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_6.btor2 deleted file mode 100644 index ee58b02d25..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/bv_debug_6.btor2 +++ /dev/null @@ -1,48 +0,0 @@ -; source: generated by FuzzBtor2 (https://github.com/CoriolisSP/FuzzBtor2/tree/9cee77fb85c22b77518c4611e708d6f53c6c7af7) -; seed for random number: 6 -; maximal depth of syntax trees: 4 -; number of bit-vector state variables: 3 -; number of array state variables: 0 -; maximum number of input variables: 3 -; number of bad properties: 1 -; number of constraints: 1 -; candidate sizes: 1 2 3 4 5 6 7 8 -1 sort bitvec 8 -2 ones 1 -3 not 1 2 -4 constd 1 65 -5 or 1 3 4 -6 sort bitvec 7 -7 constd 6 -56 -8 one 6 -9 udiv 6 7 8 -10 sort bitvec 5 -11 consth 10 11 -12 constd 10 0 -13 sdiv 10 11 12 -14 zero 10 -15 and 10 14 12 -16 srem 10 14 12 -17 sdiv 10 15 16 -18 xnor 10 13 17 -19 state 10 bv0_5 -20 init 10 19 18 -21 next 10 19 19 -22 state 6 bv1_7 -23 init 6 22 9 -24 sub 6 22 22 -25 srl 6 24 24 -26 neg 6 25 -27 next 6 22 26 -28 state 1 bv2_8 -29 init 1 28 5 -30 input 1 input1_8 -31 mul 1 30 30 -32 next 1 28 31 -33 sort bitvec 1 -34 const 6 0101000 -35 ugte 33 34 34 -36 bad 35 -37 input 33 input0_1 -38 mul 33 37 37 -39 constraint 38 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/cav14_example.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/cav14_example.btor2 deleted file mode 100644 index 0a806521fd..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/cav14_example.btor2 +++ /dev/null @@ -1,38 +0,0 @@ -; source: https://github.com/aman-goel/avr/tree/92362931700b66684418a991d018c9fbdbebc06f/tests -; BTOR description generated by Yosys 0.9+431 (git sha1 4a3b5437, clang 4.0.1-6 -fPIC -Os) for module main. -1 sort bitvec 1 -2 input 1 clk -3 sort bitvec 3 -4 const 3 000 -5 state 3 Y -6 init 3 5 4 -7 state 3 X -8 init 3 7 4 -9 ugt 1 5 7 -10 not 1 9 -11 not 1 10 -12 output 11 prop_neg -13 const 1 1 -14 not 1 10 -15 and 1 13 14 -16 bad 15 -17 uext 1 10 0 prop -18 ugt 1 5 7 -19 const 3 111 -20 neq 1 7 19 -21 or 1 18 20 -22 ite 3 21 5 7 -23 const 3 001 -24 add 3 5 23 -25 eq 1 5 7 -26 ite 3 25 24 22 -27 next 3 5 26 -28 add 3 7 23 -29 eq 1 5 7 -30 neq 1 7 19 -31 or 1 29 30 -32 ite 3 31 28 5 -33 ugt 1 5 7 -34 ite 3 33 7 32 -35 next 3 7 34 -; end of yosys output diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 deleted file mode 100644 index 6827f0b30f..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 +++ /dev/null @@ -1,11 +0,0 @@ -1 sort bitvec 3 -2 zero 1 -3 state 1 -4 init 1 3 2 -5 one 1 -6 add 1 3 5 -7 next 1 3 6 -8 ones 1 -9 sort bitvec 1 -10 eq 9 3 8 -11 bad 10 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/count4.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/count4.btor2 deleted file mode 100644 index 7c89403b4b..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/count4.btor2 +++ /dev/null @@ -1,11 +0,0 @@ -1 sort bitvec 4 -2 zero 1 -3 state 1 -4 init 1 3 2 -5 one 1 -6 add 1 3 5 -7 next 1 3 6 -8 ones 1 -9 sort bitvec 1 -10 eq 9 3 8 -11 bad 10 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 deleted file mode 100644 index 28146327f1..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 +++ /dev/null @@ -1,26 +0,0 @@ -; int i = 1, factorial = 1; -; assert (i <= 2 || !(factorial & 1)); -; for (;;) { -; factorial *= i; -; i++; -; assert (i <= 2 || !(factorial & 1)); -; } -1 sort bitvec 4 -2 one 1 -3 state 1 factorial -4 state 1 i -5 init 1 3 2 -6 init 1 4 2 -7 add 1 4 2 -8 mul 1 3 4 -9 next 1 4 7 -10 next 1 3 8 -11 ones 1 -12 sort bitvec 1 -13 eq 12 4 11 -14 bad 13 -15 slice 12 3 0 0 -16 constd 1 3 -17 ugt 12 4 16 -18 and 12 17 15 -19 bad 18 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/noninitstate.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/noninitstate.btor2 deleted file mode 100644 index 3654c6e8bb..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/noninitstate.btor2 +++ /dev/null @@ -1,17 +0,0 @@ -1 sort bitvec 1 -2 input 1 turn -3 state 1 state0 -4 state 1 state1 -5 ite 1 -2 -3 3 -6 ite 1 2 -4 4 -7 next 1 3 5 -8 next 1 4 6 -9 eq 1 3 4 -10 one 1 -11 state 1 initially -12 init 1 11 10 -13 zero 1 -14 next 1 11 13 -15 implies 1 11 -9 -16 constraint 15 -17 bad 9 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/ponylink-slaveTXlen-sat.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/ponylink-slaveTXlen-sat.btor2 deleted file mode 100644 index 7b9bb448ef..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/ponylink-slaveTXlen-sat.btor2 +++ /dev/null @@ -1,4180 +0,0 @@ -; BTOR description generated by Yosys 0.7+439 (git sha1 9337e49, clang 3.8.0-2ubuntu4 -fPIC -Os) for module main. -1 sort bitvec 1 -2 input 1 clk -3 input 1 serdes_in -4 state 1 uut.serdes_en_r -6 state 1 uut.serdes_out_r -8 state 1 $formal$ponylink-slaveTXlen-sat.sv:2951$1696_CHECK -9 const 1 0 -10 state 1 $formal$ponylink-slaveTXlen-sat.sv:2951$1696_EN -11 init 1 10 9 -12 not 1 8 -13 and 1 10 12 -14 bad 13 -15 state 1 uut.pack_8bits.packer.queue_tvalid -16 not 1 15 -17 sort bitvec 4 -18 state 17 uut.txrx.reset_counter -19 redor 1 18 -20 not 1 19 -21 and 1 16 20 -22 uext 1 21 0 in_tready -23 uext 1 20 0 resetn_out -24 uext 1 2 0 uut.clk -25 sort bitvec 9 -26 state 25 uut.pack_8bits.packer.ser_tdata -27 uext 25 26 0 uut.in_ser_tdata -28 sort bitvec 8 -29 state 28 uut.txrx.in_fifo_iptr -30 const 1 1 -31 uext 28 30 7 -32 add 28 29 31 -33 state 28 uut.txrx.peer_out_fifo_iptr -34 neq 1 32 33 -35 and 1 34 20 -36 uext 1 35 0 uut.in_ser_tready -37 state 1 uut.pack_8bits.packer.ser_tvalid -38 uext 1 37 0 uut.in_ser_tvalid -39 uext 1 21 0 uut.in_tready -40 state 1 uut.unpack_8bits.unpacker.ser_tready -41 uext 1 40 0 uut.out_ser_tready -42 state 28 uut.txrx.out_fifo_iptr -43 state 28 uut.txrx.out_fifo_optr -44 neq 1 42 43 -45 and 1 44 20 -46 uext 1 45 0 uut.out_ser_tvalid -47 uext 1 2 0 uut.pack_8bits.packer.clk -48 state 1 uut.pack_8bits.packer.queue_send_tuser -49 state 1 uut.pack_8bits.packer.queue_send_tuser2 -50 state 1 uut.pack_8bits.packer.queue_tlast -51 state 28 uut.pack_8bits.packer.queue_tuser -52 uext 1 20 0 uut.pack_8bits.packer.resetn -53 sort bitvec 32 -54 state 53 uut.pack_8bits.packer.rng -55 sort bitvec 12 -56 state 55 uut.pack_8bits.packer.rng_counter -57 sort bitvec 5 -58 state 57 uut.pack_8bits.packer.rng_cursor -59 uext 1 35 0 uut.pack_8bits.packer.ser_tready -60 uext 1 21 0 uut.pack_8bits.packer.tready -61 uext 1 20 0 uut.resetn_out -62 uext 1 4 0 uut.serdes_en -63 state 1 uut.txrx.encode_1.encoder.serdes_en -64 uext 1 63 0 uut.serdes_en_t -65 uext 1 3 0 uut.serdes_in -66 state 1 uut.serdes_in_r -67 uext 1 66 0 uut.serdes_in_t -68 uext 1 6 0 uut.serdes_out -69 state 1 uut.txrx.encode_1.encoder.serdes_out -70 uext 1 69 0 uut.serdes_out_t -71 state 53 uut.txrx.crc32.lfsr_q -72 uext 53 71 0 uut.txrx.checksum -73 state 1 uut.txrx.checksum_lock -74 not 1 73 -75 state 1 uut.txrx.send_valid -76 init 1 75 9 -77 state 1 uut.txrx.encode_1.encoder.send_ready -78 and 1 75 77 -79 ite 1 78 74 9 -80 state 1 uut.txrx.hd_send_mode -81 not 1 80 -82 state 1 uut.txrx.decode_1.decoder.recv_word_en -83 and 1 81 82 -84 ite 1 83 30 79 -85 uext 1 84 0 uut.txrx.checksum_enable -86 state 25 uut.txrx.send_word -87 sort bitvec 10 -88 state 87 uut.txrx.decode_1.decoder.recv_wbits -89 slice 1 88 0 0 -90 slice 1 88 1 1 -91 and 1 89 90 -92 slice 1 88 2 2 -93 not 1 92 -94 and 1 91 93 -95 slice 1 88 3 3 -96 not 1 95 -97 and 1 94 96 -98 and 1 92 95 -99 not 1 89 -100 and 1 98 99 -101 not 1 90 -102 and 1 100 101 -103 or 1 97 102 -104 and 1 99 101 -105 or 1 91 104 -106 not 1 105 -107 and 1 93 96 -108 or 1 98 107 -109 not 1 108 -110 and 1 106 109 -111 or 1 103 110 -112 and 1 111 101 -113 and 1 112 93 -114 slice 1 88 4 4 -115 slice 1 88 5 5 -116 eq 1 114 115 -117 and 1 113 116 -118 and 1 106 92 -119 and 1 118 95 -120 and 1 109 89 -121 and 1 120 90 -122 or 1 119 121 -123 and 1 122 115 -124 or 1 117 123 -125 and 1 106 93 -126 and 1 125 96 -127 and 1 109 99 -128 and 1 127 101 -129 or 1 126 128 -130 and 1 129 95 -131 and 1 130 114 -132 and 1 131 115 -133 or 1 124 132 -134 and 1 111 99 -135 and 1 134 93 -136 and 1 135 116 -137 or 1 133 136 -138 not 1 114 -139 and 1 129 138 -140 or 1 137 139 -141 and 1 91 114 -142 and 1 141 115 -143 or 1 140 142 -144 and 1 107 138 -145 not 1 115 -146 and 1 144 145 -147 or 1 143 146 -148 xor 1 89 147 -149 and 1 111 90 -150 and 1 149 92 -151 and 1 150 116 -152 or 1 151 123 -153 or 1 152 132 -154 and 1 111 89 -155 and 1 154 92 -156 and 1 155 116 -157 or 1 153 156 -158 or 1 157 139 -159 or 1 158 142 -160 or 1 159 146 -161 xor 1 90 160 -162 or 1 153 136 -163 or 1 162 139 -164 and 1 104 138 -165 and 1 164 145 -166 or 1 163 165 -167 or 1 166 146 -168 xor 1 92 167 -169 or 1 133 156 -170 or 1 169 139 -171 or 1 170 142 -172 or 1 171 146 -173 xor 1 95 172 -174 and 1 129 145 -175 or 1 117 174 -176 or 1 175 132 -177 or 1 176 136 -178 or 1 177 139 -179 or 1 178 165 -180 or 1 179 146 -181 xor 1 114 180 -182 slice 1 88 9 9 -183 slice 1 88 6 6 -184 not 1 183 -185 and 1 182 184 -186 slice 1 88 8 8 -187 slice 1 88 7 7 -188 not 1 187 -189 or 1 186 188 -190 or 1 92 95 -191 or 1 190 114 -192 or 1 191 115 -193 not 1 192 -194 or 1 189 193 -195 and 1 185 194 -196 not 1 182 -197 and 1 183 196 -198 not 1 186 -199 or 1 198 187 -200 or 1 199 192 -201 and 1 197 200 -202 or 1 195 201 -203 and 1 193 187 -204 and 1 203 186 -205 or 1 202 204 -206 and 1 192 188 -207 and 1 206 198 -208 or 1 205 207 -209 or 1 189 192 -210 and 1 185 209 -211 or 1 199 193 -212 and 1 197 211 -213 or 1 210 212 -214 and 1 192 187 -215 and 1 214 186 -216 or 1 213 215 -217 and 1 193 188 -218 and 1 217 198 -219 or 1 216 218 -220 xor 1 182 186 -221 and 1 184 187 -222 and 1 221 198 -223 and 1 222 182 -224 and 1 223 192 -225 and 1 221 186 -226 and 1 225 196 -227 and 1 226 193 -228 or 1 224 227 -229 and 1 183 188 -230 and 1 229 198 -231 and 1 230 182 -232 and 1 231 192 -233 or 1 228 232 -234 and 1 229 186 -235 and 1 234 196 -236 and 1 235 193 -237 or 1 233 236 -238 not 1 237 -239 and 1 220 238 -240 and 1 225 182 -241 or 1 239 240 -242 and 1 230 196 -243 or 1 241 242 -244 and 1 98 114 -245 and 1 244 115 -246 or 1 245 146 -247 and 1 139 115 -248 and 1 247 187 -249 and 1 248 186 -250 and 1 249 182 -251 or 1 246 250 -252 and 1 122 114 -253 and 1 252 145 -254 and 1 253 188 -255 and 1 254 198 -256 and 1 255 196 -257 or 1 251 256 -258 sort bitvec 2 -259 concat 258 161 148 -260 sort bitvec 3 -261 concat 260 168 259 -262 concat 17 173 261 -263 concat 57 181 262 -264 sort bitvec 6 -265 concat 264 208 263 -266 sort bitvec 7 -267 concat 266 219 265 -268 concat 28 243 267 -269 concat 25 257 268 -270 ite 25 83 269 86 -271 uext 25 270 0 uut.txrx.checksum_word -272 uext 1 2 0 uut.txrx.clk -273 uext 1 2 0 uut.txrx.crc32.clk -274 uext 1 84 0 uut.txrx.crc32.crc_en -275 uext 53 71 0 uut.txrx.crc32.crc_out -276 slice 28 270 7 0 -277 not 28 276 -278 slice 1 270 8 8 -279 ite 28 278 277 276 -280 uext 28 279 0 uut.txrx.crc32.data_in -281 slice 1 71 24 24 -282 slice 1 71 30 30 -283 xor 1 281 282 -284 slice 1 279 0 0 -285 xor 1 283 284 -286 slice 1 279 6 6 -287 xor 1 285 286 -288 slice 1 71 25 25 -289 xor 1 281 288 -290 xor 1 289 282 -291 slice 1 71 31 31 -292 xor 1 290 291 -293 xor 1 292 284 -294 slice 1 279 1 1 -295 xor 1 293 294 -296 xor 1 295 286 -297 slice 1 279 7 7 -298 xor 1 296 297 -299 slice 1 71 26 26 -300 xor 1 289 299 -301 xor 1 300 282 -302 xor 1 301 291 -303 xor 1 302 284 -304 xor 1 303 294 -305 slice 1 279 2 2 -306 xor 1 304 305 -307 xor 1 306 286 -308 xor 1 307 297 -309 xor 1 288 299 -310 slice 1 71 27 27 -311 xor 1 309 310 -312 xor 1 311 291 -313 xor 1 312 294 -314 xor 1 313 305 -315 slice 1 279 3 3 -316 xor 1 314 315 -317 xor 1 316 297 -318 xor 1 281 299 -319 xor 1 318 310 -320 slice 1 71 28 28 -321 xor 1 319 320 -322 xor 1 321 282 -323 xor 1 322 284 -324 xor 1 323 305 -325 xor 1 324 315 -326 slice 1 279 4 4 -327 xor 1 325 326 -328 xor 1 327 286 -329 xor 1 289 310 -330 xor 1 329 320 -331 slice 1 71 29 29 -332 xor 1 330 331 -333 xor 1 332 282 -334 xor 1 333 291 -335 xor 1 334 284 -336 xor 1 335 294 -337 xor 1 336 315 -338 xor 1 337 326 -339 slice 1 279 5 5 -340 xor 1 338 339 -341 xor 1 340 286 -342 xor 1 341 297 -343 xor 1 309 320 -344 xor 1 343 331 -345 xor 1 344 282 -346 xor 1 345 291 -347 xor 1 346 294 -348 xor 1 347 305 -349 xor 1 348 326 -350 xor 1 349 339 -351 xor 1 350 286 -352 xor 1 351 297 -353 xor 1 319 331 -354 xor 1 353 291 -355 xor 1 354 284 -356 xor 1 355 305 -357 xor 1 356 315 -358 xor 1 357 339 -359 xor 1 358 297 -360 slice 1 71 0 0 -361 xor 1 360 281 -362 xor 1 361 288 -363 xor 1 362 310 -364 xor 1 363 320 -365 xor 1 364 284 -366 xor 1 365 294 -367 xor 1 366 315 -368 xor 1 367 326 -369 slice 1 71 1 1 -370 xor 1 369 288 -371 xor 1 370 299 -372 xor 1 371 320 -373 xor 1 372 331 -374 xor 1 373 294 -375 xor 1 374 305 -376 xor 1 375 326 -377 xor 1 376 339 -378 slice 1 71 2 2 -379 xor 1 378 281 -380 xor 1 379 299 -381 xor 1 380 310 -382 xor 1 381 331 -383 xor 1 382 284 -384 xor 1 383 305 -385 xor 1 384 315 -386 xor 1 385 339 -387 slice 1 71 3 3 -388 xor 1 387 281 -389 xor 1 388 288 -390 xor 1 389 310 -391 xor 1 390 320 -392 xor 1 391 284 -393 xor 1 392 294 -394 xor 1 393 315 -395 xor 1 394 326 -396 slice 1 71 4 4 -397 xor 1 396 281 -398 xor 1 397 288 -399 xor 1 398 299 -400 xor 1 399 320 -401 xor 1 400 331 -402 xor 1 401 282 -403 xor 1 402 284 -404 xor 1 403 294 -405 xor 1 404 305 -406 xor 1 405 326 -407 xor 1 406 339 -408 xor 1 407 286 -409 slice 1 71 5 5 -410 xor 1 409 288 -411 xor 1 410 299 -412 xor 1 411 310 -413 xor 1 412 331 -414 xor 1 413 282 -415 xor 1 414 291 -416 xor 1 415 294 -417 xor 1 416 305 -418 xor 1 417 315 -419 xor 1 418 339 -420 xor 1 419 286 -421 xor 1 420 297 -422 slice 1 71 6 6 -423 xor 1 422 299 -424 xor 1 423 310 -425 xor 1 424 320 -426 xor 1 425 282 -427 xor 1 426 291 -428 xor 1 427 305 -429 xor 1 428 315 -430 xor 1 429 326 -431 xor 1 430 286 -432 xor 1 431 297 -433 slice 1 71 7 7 -434 xor 1 433 310 -435 xor 1 434 320 -436 xor 1 435 331 -437 xor 1 436 291 -438 xor 1 437 315 -439 xor 1 438 326 -440 xor 1 439 339 -441 xor 1 440 297 -442 slice 1 71 8 8 -443 xor 1 442 281 -444 xor 1 443 320 -445 xor 1 444 331 -446 xor 1 445 284 -447 xor 1 446 326 -448 xor 1 447 339 -449 slice 1 71 9 9 -450 xor 1 449 288 -451 xor 1 450 331 -452 xor 1 451 282 -453 xor 1 452 294 -454 xor 1 453 339 -455 xor 1 454 286 -456 slice 1 71 10 10 -457 xor 1 456 299 -458 xor 1 457 282 -459 xor 1 458 291 -460 xor 1 459 305 -461 xor 1 460 286 -462 xor 1 461 297 -463 slice 1 71 11 11 -464 xor 1 463 310 -465 xor 1 464 291 -466 xor 1 465 315 -467 xor 1 466 297 -468 slice 1 71 12 12 -469 xor 1 468 320 -470 xor 1 469 326 -471 slice 1 71 13 13 -472 xor 1 471 331 -473 xor 1 472 339 -474 slice 1 71 14 14 -475 xor 1 474 281 -476 xor 1 475 284 -477 slice 1 71 15 15 -478 xor 1 477 281 -479 xor 1 478 288 -480 xor 1 479 282 -481 xor 1 480 284 -482 xor 1 481 294 -483 xor 1 482 286 -484 slice 1 71 16 16 -485 xor 1 484 288 -486 xor 1 485 299 -487 xor 1 486 291 -488 xor 1 487 294 -489 xor 1 488 305 -490 xor 1 489 297 -491 slice 1 71 17 17 -492 xor 1 491 299 -493 xor 1 492 310 -494 xor 1 493 305 -495 xor 1 494 315 -496 slice 1 71 18 18 -497 xor 1 496 281 -498 xor 1 497 310 -499 xor 1 498 320 -500 xor 1 499 282 -501 xor 1 500 284 -502 xor 1 501 315 -503 xor 1 502 326 -504 xor 1 503 286 -505 slice 1 71 19 19 -506 xor 1 505 288 -507 xor 1 506 320 -508 xor 1 507 331 -509 xor 1 508 291 -510 xor 1 509 294 -511 xor 1 510 326 -512 xor 1 511 339 -513 xor 1 512 297 -514 slice 1 71 20 20 -515 xor 1 514 299 -516 xor 1 515 331 -517 xor 1 516 282 -518 xor 1 517 305 -519 xor 1 518 339 -520 xor 1 519 286 -521 slice 1 71 21 21 -522 xor 1 521 310 -523 xor 1 522 282 -524 xor 1 523 291 -525 xor 1 524 315 -526 xor 1 525 286 -527 xor 1 526 297 -528 slice 1 71 22 22 -529 xor 1 528 320 -530 xor 1 529 291 -531 xor 1 530 326 -532 xor 1 531 297 -533 slice 1 71 23 23 -534 xor 1 533 331 -535 xor 1 534 339 -536 concat 258 298 287 -537 concat 260 308 536 -538 concat 17 317 537 -539 concat 57 328 538 -540 concat 264 342 539 -541 concat 266 352 540 -542 concat 28 359 541 -543 concat 25 368 542 -544 concat 87 377 543 -545 sort bitvec 11 -546 concat 545 386 544 -547 concat 55 395 546 -548 sort bitvec 13 -549 concat 548 408 547 -550 sort bitvec 14 -551 concat 550 421 549 -552 sort bitvec 15 -553 concat 552 432 551 -554 sort bitvec 16 -555 concat 554 441 553 -556 sort bitvec 17 -557 concat 556 448 555 -558 sort bitvec 18 -559 concat 558 455 557 -560 sort bitvec 19 -561 concat 560 462 559 -562 sort bitvec 20 -563 concat 562 467 561 -564 sort bitvec 21 -565 concat 564 470 563 -566 sort bitvec 22 -567 concat 566 473 565 -568 sort bitvec 23 -569 concat 568 476 567 -570 sort bitvec 24 -571 concat 570 483 569 -572 sort bitvec 25 -573 concat 572 490 571 -574 sort bitvec 26 -575 concat 574 495 573 -576 sort bitvec 27 -577 concat 576 504 575 -578 sort bitvec 28 -579 concat 578 513 577 -580 sort bitvec 29 -581 concat 580 520 579 -582 sort bitvec 30 -583 concat 582 527 581 -584 sort bitvec 31 -585 concat 584 532 583 -586 concat 53 535 585 -587 uext 53 586 0 uut.txrx.crc32.lfsr_c -588 const 25 111111100 -589 eq 1 270 588 -590 and 1 589 84 -591 uext 1 590 0 uut.txrx.crc32.rst -592 uext 1 2 0 uut.txrx.decode_1.decoder.clk -593 const 17 0000 -594 state 17 uut.txrx.decode_1.decoder.cnt -595 init 17 594 593 -596 state 17 uut.txrx.decode_1.decoder.cnt2 -597 init 17 596 593 -598 uext 1 2 0 uut.txrx.decode_1.decoder.de8b10b.clk -599 and 1 91 92 -600 and 1 599 95 -601 and 1 104 93 -602 and 1 601 96 -603 or 1 600 602 -604 and 1 183 187 -605 and 1 604 186 -606 and 1 605 182 -607 or 1 603 606 -608 and 1 184 188 -609 and 1 608 198 -610 and 1 609 196 -611 or 1 607 610 -612 and 1 139 145 -613 or 1 611 612 -614 and 1 252 115 -615 or 1 613 614 -616 and 1 114 115 -617 and 1 616 183 -618 and 1 617 187 -619 and 1 618 186 -620 or 1 615 619 -621 and 1 138 145 -622 and 1 621 184 -623 and 1 622 188 -624 and 1 623 198 -625 or 1 620 624 -626 and 1 114 145 -627 and 1 626 187 -628 and 1 627 186 -629 and 1 628 182 -630 or 1 625 629 -631 and 1 138 115 -632 and 1 631 188 -633 and 1 632 198 -634 and 1 633 196 -635 or 1 630 634 -636 not 1 122 -637 and 1 636 114 -638 and 1 637 145 -639 and 1 638 188 -640 and 1 639 198 -641 and 1 640 196 -642 or 1 635 641 -643 not 1 129 -644 and 1 643 138 -645 and 1 644 115 -646 and 1 645 187 -647 and 1 646 186 -648 and 1 647 182 -649 or 1 642 648 -650 and 1 616 188 -651 and 1 650 198 -652 and 1 651 196 -653 and 1 621 187 -654 and 1 653 186 -655 and 1 654 182 -656 or 1 652 655 -657 or 1 244 144 -658 not 1 657 -659 and 1 656 658 -660 or 1 649 659 -661 or 1 114 115 -662 and 1 122 661 -663 and 1 111 114 -664 and 1 663 115 -665 or 1 662 664 -666 or 1 604 608 -667 not 1 666 -668 and 1 667 186 -669 and 1 668 182 -670 and 1 186 182 -671 and 1 198 196 -672 or 1 670 671 -673 not 1 672 -674 and 1 673 183 -675 and 1 674 187 -676 or 1 669 675 -677 and 1 665 676 -678 or 1 660 677 -679 not 1 616 -680 and 1 129 679 -681 and 1 111 138 -682 and 1 681 145 -683 or 1 680 682 -684 and 1 667 198 -685 and 1 684 196 -686 and 1 673 184 -687 and 1 686 188 -688 or 1 685 687 -689 and 1 683 688 -690 or 1 678 689 -691 and 1 599 138 -692 and 1 691 145 -693 or 1 608 688 -694 and 1 692 693 -695 or 1 690 694 -696 and 1 601 114 -697 and 1 696 115 -698 or 1 604 676 -699 and 1 697 698 -700 or 1 695 699 -701 and 1 604 198 -702 and 1 701 196 -703 and 1 702 665 -704 or 1 700 703 -705 and 1 608 186 -706 and 1 705 182 -707 and 1 706 683 -708 or 1 704 707 -709 and 1 245 184 -710 and 1 709 188 -711 and 1 710 198 -712 or 1 708 711 -713 and 1 146 183 -714 and 1 713 187 -715 and 1 714 186 -716 or 1 712 715 -717 uext 1 716 0 uut.txrx.decode_1.decoder.de8b10b.code_err -718 uext 87 88 0 uut.txrx.decode_1.decoder.de8b10b.datain -719 uext 25 269 0 uut.txrx.decode_1.decoder.de8b10b.dataout -720 uext 1 142 0 uut.txrx.decode_1.decoder.de8b10b.decoder.abei -721 uext 1 105 0 uut.txrx.decode_1.decoder.de8b10b.decoder.aeqb -722 uext 1 89 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ai -723 uext 1 165 0 uut.txrx.decode_1.decoder.de8b10b.decoder.anbnenin -724 uext 1 148 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ao -725 uext 1 90 0 uut.txrx.decode_1.decoder.de8b10b.decoder.bi -726 uext 1 161 0 uut.txrx.decode_1.decoder.de8b10b.decoder.bo -727 uext 1 108 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ceqd -728 uext 1 92 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ci -729 uext 1 146 0 uut.txrx.decode_1.decoder.de8b10b.decoder.cndnenin -730 uext 1 168 0 uut.txrx.decode_1.decoder.de8b10b.decoder.co -731 uext 1 716 0 uut.txrx.decode_1.decoder.de8b10b.decoder.code_err -732 uext 1 147 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compa -733 uext 1 160 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compb -734 uext 1 167 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compc -735 uext 1 172 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compd -736 uext 1 180 0 uut.txrx.decode_1.decoder.de8b10b.decoder.compe -737 uext 87 88 0 uut.txrx.decode_1.decoder.de8b10b.decoder.datain -738 uext 25 269 0 uut.txrx.decode_1.decoder.de8b10b.decoder.dataout -739 uext 1 95 0 uut.txrx.decode_1.decoder.de8b10b.decoder.di -740 uext 1 688 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp4n -741 uext 1 676 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp4p -742 state 1 uut.txrx.decode_1.decoder.de8b10b.dispout_q -743 const 266 1111100 -744 uext 87 743 3 -745 neq 1 88 744 -746 and 1 742 745 -747 and 1 111 746 -748 or 1 122 747 -749 uext 1 748 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6a -750 not 1 746 -751 and 1 129 750 -752 uext 1 751 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6a0 -753 and 1 122 746 -754 uext 1 753 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6a2 -755 not 1 751 -756 and 1 616 755 -757 and 1 748 661 -758 or 1 756 757 -759 or 1 758 753 -760 and 1 616 95 -761 or 1 759 760 -762 or 1 661 95 -763 and 1 761 762 -764 uext 1 763 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6b -765 uext 1 683 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6n -766 uext 1 665 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp6p -767 and 1 746 665 -768 and 1 683 750 -769 or 1 767 768 -770 not 1 683 -771 and 1 746 770 -772 and 1 771 183 -773 and 1 772 187 -774 or 1 769 773 -775 and 1 746 89 -776 and 1 775 90 -777 and 1 776 92 -778 or 1 774 777 -779 and 1 771 676 -780 or 1 778 779 -781 not 1 665 -782 and 1 750 781 -783 and 1 782 184 -784 and 1 783 188 -785 or 1 780 784 -786 and 1 750 99 -787 and 1 786 101 -788 and 1 787 93 -789 or 1 785 788 -790 and 1 782 688 -791 or 1 789 790 -792 or 1 791 677 -793 or 1 792 689 -794 uext 1 793 0 uut.txrx.decode_1.decoder.de8b10b.decoder.disp_err -795 uext 1 746 0 uut.txrx.decode_1.decoder.de8b10b.decoder.dispin -796 or 1 702 706 -797 and 1 667 673 -798 or 1 796 797 -799 and 1 763 798 -800 or 1 676 799 -801 or 1 800 670 -802 or 1 186 182 -803 and 1 801 802 -804 uext 1 803 0 uut.txrx.decode_1.decoder.de8b10b.decoder.dispout -805 uext 1 173 0 uut.txrx.decode_1.decoder.de8b10b.decoder.do -806 uext 1 114 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ei -807 uext 1 181 0 uut.txrx.decode_1.decoder.de8b10b.decoder.eo -808 uext 1 666 0 uut.txrx.decode_1.decoder.de8b10b.decoder.feqg -809 uext 1 798 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fghj22 -810 uext 1 688 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fghjp13 -811 uext 1 676 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fghjp31 -812 uext 1 183 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fi -813 uext 1 208 0 uut.txrx.decode_1.decoder.de8b10b.decoder.fo -814 uext 1 187 0 uut.txrx.decode_1.decoder.de8b10b.decoder.gi -815 uext 1 219 0 uut.txrx.decode_1.decoder.de8b10b.decoder.go -816 uext 1 672 0 uut.txrx.decode_1.decoder.de8b10b.decoder.heqj -817 uext 1 186 0 uut.txrx.decode_1.decoder.de8b10b.decoder.hi -818 uext 1 243 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ho -819 uext 1 115 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ii -820 uext 1 182 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ji -821 uext 1 193 0 uut.txrx.decode_1.decoder.de8b10b.decoder.k28p -822 uext 1 257 0 uut.txrx.decode_1.decoder.de8b10b.decoder.ko -823 uext 1 602 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p04 -824 uext 1 129 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p13 -825 uext 1 132 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p13dei -826 uext 1 139 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p13en -827 uext 1 174 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p13in -828 uext 1 111 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22 -829 uext 1 156 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22aceeqi -830 uext 1 136 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22ancneeqi -831 uext 1 151 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22bceeqi -832 uext 1 117 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p22bncneeqi -833 uext 1 122 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p31 -834 uext 1 123 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p31i -835 uext 1 600 0 uut.txrx.decode_1.decoder.de8b10b.decoder.p40 -836 uext 1 793 0 uut.txrx.decode_1.decoder.de8b10b.disp_err -837 uext 1 746 0 uut.txrx.decode_1.decoder.de8b10b.dispin -838 uext 1 803 0 uut.txrx.decode_1.decoder.de8b10b.dispout -839 uext 1 82 0 uut.txrx.decode_1.decoder.de8b10b.enable -840 or 1 716 793 -841 neq 1 269 588 -842 and 1 840 841 -843 uext 1 842 0 uut.txrx.decode_1.decoder.de8b10b.recv_error -844 uext 1 63 0 uut.txrx.decode_1.decoder.de8b10b.reset -845 state 17 uut.txrx.decode_1.decoder.de8b10b.reset_state -846 state 1 uut.txrx.decode_1.decoder.de8b10b.rstdetect -847 state 1 uut.txrx.decode_1.decoder.last_bit -848 init 1 847 9 -849 uext 1 842 0 uut.txrx.decode_1.decoder.recv_error -850 uext 25 269 0 uut.txrx.decode_1.decoder.recv_word -851 uext 1 63 0 uut.txrx.decode_1.decoder.reset -852 uext 1 846 0 uut.txrx.decode_1.decoder.rstdetect -853 uext 1 66 0 uut.txrx.decode_1.decoder.serdes_in -854 state 552 uut.txrx.encode_1.encoder.buffer -855 state 552 uut.txrx.encode_1.encoder.buffer_en -856 uext 1 2 0 uut.txrx.encode_1.encoder.clk -857 const 260 000 -858 state 260 uut.txrx.encode_1.encoder.counter -859 init 260 858 857 -860 uext 1 2 0 uut.txrx.encode_1.encoder.en8b10b.clk -861 uext 25 86 0 uut.txrx.encode_1.encoder.en8b10b.datain -862 slice 1 86 0 0 -863 slice 1 86 4 4 -864 slice 1 86 3 3 -865 and 1 863 864 -866 slice 1 86 2 2 -867 not 1 866 -868 and 1 865 867 -869 slice 1 86 1 1 -870 not 1 869 -871 and 1 868 870 -872 not 1 862 -873 and 1 871 872 -874 not 1 863 -875 and 1 862 869 -876 and 1 875 867 -877 not 1 864 -878 and 1 876 877 -879 and 1 866 864 -880 and 1 879 872 -881 and 1 880 870 -882 or 1 878 881 -883 and 1 872 870 -884 or 1 875 883 -885 not 1 884 -886 and 1 867 877 -887 or 1 879 886 -888 not 1 887 -889 and 1 885 888 -890 or 1 882 889 -891 not 1 890 -892 and 1 874 891 -893 and 1 885 866 -894 and 1 893 864 -895 and 1 888 862 -896 and 1 895 869 -897 or 1 894 896 -898 not 1 897 -899 and 1 892 898 -900 or 1 873 899 -901 state 1 uut.txrx.encode_1.encoder.send_disp -902 neq 1 86 588 -903 and 1 901 902 -904 not 1 903 -905 and 1 900 904 -906 slice 1 86 8 8 -907 and 1 863 891 -908 and 1 885 867 -909 and 1 908 877 -910 and 1 888 872 -911 and 1 910 870 -912 or 1 909 911 -913 not 1 912 -914 and 1 907 913 -915 or 1 906 914 -916 and 1 874 877 -917 and 1 916 866 -918 and 1 917 869 -919 and 1 918 862 -920 or 1 915 919 -921 and 1 920 903 -922 or 1 905 921 -923 xor 1 862 922 -924 and 1 875 866 -925 and 1 924 864 -926 not 1 925 -927 and 1 869 926 -928 and 1 883 867 -929 and 1 928 877 -930 or 1 927 929 -931 xor 1 930 922 -932 or 1 929 866 -933 or 1 932 873 -934 xor 1 933 922 -935 not 1 924 -936 and 1 864 935 -937 xor 1 936 922 -938 or 1 863 912 -939 not 1 873 -940 and 1 938 939 -941 xor 1 940 922 -942 and 1 890 874 -943 and 1 863 877 -944 and 1 943 867 -945 not 1 875 -946 and 1 944 945 -947 or 1 942 946 -948 and 1 863 925 -949 or 1 947 948 -950 and 1 906 863 -951 and 1 950 864 -952 and 1 951 866 -953 and 1 952 870 -954 and 1 953 872 -955 or 1 949 954 -956 and 1 943 866 -957 and 1 956 870 -958 and 1 957 872 -959 or 1 955 958 -960 xor 1 959 922 -961 slice 1 86 5 5 -962 slice 1 86 6 6 -963 and 1 961 962 -964 slice 1 86 7 7 -965 and 1 963 964 -966 and 1 943 912 -967 and 1 874 864 -968 and 1 967 897 -969 ite 1 903 968 966 -970 or 1 906 969 -971 and 1 965 970 -972 not 1 971 -973 and 1 961 972 -974 not 1 961 -975 not 1 962 -976 and 1 974 975 -977 and 1 961 975 -978 and 1 974 962 -979 or 1 977 978 -980 and 1 906 979 -981 or 1 976 980 -982 or 1 900 915 -983 xor 1 903 982 -984 not 1 983 -985 and 1 981 984 -986 and 1 963 983 -987 or 1 985 986 -988 xor 1 973 987 -989 not 1 964 -990 and 1 976 989 -991 or 1 962 990 -992 xor 1 991 987 -993 xor 1 964 987 -994 xor 1 962 961 -995 and 1 989 994 -996 or 1 995 971 -997 xor 1 996 987 -998 concat 258 931 923 -999 concat 260 934 998 -1000 concat 17 937 999 -1001 concat 57 941 1000 -1002 concat 264 960 1001 -1003 concat 266 988 1002 -1004 concat 28 992 1003 -1005 concat 25 993 1004 -1006 concat 87 997 1005 -1007 state 1 uut.txrx.encode_1.encoder.en8b10b.lastbit -1008 not 1 1007 -1009 const 25 000000000 -1010 concat 87 1009 1008 -1011 const 25 100000000 -1012 eq 1 86 1011 -1013 ite 87 1012 1010 1006 -1014 uext 87 1013 0 uut.txrx.encode_1.encoder.en8b10b.dataout -1015 uext 87 1006 0 uut.txrx.encode_1.encoder.en8b10b.dataout_t -1016 uext 1 903 0 uut.txrx.encode_1.encoder.en8b10b.dispin -1017 or 1 976 965 -1018 xor 1 983 1017 -1019 uext 1 1018 0 uut.txrx.encode_1.encoder.en8b10b.dispout -1020 uext 1 884 0 uut.txrx.encode_1.encoder.en8b10b.encoder.aeqb -1021 uext 1 862 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ai -1022 uext 1 971 0 uut.txrx.encode_1.encoder.en8b10b.encoder.alt7 -1023 uext 1 862 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ao -1024 uext 1 869 0 uut.txrx.encode_1.encoder.en8b10b.encoder.bi -1025 uext 1 930 0 uut.txrx.encode_1.encoder.en8b10b.encoder.bo -1026 uext 1 887 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ceqd -1027 uext 1 866 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ci -1028 uext 1 933 0 uut.txrx.encode_1.encoder.en8b10b.encoder.co -1029 uext 1 987 0 uut.txrx.encode_1.encoder.en8b10b.encoder.compls4 -1030 uext 1 922 0 uut.txrx.encode_1.encoder.en8b10b.encoder.compls6 -1031 uext 25 86 0 uut.txrx.encode_1.encoder.en8b10b.encoder.datain -1032 uext 87 1006 0 uut.txrx.encode_1.encoder.en8b10b.encoder.dataout -1033 uext 1 864 0 uut.txrx.encode_1.encoder.en8b10b.encoder.di -1034 uext 1 983 0 uut.txrx.encode_1.encoder.en8b10b.encoder.disp6 -1035 uext 1 903 0 uut.txrx.encode_1.encoder.en8b10b.encoder.dispin -1036 uext 1 1018 0 uut.txrx.encode_1.encoder.en8b10b.encoder.dispout -1037 uext 1 936 0 uut.txrx.encode_1.encoder.en8b10b.encoder.do -1038 uext 1 863 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ei -1039 uext 1 940 0 uut.txrx.encode_1.encoder.en8b10b.encoder.eo -1040 uext 1 961 0 uut.txrx.encode_1.encoder.en8b10b.encoder.fi -1041 uext 1 973 0 uut.txrx.encode_1.encoder.en8b10b.encoder.fo -1042 uext 1 962 0 uut.txrx.encode_1.encoder.en8b10b.encoder.gi -1043 uext 1 991 0 uut.txrx.encode_1.encoder.en8b10b.encoder.go -1044 uext 1 964 0 uut.txrx.encode_1.encoder.en8b10b.encoder.hi -1045 uext 1 964 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ho -1046 uext 1 959 0 uut.txrx.encode_1.encoder.en8b10b.encoder.io -1047 uext 1 996 0 uut.txrx.encode_1.encoder.en8b10b.encoder.jo -1048 uext 1 906 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ki -1049 uext 1 929 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l04 -1050 uext 1 912 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l13 -1051 uext 1 890 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l22 -1052 uext 1 897 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l31 -1053 uext 1 925 0 uut.txrx.encode_1.encoder.en8b10b.encoder.l40 -1054 uext 1 963 0 uut.txrx.encode_1.encoder.en8b10b.encoder.nd1s4 -1055 uext 1 920 0 uut.txrx.encode_1.encoder.en8b10b.encoder.nd1s6 -1056 uext 1 976 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ndos4 -1057 uext 1 900 0 uut.txrx.encode_1.encoder.en8b10b.encoder.ndos6 -1058 uext 1 981 0 uut.txrx.encode_1.encoder.en8b10b.encoder.pd1s4 -1059 uext 1 900 0 uut.txrx.encode_1.encoder.en8b10b.encoder.pd1s6 -1060 uext 1 965 0 uut.txrx.encode_1.encoder.en8b10b.encoder.pdos4 -1061 uext 1 915 0 uut.txrx.encode_1.encoder.en8b10b.encoder.pdos6 -1062 state 1 uut.txrx.encode_1.encoder.lastbit -1063 init 1 1062 9 -1064 const 260 001 -1065 state 260 uut.txrx.encode_1.encoder.max_counter -1066 init 260 1065 1064 -1067 uext 1 1018 0 uut.txrx.encode_1.encoder.next_send_disp -1068 uext 87 1013 0 uut.txrx.encode_1.encoder.send_bits -1069 uext 1 75 0 uut.txrx.encode_1.encoder.send_valid -1070 uext 25 86 0 uut.txrx.encode_1.encoder.send_word -1071 state 1 uut.txrx.encode_1.encoder.stage2_bits -1072 state 1 uut.txrx.encode_1.encoder.stage2_enable -1073 state 1 uut.txrx.encode_1.encoder.stage2_shift -1074 state 260 uut.txrx.hd_recv_wait -1075 state 57 uut.txrx.hd_send_wait -1076 state 1 uut.txrx.hd_switch_to_recv -1077 state 1 uut.txrx.hd_switch_to_send -1078 state 53 uut.txrx.ichecksum -1079 state 25 uut.txrx.in_fifo_buffer[0] -1080 state 25 uut.txrx.in_fifo_buffer[100] -1081 state 25 uut.txrx.in_fifo_buffer[101] -1082 state 25 uut.txrx.in_fifo_buffer[102] -1083 state 25 uut.txrx.in_fifo_buffer[103] -1084 state 25 uut.txrx.in_fifo_buffer[104] -1085 state 25 uut.txrx.in_fifo_buffer[105] -1086 state 25 uut.txrx.in_fifo_buffer[106] -1087 state 25 uut.txrx.in_fifo_buffer[107] -1088 state 25 uut.txrx.in_fifo_buffer[108] -1089 state 25 uut.txrx.in_fifo_buffer[109] -1090 state 25 uut.txrx.in_fifo_buffer[10] -1091 state 25 uut.txrx.in_fifo_buffer[110] -1092 state 25 uut.txrx.in_fifo_buffer[111] -1093 state 25 uut.txrx.in_fifo_buffer[112] -1094 state 25 uut.txrx.in_fifo_buffer[113] -1095 state 25 uut.txrx.in_fifo_buffer[114] -1096 state 25 uut.txrx.in_fifo_buffer[115] -1097 state 25 uut.txrx.in_fifo_buffer[116] -1098 state 25 uut.txrx.in_fifo_buffer[117] -1099 state 25 uut.txrx.in_fifo_buffer[118] -1100 state 25 uut.txrx.in_fifo_buffer[119] -1101 state 25 uut.txrx.in_fifo_buffer[11] -1102 state 25 uut.txrx.in_fifo_buffer[120] -1103 state 25 uut.txrx.in_fifo_buffer[121] -1104 state 25 uut.txrx.in_fifo_buffer[122] -1105 state 25 uut.txrx.in_fifo_buffer[123] -1106 state 25 uut.txrx.in_fifo_buffer[124] -1107 state 25 uut.txrx.in_fifo_buffer[125] -1108 state 25 uut.txrx.in_fifo_buffer[126] -1109 state 25 uut.txrx.in_fifo_buffer[127] -1110 state 25 uut.txrx.in_fifo_buffer[128] -1111 state 25 uut.txrx.in_fifo_buffer[129] -1112 state 25 uut.txrx.in_fifo_buffer[12] -1113 state 25 uut.txrx.in_fifo_buffer[130] -1114 state 25 uut.txrx.in_fifo_buffer[131] -1115 state 25 uut.txrx.in_fifo_buffer[132] -1116 state 25 uut.txrx.in_fifo_buffer[133] -1117 state 25 uut.txrx.in_fifo_buffer[134] -1118 state 25 uut.txrx.in_fifo_buffer[135] -1119 state 25 uut.txrx.in_fifo_buffer[136] -1120 state 25 uut.txrx.in_fifo_buffer[137] -1121 state 25 uut.txrx.in_fifo_buffer[138] -1122 state 25 uut.txrx.in_fifo_buffer[139] -1123 state 25 uut.txrx.in_fifo_buffer[13] -1124 state 25 uut.txrx.in_fifo_buffer[140] -1125 state 25 uut.txrx.in_fifo_buffer[141] -1126 state 25 uut.txrx.in_fifo_buffer[142] -1127 state 25 uut.txrx.in_fifo_buffer[143] -1128 state 25 uut.txrx.in_fifo_buffer[144] -1129 state 25 uut.txrx.in_fifo_buffer[145] -1130 state 25 uut.txrx.in_fifo_buffer[146] -1131 state 25 uut.txrx.in_fifo_buffer[147] -1132 state 25 uut.txrx.in_fifo_buffer[148] -1133 state 25 uut.txrx.in_fifo_buffer[149] -1134 state 25 uut.txrx.in_fifo_buffer[14] -1135 state 25 uut.txrx.in_fifo_buffer[150] -1136 state 25 uut.txrx.in_fifo_buffer[151] -1137 state 25 uut.txrx.in_fifo_buffer[152] -1138 state 25 uut.txrx.in_fifo_buffer[153] -1139 state 25 uut.txrx.in_fifo_buffer[154] -1140 state 25 uut.txrx.in_fifo_buffer[155] -1141 state 25 uut.txrx.in_fifo_buffer[156] -1142 state 25 uut.txrx.in_fifo_buffer[157] -1143 state 25 uut.txrx.in_fifo_buffer[158] -1144 state 25 uut.txrx.in_fifo_buffer[159] -1145 state 25 uut.txrx.in_fifo_buffer[15] -1146 state 25 uut.txrx.in_fifo_buffer[160] -1147 state 25 uut.txrx.in_fifo_buffer[161] -1148 state 25 uut.txrx.in_fifo_buffer[162] -1149 state 25 uut.txrx.in_fifo_buffer[163] -1150 state 25 uut.txrx.in_fifo_buffer[164] -1151 state 25 uut.txrx.in_fifo_buffer[165] -1152 state 25 uut.txrx.in_fifo_buffer[166] -1153 state 25 uut.txrx.in_fifo_buffer[167] -1154 state 25 uut.txrx.in_fifo_buffer[168] -1155 state 25 uut.txrx.in_fifo_buffer[169] -1156 state 25 uut.txrx.in_fifo_buffer[16] -1157 state 25 uut.txrx.in_fifo_buffer[170] -1158 state 25 uut.txrx.in_fifo_buffer[171] -1159 state 25 uut.txrx.in_fifo_buffer[172] -1160 state 25 uut.txrx.in_fifo_buffer[173] -1161 state 25 uut.txrx.in_fifo_buffer[174] -1162 state 25 uut.txrx.in_fifo_buffer[175] -1163 state 25 uut.txrx.in_fifo_buffer[176] -1164 state 25 uut.txrx.in_fifo_buffer[177] -1165 state 25 uut.txrx.in_fifo_buffer[178] -1166 state 25 uut.txrx.in_fifo_buffer[179] -1167 state 25 uut.txrx.in_fifo_buffer[17] -1168 state 25 uut.txrx.in_fifo_buffer[180] -1169 state 25 uut.txrx.in_fifo_buffer[181] -1170 state 25 uut.txrx.in_fifo_buffer[182] -1171 state 25 uut.txrx.in_fifo_buffer[183] -1172 state 25 uut.txrx.in_fifo_buffer[184] -1173 state 25 uut.txrx.in_fifo_buffer[185] -1174 state 25 uut.txrx.in_fifo_buffer[186] -1175 state 25 uut.txrx.in_fifo_buffer[187] -1176 state 25 uut.txrx.in_fifo_buffer[188] -1177 state 25 uut.txrx.in_fifo_buffer[189] -1178 state 25 uut.txrx.in_fifo_buffer[18] -1179 state 25 uut.txrx.in_fifo_buffer[190] -1180 state 25 uut.txrx.in_fifo_buffer[191] -1181 state 25 uut.txrx.in_fifo_buffer[192] -1182 state 25 uut.txrx.in_fifo_buffer[193] -1183 state 25 uut.txrx.in_fifo_buffer[194] -1184 state 25 uut.txrx.in_fifo_buffer[195] -1185 state 25 uut.txrx.in_fifo_buffer[196] -1186 state 25 uut.txrx.in_fifo_buffer[197] -1187 state 25 uut.txrx.in_fifo_buffer[198] -1188 state 25 uut.txrx.in_fifo_buffer[199] -1189 state 25 uut.txrx.in_fifo_buffer[19] -1190 state 25 uut.txrx.in_fifo_buffer[1] -1191 state 25 uut.txrx.in_fifo_buffer[200] -1192 state 25 uut.txrx.in_fifo_buffer[201] -1193 state 25 uut.txrx.in_fifo_buffer[202] -1194 state 25 uut.txrx.in_fifo_buffer[203] -1195 state 25 uut.txrx.in_fifo_buffer[204] -1196 state 25 uut.txrx.in_fifo_buffer[205] -1197 state 25 uut.txrx.in_fifo_buffer[206] -1198 state 25 uut.txrx.in_fifo_buffer[207] -1199 state 25 uut.txrx.in_fifo_buffer[208] -1200 state 25 uut.txrx.in_fifo_buffer[209] -1201 state 25 uut.txrx.in_fifo_buffer[20] -1202 state 25 uut.txrx.in_fifo_buffer[210] -1203 state 25 uut.txrx.in_fifo_buffer[211] -1204 state 25 uut.txrx.in_fifo_buffer[212] -1205 state 25 uut.txrx.in_fifo_buffer[213] -1206 state 25 uut.txrx.in_fifo_buffer[214] -1207 state 25 uut.txrx.in_fifo_buffer[215] -1208 state 25 uut.txrx.in_fifo_buffer[216] -1209 state 25 uut.txrx.in_fifo_buffer[217] -1210 state 25 uut.txrx.in_fifo_buffer[218] -1211 state 25 uut.txrx.in_fifo_buffer[219] -1212 state 25 uut.txrx.in_fifo_buffer[21] -1213 state 25 uut.txrx.in_fifo_buffer[220] -1214 state 25 uut.txrx.in_fifo_buffer[221] -1215 state 25 uut.txrx.in_fifo_buffer[222] -1216 state 25 uut.txrx.in_fifo_buffer[223] -1217 state 25 uut.txrx.in_fifo_buffer[224] -1218 state 25 uut.txrx.in_fifo_buffer[225] -1219 state 25 uut.txrx.in_fifo_buffer[226] -1220 state 25 uut.txrx.in_fifo_buffer[227] -1221 state 25 uut.txrx.in_fifo_buffer[228] -1222 state 25 uut.txrx.in_fifo_buffer[229] -1223 state 25 uut.txrx.in_fifo_buffer[22] -1224 state 25 uut.txrx.in_fifo_buffer[230] -1225 state 25 uut.txrx.in_fifo_buffer[231] -1226 state 25 uut.txrx.in_fifo_buffer[232] -1227 state 25 uut.txrx.in_fifo_buffer[233] -1228 state 25 uut.txrx.in_fifo_buffer[234] -1229 state 25 uut.txrx.in_fifo_buffer[235] -1230 state 25 uut.txrx.in_fifo_buffer[236] -1231 state 25 uut.txrx.in_fifo_buffer[237] -1232 state 25 uut.txrx.in_fifo_buffer[238] -1233 state 25 uut.txrx.in_fifo_buffer[239] -1234 state 25 uut.txrx.in_fifo_buffer[23] -1235 state 25 uut.txrx.in_fifo_buffer[240] -1236 state 25 uut.txrx.in_fifo_buffer[241] -1237 state 25 uut.txrx.in_fifo_buffer[242] -1238 state 25 uut.txrx.in_fifo_buffer[243] -1239 state 25 uut.txrx.in_fifo_buffer[244] -1240 state 25 uut.txrx.in_fifo_buffer[245] -1241 state 25 uut.txrx.in_fifo_buffer[246] -1242 state 25 uut.txrx.in_fifo_buffer[247] -1243 state 25 uut.txrx.in_fifo_buffer[248] -1244 state 25 uut.txrx.in_fifo_buffer[249] -1245 state 25 uut.txrx.in_fifo_buffer[24] -1246 state 25 uut.txrx.in_fifo_buffer[250] -1247 state 25 uut.txrx.in_fifo_buffer[251] -1248 state 25 uut.txrx.in_fifo_buffer[252] -1249 state 25 uut.txrx.in_fifo_buffer[253] -1250 state 25 uut.txrx.in_fifo_buffer[254] -1251 state 25 uut.txrx.in_fifo_buffer[255] -1252 state 25 uut.txrx.in_fifo_buffer[25] -1253 state 25 uut.txrx.in_fifo_buffer[26] -1254 state 25 uut.txrx.in_fifo_buffer[27] -1255 state 25 uut.txrx.in_fifo_buffer[28] -1256 state 25 uut.txrx.in_fifo_buffer[29] -1257 state 25 uut.txrx.in_fifo_buffer[2] -1258 state 25 uut.txrx.in_fifo_buffer[30] -1259 state 25 uut.txrx.in_fifo_buffer[31] -1260 state 25 uut.txrx.in_fifo_buffer[32] -1261 state 25 uut.txrx.in_fifo_buffer[33] -1262 state 25 uut.txrx.in_fifo_buffer[34] -1263 state 25 uut.txrx.in_fifo_buffer[35] -1264 state 25 uut.txrx.in_fifo_buffer[36] -1265 state 25 uut.txrx.in_fifo_buffer[37] -1266 state 25 uut.txrx.in_fifo_buffer[38] -1267 state 25 uut.txrx.in_fifo_buffer[39] -1268 state 25 uut.txrx.in_fifo_buffer[3] -1269 state 25 uut.txrx.in_fifo_buffer[40] -1270 state 25 uut.txrx.in_fifo_buffer[41] -1271 state 25 uut.txrx.in_fifo_buffer[42] -1272 state 25 uut.txrx.in_fifo_buffer[43] -1273 state 25 uut.txrx.in_fifo_buffer[44] -1274 state 25 uut.txrx.in_fifo_buffer[45] -1275 state 25 uut.txrx.in_fifo_buffer[46] -1276 state 25 uut.txrx.in_fifo_buffer[47] -1277 state 25 uut.txrx.in_fifo_buffer[48] -1278 state 25 uut.txrx.in_fifo_buffer[49] -1279 state 25 uut.txrx.in_fifo_buffer[4] -1280 state 25 uut.txrx.in_fifo_buffer[50] -1281 state 25 uut.txrx.in_fifo_buffer[51] -1282 state 25 uut.txrx.in_fifo_buffer[52] -1283 state 25 uut.txrx.in_fifo_buffer[53] -1284 state 25 uut.txrx.in_fifo_buffer[54] -1285 state 25 uut.txrx.in_fifo_buffer[55] -1286 state 25 uut.txrx.in_fifo_buffer[56] -1287 state 25 uut.txrx.in_fifo_buffer[57] -1288 state 25 uut.txrx.in_fifo_buffer[58] -1289 state 25 uut.txrx.in_fifo_buffer[59] -1290 state 25 uut.txrx.in_fifo_buffer[5] -1291 state 25 uut.txrx.in_fifo_buffer[60] -1292 state 25 uut.txrx.in_fifo_buffer[61] -1293 state 25 uut.txrx.in_fifo_buffer[62] -1294 state 25 uut.txrx.in_fifo_buffer[63] -1295 state 25 uut.txrx.in_fifo_buffer[64] -1296 state 25 uut.txrx.in_fifo_buffer[65] -1297 state 25 uut.txrx.in_fifo_buffer[66] -1298 state 25 uut.txrx.in_fifo_buffer[67] -1299 state 25 uut.txrx.in_fifo_buffer[68] -1300 state 25 uut.txrx.in_fifo_buffer[69] -1301 state 25 uut.txrx.in_fifo_buffer[6] -1302 state 25 uut.txrx.in_fifo_buffer[70] -1303 state 25 uut.txrx.in_fifo_buffer[71] -1304 state 25 uut.txrx.in_fifo_buffer[72] -1305 state 25 uut.txrx.in_fifo_buffer[73] -1306 state 25 uut.txrx.in_fifo_buffer[74] -1307 state 25 uut.txrx.in_fifo_buffer[75] -1308 state 25 uut.txrx.in_fifo_buffer[76] -1309 state 25 uut.txrx.in_fifo_buffer[77] -1310 state 25 uut.txrx.in_fifo_buffer[78] -1311 state 25 uut.txrx.in_fifo_buffer[79] -1312 state 25 uut.txrx.in_fifo_buffer[7] -1313 state 25 uut.txrx.in_fifo_buffer[80] -1314 state 25 uut.txrx.in_fifo_buffer[81] -1315 state 25 uut.txrx.in_fifo_buffer[82] -1316 state 25 uut.txrx.in_fifo_buffer[83] -1317 state 25 uut.txrx.in_fifo_buffer[84] -1318 state 25 uut.txrx.in_fifo_buffer[85] -1319 state 25 uut.txrx.in_fifo_buffer[86] -1320 state 25 uut.txrx.in_fifo_buffer[87] -1321 state 25 uut.txrx.in_fifo_buffer[88] -1322 state 25 uut.txrx.in_fifo_buffer[89] -1323 state 25 uut.txrx.in_fifo_buffer[8] -1324 state 25 uut.txrx.in_fifo_buffer[90] -1325 state 25 uut.txrx.in_fifo_buffer[91] -1326 state 25 uut.txrx.in_fifo_buffer[92] -1327 state 25 uut.txrx.in_fifo_buffer[93] -1328 state 25 uut.txrx.in_fifo_buffer[94] -1329 state 25 uut.txrx.in_fifo_buffer[95] -1330 state 25 uut.txrx.in_fifo_buffer[96] -1331 state 25 uut.txrx.in_fifo_buffer[97] -1332 state 25 uut.txrx.in_fifo_buffer[98] -1333 state 25 uut.txrx.in_fifo_buffer[99] -1334 state 25 uut.txrx.in_fifo_buffer[9] -1335 uext 28 32 0 uut.txrx.in_fifo_iptr_nxt -1336 uext 28 33 0 uut.txrx.in_fifo_oblock -1337 state 28 uut.txrx.in_fifo_optr -1338 uext 28 30 7 -1339 add 28 1337 1338 -1340 uext 28 1339 0 uut.txrx.in_fifo_optr_nxt -1341 uext 25 26 0 uut.txrx.in_ser_tdata -1342 uext 1 35 0 uut.txrx.in_ser_tready -1343 uext 1 37 0 uut.txrx.in_ser_tvalid -1344 state 17 uut.txrx.istate -1345 state 28 uut.txrx.next_sent_gpio -1346 state 28 uut.txrx.next_sent_gpio_at -1347 state 17 uut.txrx.ostate -1348 state 266 uut.txrx.ostate_counter -1349 state 1 uut.txrx.ostate_reset -1350 uext 28 30 7 -1351 add 28 43 1350 -1352 uext 28 1351 0 uut.txrx.out_fifo_optr_nxt -1353 uext 1 40 0 uut.txrx.out_ser_tready -1354 uext 1 45 0 uut.txrx.out_ser_tvalid -1355 state 28 uut.txrx.peer_out_fifo_iptr_next -1356 uext 1 842 0 uut.txrx.recv_error -1357 uext 25 269 0 uut.txrx.recv_word -1358 uext 1 82 0 uut.txrx.recv_word_en -1359 uext 1 20 0 uut.txrx.resetn_out -1360 uext 1 846 0 uut.txrx.rstdetect -1361 uext 1 77 0 uut.txrx.send_ready -1362 state 25 uut.txrx.sent_gpio -1363 uext 1 63 0 uut.txrx.serdes_en -1364 uext 1 66 0 uut.txrx.serdes_in -1365 uext 1 69 0 uut.txrx.serdes_out -1366 state 28 uut.txrx.work_out_fifo_iptr -1367 state 1 uut.txrx.work_out_fifo_iptr_apply -1368 uext 28 30 7 -1369 add 28 1366 1368 -1370 uext 28 1369 0 uut.txrx.work_out_fifo_iptr_nxt -1371 uext 1 2 0 uut.unpack_8bits.unpacker.clk -1372 uext 1 20 0 uut.unpack_8bits.unpacker.resetn -1373 uext 1 45 0 uut.unpack_8bits.unpacker.ser_tvalid -1374 sort bitvec 228 -1375 const 1374 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1376 state 1374 xfer_shreg -1377 init 1374 1376 1375 -1378 next 1 4 63 -1379 next 1 6 69 -1380 slice 1 1376 227 227 -1381 slice 1 1376 226 226 -1382 concat 258 1381 1380 -1383 slice 1 1376 225 225 -1384 concat 260 1383 1382 -1385 slice 1 1376 224 224 -1386 concat 17 1385 1384 -1387 slice 1 1376 223 223 -1388 concat 57 1387 1386 -1389 slice 1 1376 222 222 -1390 concat 264 1389 1388 -1391 slice 1 1376 221 221 -1392 concat 266 1391 1390 -1393 slice 1 1376 220 220 -1394 concat 28 1393 1392 -1395 slice 1 1376 219 219 -1396 concat 25 1395 1394 -1397 slice 1 1376 218 218 -1398 concat 87 1397 1396 -1399 slice 1 1376 217 217 -1400 concat 545 1399 1398 -1401 slice 1 1376 216 216 -1402 concat 55 1401 1400 -1403 slice 1 1376 215 215 -1404 concat 548 1403 1402 -1405 slice 1 1376 214 214 -1406 concat 550 1405 1404 -1407 slice 1 1376 213 213 -1408 concat 552 1407 1406 -1409 slice 1 1376 212 212 -1410 concat 554 1409 1408 -1411 slice 1 1376 211 211 -1412 concat 556 1411 1410 -1413 slice 1 1376 210 210 -1414 concat 558 1413 1412 -1415 slice 1 1376 209 209 -1416 concat 560 1415 1414 -1417 slice 1 1376 208 208 -1418 concat 562 1417 1416 -1419 slice 1 1376 207 207 -1420 concat 564 1419 1418 -1421 slice 1 1376 206 206 -1422 concat 566 1421 1420 -1423 slice 1 1376 205 205 -1424 concat 568 1423 1422 -1425 slice 1 1376 204 204 -1426 concat 570 1425 1424 -1427 slice 1 1376 203 203 -1428 concat 572 1427 1426 -1429 slice 1 1376 202 202 -1430 concat 574 1429 1428 -1431 slice 1 1376 201 201 -1432 concat 576 1431 1430 -1433 slice 1 1376 200 200 -1434 concat 578 1433 1432 -1435 slice 1 1376 199 199 -1436 concat 580 1435 1434 -1437 slice 1 1376 198 198 -1438 concat 582 1437 1436 -1439 slice 1 1376 197 197 -1440 concat 584 1439 1438 -1441 slice 1 1376 196 196 -1442 concat 53 1441 1440 -1443 slice 1 1376 195 195 -1444 sort bitvec 33 -1445 concat 1444 1443 1442 -1446 slice 1 1376 194 194 -1447 sort bitvec 34 -1448 concat 1447 1446 1445 -1449 slice 1 1376 193 193 -1450 sort bitvec 35 -1451 concat 1450 1449 1448 -1452 slice 1 1376 192 192 -1453 sort bitvec 36 -1454 concat 1453 1452 1451 -1455 slice 1 1376 191 191 -1456 sort bitvec 37 -1457 concat 1456 1455 1454 -1458 slice 1 1376 190 190 -1459 sort bitvec 38 -1460 concat 1459 1458 1457 -1461 slice 1 1376 189 189 -1462 sort bitvec 39 -1463 concat 1462 1461 1460 -1464 slice 1 1376 188 188 -1465 sort bitvec 40 -1466 concat 1465 1464 1463 -1467 slice 1 1376 187 187 -1468 sort bitvec 41 -1469 concat 1468 1467 1466 -1470 slice 1 1376 186 186 -1471 sort bitvec 42 -1472 concat 1471 1470 1469 -1473 slice 1 1376 185 185 -1474 sort bitvec 43 -1475 concat 1474 1473 1472 -1476 slice 1 1376 184 184 -1477 sort bitvec 44 -1478 concat 1477 1476 1475 -1479 slice 1 1376 183 183 -1480 sort bitvec 45 -1481 concat 1480 1479 1478 -1482 slice 1 1376 182 182 -1483 sort bitvec 46 -1484 concat 1483 1482 1481 -1485 slice 1 1376 181 181 -1486 sort bitvec 47 -1487 concat 1486 1485 1484 -1488 slice 1 1376 180 180 -1489 sort bitvec 48 -1490 concat 1489 1488 1487 -1491 slice 1 1376 179 179 -1492 sort bitvec 49 -1493 concat 1492 1491 1490 -1494 slice 1 1376 178 178 -1495 sort bitvec 50 -1496 concat 1495 1494 1493 -1497 slice 1 1376 177 177 -1498 sort bitvec 51 -1499 concat 1498 1497 1496 -1500 slice 1 1376 176 176 -1501 sort bitvec 52 -1502 concat 1501 1500 1499 -1503 slice 1 1376 175 175 -1504 sort bitvec 53 -1505 concat 1504 1503 1502 -1506 slice 1 1376 174 174 -1507 sort bitvec 54 -1508 concat 1507 1506 1505 -1509 slice 1 1376 173 173 -1510 sort bitvec 55 -1511 concat 1510 1509 1508 -1512 slice 1 1376 172 172 -1513 sort bitvec 56 -1514 concat 1513 1512 1511 -1515 slice 1 1376 171 171 -1516 sort bitvec 57 -1517 concat 1516 1515 1514 -1518 slice 1 1376 170 170 -1519 sort bitvec 58 -1520 concat 1519 1518 1517 -1521 slice 1 1376 169 169 -1522 sort bitvec 59 -1523 concat 1522 1521 1520 -1524 slice 1 1376 168 168 -1525 sort bitvec 60 -1526 concat 1525 1524 1523 -1527 slice 1 1376 167 167 -1528 sort bitvec 61 -1529 concat 1528 1527 1526 -1530 slice 1 1376 166 166 -1531 sort bitvec 62 -1532 concat 1531 1530 1529 -1533 slice 1 1376 165 165 -1534 sort bitvec 63 -1535 concat 1534 1533 1532 -1536 slice 1 1376 164 164 -1537 sort bitvec 64 -1538 concat 1537 1536 1535 -1539 slice 1 1376 163 163 -1540 sort bitvec 65 -1541 concat 1540 1539 1538 -1542 slice 1 1376 162 162 -1543 sort bitvec 66 -1544 concat 1543 1542 1541 -1545 slice 1 1376 161 161 -1546 sort bitvec 67 -1547 concat 1546 1545 1544 -1548 slice 1 1376 160 160 -1549 sort bitvec 68 -1550 concat 1549 1548 1547 -1551 slice 1 1376 159 159 -1552 sort bitvec 69 -1553 concat 1552 1551 1550 -1554 slice 1 1376 158 158 -1555 sort bitvec 70 -1556 concat 1555 1554 1553 -1557 slice 1 1376 157 157 -1558 sort bitvec 71 -1559 concat 1558 1557 1556 -1560 slice 1 1376 156 156 -1561 sort bitvec 72 -1562 concat 1561 1560 1559 -1563 slice 1 1376 155 155 -1564 sort bitvec 73 -1565 concat 1564 1563 1562 -1566 slice 1 1376 154 154 -1567 sort bitvec 74 -1568 concat 1567 1566 1565 -1569 slice 1 1376 153 153 -1570 sort bitvec 75 -1571 concat 1570 1569 1568 -1572 slice 1 1376 152 152 -1573 sort bitvec 76 -1574 concat 1573 1572 1571 -1575 slice 1 1376 151 151 -1576 sort bitvec 77 -1577 concat 1576 1575 1574 -1578 slice 1 1376 150 150 -1579 sort bitvec 78 -1580 concat 1579 1578 1577 -1581 slice 1 1376 149 149 -1582 sort bitvec 79 -1583 concat 1582 1581 1580 -1584 slice 1 1376 148 148 -1585 sort bitvec 80 -1586 concat 1585 1584 1583 -1587 slice 1 1376 147 147 -1588 sort bitvec 81 -1589 concat 1588 1587 1586 -1590 slice 1 1376 146 146 -1591 sort bitvec 82 -1592 concat 1591 1590 1589 -1593 slice 1 1376 145 145 -1594 sort bitvec 83 -1595 concat 1594 1593 1592 -1596 slice 1 1376 144 144 -1597 sort bitvec 84 -1598 concat 1597 1596 1595 -1599 slice 1 1376 143 143 -1600 sort bitvec 85 -1601 concat 1600 1599 1598 -1602 slice 1 1376 142 142 -1603 sort bitvec 86 -1604 concat 1603 1602 1601 -1605 slice 1 1376 141 141 -1606 sort bitvec 87 -1607 concat 1606 1605 1604 -1608 slice 1 1376 140 140 -1609 sort bitvec 88 -1610 concat 1609 1608 1607 -1611 slice 1 1376 139 139 -1612 sort bitvec 89 -1613 concat 1612 1611 1610 -1614 slice 1 1376 138 138 -1615 sort bitvec 90 -1616 concat 1615 1614 1613 -1617 slice 1 1376 137 137 -1618 sort bitvec 91 -1619 concat 1618 1617 1616 -1620 slice 1 1376 136 136 -1621 sort bitvec 92 -1622 concat 1621 1620 1619 -1623 slice 1 1376 135 135 -1624 sort bitvec 93 -1625 concat 1624 1623 1622 -1626 slice 1 1376 134 134 -1627 sort bitvec 94 -1628 concat 1627 1626 1625 -1629 slice 1 1376 133 133 -1630 sort bitvec 95 -1631 concat 1630 1629 1628 -1632 slice 1 1376 132 132 -1633 sort bitvec 96 -1634 concat 1633 1632 1631 -1635 slice 1 1376 131 131 -1636 sort bitvec 97 -1637 concat 1636 1635 1634 -1638 slice 1 1376 130 130 -1639 sort bitvec 98 -1640 concat 1639 1638 1637 -1641 slice 1 1376 129 129 -1642 sort bitvec 99 -1643 concat 1642 1641 1640 -1644 slice 1 1376 128 128 -1645 sort bitvec 100 -1646 concat 1645 1644 1643 -1647 slice 1 1376 127 127 -1648 sort bitvec 101 -1649 concat 1648 1647 1646 -1650 slice 1 1376 126 126 -1651 sort bitvec 102 -1652 concat 1651 1650 1649 -1653 slice 1 1376 125 125 -1654 sort bitvec 103 -1655 concat 1654 1653 1652 -1656 slice 1 1376 124 124 -1657 sort bitvec 104 -1658 concat 1657 1656 1655 -1659 slice 1 1376 123 123 -1660 sort bitvec 105 -1661 concat 1660 1659 1658 -1662 slice 1 1376 122 122 -1663 sort bitvec 106 -1664 concat 1663 1662 1661 -1665 slice 1 1376 121 121 -1666 sort bitvec 107 -1667 concat 1666 1665 1664 -1668 slice 1 1376 120 120 -1669 sort bitvec 108 -1670 concat 1669 1668 1667 -1671 slice 1 1376 119 119 -1672 sort bitvec 109 -1673 concat 1672 1671 1670 -1674 slice 1 1376 118 118 -1675 sort bitvec 110 -1676 concat 1675 1674 1673 -1677 slice 1 1376 117 117 -1678 sort bitvec 111 -1679 concat 1678 1677 1676 -1680 slice 1 1376 116 116 -1681 sort bitvec 112 -1682 concat 1681 1680 1679 -1683 slice 1 1376 115 115 -1684 sort bitvec 113 -1685 concat 1684 1683 1682 -1686 slice 1 1376 114 114 -1687 sort bitvec 114 -1688 concat 1687 1686 1685 -1689 slice 1 1376 113 113 -1690 sort bitvec 115 -1691 concat 1690 1689 1688 -1692 slice 1 1376 112 112 -1693 sort bitvec 116 -1694 concat 1693 1692 1691 -1695 slice 1 1376 111 111 -1696 sort bitvec 117 -1697 concat 1696 1695 1694 -1698 slice 1 1376 110 110 -1699 sort bitvec 118 -1700 concat 1699 1698 1697 -1701 slice 1 1376 109 109 -1702 sort bitvec 119 -1703 concat 1702 1701 1700 -1704 slice 1 1376 108 108 -1705 sort bitvec 120 -1706 concat 1705 1704 1703 -1707 slice 1 1376 107 107 -1708 sort bitvec 121 -1709 concat 1708 1707 1706 -1710 slice 1 1376 106 106 -1711 sort bitvec 122 -1712 concat 1711 1710 1709 -1713 slice 1 1376 105 105 -1714 sort bitvec 123 -1715 concat 1714 1713 1712 -1716 slice 1 1376 104 104 -1717 sort bitvec 124 -1718 concat 1717 1716 1715 -1719 slice 1 1376 103 103 -1720 sort bitvec 125 -1721 concat 1720 1719 1718 -1722 slice 1 1376 102 102 -1723 sort bitvec 126 -1724 concat 1723 1722 1721 -1725 slice 1 1376 101 101 -1726 sort bitvec 127 -1727 concat 1726 1725 1724 -1728 slice 1 1376 100 100 -1729 sort bitvec 128 -1730 concat 1729 1728 1727 -1731 slice 1 1376 99 99 -1732 sort bitvec 129 -1733 concat 1732 1731 1730 -1734 slice 1 1376 98 98 -1735 sort bitvec 130 -1736 concat 1735 1734 1733 -1737 slice 1 1376 97 97 -1738 sort bitvec 131 -1739 concat 1738 1737 1736 -1740 slice 1 1376 96 96 -1741 sort bitvec 132 -1742 concat 1741 1740 1739 -1743 slice 1 1376 95 95 -1744 sort bitvec 133 -1745 concat 1744 1743 1742 -1746 slice 1 1376 94 94 -1747 sort bitvec 134 -1748 concat 1747 1746 1745 -1749 slice 1 1376 93 93 -1750 sort bitvec 135 -1751 concat 1750 1749 1748 -1752 slice 1 1376 92 92 -1753 sort bitvec 136 -1754 concat 1753 1752 1751 -1755 slice 1 1376 91 91 -1756 sort bitvec 137 -1757 concat 1756 1755 1754 -1758 slice 1 1376 90 90 -1759 sort bitvec 138 -1760 concat 1759 1758 1757 -1761 slice 1 1376 89 89 -1762 sort bitvec 139 -1763 concat 1762 1761 1760 -1764 slice 1 1376 88 88 -1765 sort bitvec 140 -1766 concat 1765 1764 1763 -1767 slice 1 1376 87 87 -1768 sort bitvec 141 -1769 concat 1768 1767 1766 -1770 slice 1 1376 86 86 -1771 sort bitvec 142 -1772 concat 1771 1770 1769 -1773 slice 1 1376 85 85 -1774 sort bitvec 143 -1775 concat 1774 1773 1772 -1776 slice 1 1376 84 84 -1777 sort bitvec 144 -1778 concat 1777 1776 1775 -1779 slice 1 1376 83 83 -1780 sort bitvec 145 -1781 concat 1780 1779 1778 -1782 slice 1 1376 82 82 -1783 sort bitvec 146 -1784 concat 1783 1782 1781 -1785 slice 1 1376 81 81 -1786 sort bitvec 147 -1787 concat 1786 1785 1784 -1788 slice 1 1376 80 80 -1789 sort bitvec 148 -1790 concat 1789 1788 1787 -1791 slice 1 1376 79 79 -1792 sort bitvec 149 -1793 concat 1792 1791 1790 -1794 slice 1 1376 78 78 -1795 sort bitvec 150 -1796 concat 1795 1794 1793 -1797 slice 1 1376 77 77 -1798 sort bitvec 151 -1799 concat 1798 1797 1796 -1800 slice 1 1376 76 76 -1801 sort bitvec 152 -1802 concat 1801 1800 1799 -1803 slice 1 1376 75 75 -1804 sort bitvec 153 -1805 concat 1804 1803 1802 -1806 slice 1 1376 74 74 -1807 sort bitvec 154 -1808 concat 1807 1806 1805 -1809 slice 1 1376 73 73 -1810 sort bitvec 155 -1811 concat 1810 1809 1808 -1812 slice 1 1376 72 72 -1813 sort bitvec 156 -1814 concat 1813 1812 1811 -1815 slice 1 1376 71 71 -1816 sort bitvec 157 -1817 concat 1816 1815 1814 -1818 slice 1 1376 70 70 -1819 sort bitvec 158 -1820 concat 1819 1818 1817 -1821 slice 1 1376 69 69 -1822 sort bitvec 159 -1823 concat 1822 1821 1820 -1824 slice 1 1376 68 68 -1825 sort bitvec 160 -1826 concat 1825 1824 1823 -1827 slice 1 1376 67 67 -1828 sort bitvec 161 -1829 concat 1828 1827 1826 -1830 slice 1 1376 66 66 -1831 sort bitvec 162 -1832 concat 1831 1830 1829 -1833 slice 1 1376 65 65 -1834 sort bitvec 163 -1835 concat 1834 1833 1832 -1836 slice 1 1376 64 64 -1837 sort bitvec 164 -1838 concat 1837 1836 1835 -1839 slice 1 1376 63 63 -1840 sort bitvec 165 -1841 concat 1840 1839 1838 -1842 slice 1 1376 62 62 -1843 sort bitvec 166 -1844 concat 1843 1842 1841 -1845 slice 1 1376 61 61 -1846 sort bitvec 167 -1847 concat 1846 1845 1844 -1848 slice 1 1376 60 60 -1849 sort bitvec 168 -1850 concat 1849 1848 1847 -1851 slice 1 1376 59 59 -1852 sort bitvec 169 -1853 concat 1852 1851 1850 -1854 slice 1 1376 58 58 -1855 sort bitvec 170 -1856 concat 1855 1854 1853 -1857 slice 1 1376 57 57 -1858 sort bitvec 171 -1859 concat 1858 1857 1856 -1860 slice 1 1376 56 56 -1861 sort bitvec 172 -1862 concat 1861 1860 1859 -1863 slice 1 1376 55 55 -1864 sort bitvec 173 -1865 concat 1864 1863 1862 -1866 slice 1 1376 54 54 -1867 sort bitvec 174 -1868 concat 1867 1866 1865 -1869 slice 1 1376 53 53 -1870 sort bitvec 175 -1871 concat 1870 1869 1868 -1872 slice 1 1376 52 52 -1873 sort bitvec 176 -1874 concat 1873 1872 1871 -1875 slice 1 1376 51 51 -1876 sort bitvec 177 -1877 concat 1876 1875 1874 -1878 slice 1 1376 50 50 -1879 sort bitvec 178 -1880 concat 1879 1878 1877 -1881 slice 1 1376 49 49 -1882 sort bitvec 179 -1883 concat 1882 1881 1880 -1884 slice 1 1376 48 48 -1885 sort bitvec 180 -1886 concat 1885 1884 1883 -1887 slice 1 1376 47 47 -1888 sort bitvec 181 -1889 concat 1888 1887 1886 -1890 slice 1 1376 46 46 -1891 sort bitvec 182 -1892 concat 1891 1890 1889 -1893 slice 1 1376 45 45 -1894 sort bitvec 183 -1895 concat 1894 1893 1892 -1896 slice 1 1376 44 44 -1897 sort bitvec 184 -1898 concat 1897 1896 1895 -1899 slice 1 1376 43 43 -1900 sort bitvec 185 -1901 concat 1900 1899 1898 -1902 slice 1 1376 42 42 -1903 sort bitvec 186 -1904 concat 1903 1902 1901 -1905 slice 1 1376 41 41 -1906 sort bitvec 187 -1907 concat 1906 1905 1904 -1908 slice 1 1376 40 40 -1909 sort bitvec 188 -1910 concat 1909 1908 1907 -1911 slice 1 1376 39 39 -1912 sort bitvec 189 -1913 concat 1912 1911 1910 -1914 slice 1 1376 38 38 -1915 sort bitvec 190 -1916 concat 1915 1914 1913 -1917 slice 1 1376 37 37 -1918 sort bitvec 191 -1919 concat 1918 1917 1916 -1920 slice 1 1376 36 36 -1921 sort bitvec 192 -1922 concat 1921 1920 1919 -1923 slice 1 1376 35 35 -1924 sort bitvec 193 -1925 concat 1924 1923 1922 -1926 slice 1 1376 34 34 -1927 sort bitvec 194 -1928 concat 1927 1926 1925 -1929 slice 1 1376 33 33 -1930 sort bitvec 195 -1931 concat 1930 1929 1928 -1932 slice 1 1376 32 32 -1933 sort bitvec 196 -1934 concat 1933 1932 1931 -1935 slice 1 1376 31 31 -1936 sort bitvec 197 -1937 concat 1936 1935 1934 -1938 slice 1 1376 30 30 -1939 sort bitvec 198 -1940 concat 1939 1938 1937 -1941 slice 1 1376 29 29 -1942 sort bitvec 199 -1943 concat 1942 1941 1940 -1944 slice 1 1376 28 28 -1945 sort bitvec 200 -1946 concat 1945 1944 1943 -1947 slice 1 1376 27 27 -1948 sort bitvec 201 -1949 concat 1948 1947 1946 -1950 slice 1 1376 26 26 -1951 sort bitvec 202 -1952 concat 1951 1950 1949 -1953 slice 1 1376 25 25 -1954 sort bitvec 203 -1955 concat 1954 1953 1952 -1956 slice 1 1376 24 24 -1957 sort bitvec 204 -1958 concat 1957 1956 1955 -1959 slice 1 1376 23 23 -1960 sort bitvec 205 -1961 concat 1960 1959 1958 -1962 slice 1 1376 22 22 -1963 sort bitvec 206 -1964 concat 1963 1962 1961 -1965 slice 1 1376 21 21 -1966 sort bitvec 207 -1967 concat 1966 1965 1964 -1968 slice 1 1376 20 20 -1969 sort bitvec 208 -1970 concat 1969 1968 1967 -1971 slice 1 1376 19 19 -1972 sort bitvec 209 -1973 concat 1972 1971 1970 -1974 slice 1 1376 18 18 -1975 sort bitvec 210 -1976 concat 1975 1974 1973 -1977 slice 1 1376 17 17 -1978 sort bitvec 211 -1979 concat 1978 1977 1976 -1980 slice 1 1376 16 16 -1981 sort bitvec 212 -1982 concat 1981 1980 1979 -1983 slice 1 1376 15 15 -1984 sort bitvec 213 -1985 concat 1984 1983 1982 -1986 slice 1 1376 14 14 -1987 sort bitvec 214 -1988 concat 1987 1986 1985 -1989 slice 1 1376 13 13 -1990 sort bitvec 215 -1991 concat 1990 1989 1988 -1992 slice 1 1376 12 12 -1993 sort bitvec 216 -1994 concat 1993 1992 1991 -1995 slice 1 1376 11 11 -1996 sort bitvec 217 -1997 concat 1996 1995 1994 -1998 slice 1 1376 10 10 -1999 sort bitvec 218 -2000 concat 1999 1998 1997 -2001 slice 1 1376 9 9 -2002 sort bitvec 219 -2003 concat 2002 2001 2000 -2004 slice 1 1376 8 8 -2005 sort bitvec 220 -2006 concat 2005 2004 2003 -2007 slice 1 1376 7 7 -2008 sort bitvec 221 -2009 concat 2008 2007 2006 -2010 slice 1 1376 6 6 -2011 sort bitvec 222 -2012 concat 2011 2010 2009 -2013 slice 1 1376 5 5 -2014 sort bitvec 223 -2015 concat 2014 2013 2012 -2016 slice 1 1376 4 4 -2017 sort bitvec 224 -2018 concat 2017 2016 2015 -2019 slice 1 1376 3 3 -2020 sort bitvec 225 -2021 concat 2020 2019 2018 -2022 slice 1 1376 2 2 -2023 sort bitvec 226 -2024 concat 2023 2022 2021 -2025 slice 1 1376 1 1 -2026 sort bitvec 227 -2027 concat 2026 2025 2024 -2028 slice 1 1376 0 0 -2029 concat 1374 2028 2027 -2030 redand 1 2029 -2031 not 1 2030 -2032 next 1 8 2031 -2033 next 1 10 30 -2034 ite 1 21 30 15 -2035 ite 1 15 9 2034 -2036 ite 1 49 2034 2035 -2037 or 1 49 15 -2038 ite 1 2037 2036 2034 -2039 ite 1 48 2034 2038 -2040 ite 1 50 2034 2039 -2041 redor 1 58 -2042 ite 1 2041 2034 2040 -2043 not 1 37 -2044 or 1 2043 35 -2045 ite 1 2044 2042 2034 -2046 ite 1 20 2045 9 -2047 next 1 15 2046 -2048 uext 17 30 3 -2049 sub 17 18 2048 -2050 redor 1 18 -2051 ite 17 2050 2049 18 -2052 const 17 1111 -2053 const 53 00000000000000000000000000000001 -2054 redor 1 2053 -2055 and 1 2054 846 -2056 ite 17 2055 2052 2051 -2057 next 17 18 2056 -2058 slice 28 54 7 0 -2059 concat 25 9 2058 -2060 ite 25 15 2059 26 -2061 slice 28 54 7 0 -2062 xor 28 51 2061 -2063 concat 25 9 2062 -2064 ite 25 49 2063 2060 -2065 ite 25 2037 2064 26 -2066 const 25 101011100 -2067 ite 25 48 2066 2065 -2068 const 25 101111100 -2069 ite 25 50 2068 2067 -2070 slice 28 54 31 24 -2071 concat 25 9 2070 -2072 slice 28 54 23 16 -2073 concat 25 9 2072 -2074 slice 1 58 3 3 -2075 ite 25 2074 2073 2071 -2076 slice 28 54 15 8 -2077 concat 25 9 2076 -2078 slice 1 58 2 2 -2079 ite 25 2078 2077 2075 -2080 slice 1 58 1 1 -2081 ite 25 2080 2059 2079 -2082 const 25 100011100 -2083 slice 1 58 0 0 -2084 ite 25 2083 2082 2081 -2085 ite 25 2041 2084 2069 -2086 ite 25 2044 2085 26 -2087 ite 25 20 2086 26 -2088 next 25 26 2087 -2089 const 28 00000000 -2090 and 1 37 35 -2091 ite 28 2090 32 29 -2092 ite 28 20 2091 2089 -2093 next 28 29 2092 -2094 slice 28 1078 31 24 -2095 uext 25 2094 1 -2096 eq 1 269 2095 -2097 ite 28 2096 1355 33 -2098 const 17 1010 -2099 eq 1 1344 2098 -2100 const 17 1001 -2101 eq 1 1344 2100 -2102 const 17 1000 -2103 eq 1 1344 2102 -2104 const 260 110 -2105 uext 17 2104 1 -2106 eq 1 1344 2105 -2107 const 260 100 -2108 uext 17 2107 1 -2109 eq 1 1344 2108 -2110 const 258 11 -2111 uext 17 2110 2 -2112 eq 1 1344 2111 -2113 const 258 10 -2114 uext 17 2113 2 -2115 eq 1 1344 2114 -2116 uext 17 30 3 -2117 eq 1 1344 2116 -2118 redor 1 1344 -2119 not 1 2118 -2120 concat 258 2101 2099 -2121 concat 260 2103 2120 -2122 concat 17 2106 2121 -2123 concat 57 2109 2122 -2124 concat 264 2112 2123 -2125 concat 266 2115 2124 -2126 concat 28 2117 2125 -2127 concat 25 2119 2126 -2128 redor 1 2127 -2129 ite 28 2128 33 2097 -2130 eq 1 269 588 -2131 ite 28 2130 33 2129 -2132 ite 28 842 33 2131 -2133 redor 1 1074 -2134 not 1 2133 -2135 and 1 82 2134 -2136 not 1 63 -2137 and 1 2135 2136 -2138 ite 28 2137 2132 33 -2139 ite 28 80 33 2138 -2140 ite 28 20 2139 2089 -2141 next 28 33 2140 -2142 ite 1 15 30 37 -2143 ite 1 49 30 2142 -2144 ite 1 2037 2143 9 -2145 ite 1 48 30 2144 -2146 ite 1 50 30 2145 -2147 ite 1 2041 30 2146 -2148 ite 1 2044 2147 37 -2149 ite 1 20 2148 9 -2150 next 1 37 2149 -2151 not 1 40 -2152 and 1 2151 45 -2153 ite 1 2152 30 9 -2154 ite 1 20 2153 9 -2155 next 1 40 2154 -2156 ite 28 1367 1366 42 -2157 ite 28 2096 2156 42 -2158 ite 28 2128 42 2157 -2159 ite 28 2130 42 2158 -2160 ite 28 842 42 2159 -2161 ite 28 2137 2160 42 -2162 ite 28 80 42 2161 -2163 ite 28 20 2162 2089 -2164 next 28 42 2163 -2165 and 1 45 40 -2166 ite 28 2165 1351 43 -2167 ite 28 20 2166 2089 -2168 next 28 43 2167 -2169 uext 28 9 7 -2170 neq 1 51 2169 -2171 ite 1 21 2170 48 -2172 ite 1 48 9 2171 -2173 ite 1 50 2171 2172 -2174 ite 1 2041 2171 2173 -2175 ite 1 2044 2174 2171 -2176 ite 1 20 2175 9 -2177 next 1 48 2176 -2178 ite 1 21 9 49 -2179 ite 1 49 9 2178 -2180 ite 1 2037 2179 2178 -2181 ite 1 48 30 2180 -2182 ite 1 50 2178 2181 -2183 ite 1 2041 2178 2182 -2184 ite 1 2044 2183 2178 -2185 ite 1 20 2184 9 -2186 next 1 49 2185 -2187 ite 1 21 9 50 -2188 ite 1 50 9 2187 -2189 ite 1 2041 2187 2188 -2190 ite 1 2044 2189 2187 -2191 ite 1 20 2190 9 -2192 next 1 50 2191 -2193 ite 28 21 2089 51 -2194 ite 28 20 2193 2089 -2195 next 28 51 2194 -2196 const 53 00000111010110111100110100010101 -2197 const 548 0000000000000 -2198 slice 560 54 18 0 -2199 concat 53 2198 2197 -2200 xor 53 54 2199 -2201 slice 552 2200 31 17 -2202 uext 53 2201 17 -2203 xor 53 2200 2202 -2204 const 57 00000 -2205 slice 576 2203 26 0 -2206 concat 53 2205 2204 -2207 xor 53 2203 2206 -2208 ite 53 2037 2207 54 -2209 ite 53 48 54 2208 -2210 ite 53 50 54 2209 -2211 ite 53 2041 54 2210 -2212 ite 53 2044 2211 54 -2213 ite 53 20 2212 2196 -2214 next 53 54 2213 -2215 uext 55 30 11 -2216 add 55 56 2215 -2217 ite 55 2037 2216 56 -2218 ite 55 48 56 2217 -2219 ite 55 50 56 2218 -2220 const 55 000000000001 -2221 ite 55 2041 2220 2219 -2222 ite 55 2044 2221 56 -2223 ite 55 20 2222 56 -2224 next 55 56 2223 -2225 const 57 00001 -2226 redor 1 56 -2227 not 1 2226 -2228 ite 57 2227 2225 58 -2229 ite 57 2037 2228 58 -2230 ite 57 48 58 2229 -2231 ite 57 50 58 2230 -2232 slice 17 58 3 0 -2233 concat 57 2232 9 -2234 ite 57 2041 2233 2231 -2235 ite 57 2044 2234 58 -2236 ite 57 20 2235 2225 -2237 next 57 58 2236 -2238 ite 1 1073 1072 63 -2239 ite 1 20 2238 9 -2240 next 1 63 2239 -2241 next 1 66 3 -2242 ite 1 1073 1071 69 -2243 ite 1 20 2242 69 -2244 next 1 69 2243 -2245 ite 53 84 586 71 -2246 const 53 11111111111111111111111111111111 -2247 ite 53 590 2246 2245 -2248 next 53 71 2247 -2249 not 1 75 -2250 or 1 2249 77 -2251 ite 1 2250 30 73 -2252 const 17 1011 -2253 eq 1 1347 2252 -2254 eq 1 1347 2098 -2255 eq 1 1347 2100 -2256 eq 1 1347 2102 -2257 concat 258 2254 2253 -2258 concat 260 2255 2257 -2259 concat 17 2256 2258 -2260 redor 1 2259 -2261 ite 1 2260 2251 73 -2262 uext 25 9 8 -2263 eq 1 2262 1362 -2264 neq 1 29 1337 -2265 uext 266 2102 3 -2266 ult 1 1348 2265 -2267 and 1 2264 2266 -2268 ite 1 2267 73 2263 -2269 ite 1 2250 2268 73 -2270 const 260 101 -2271 uext 17 2270 1 -2272 eq 1 1347 2271 -2273 ite 1 2272 2269 2261 -2274 ite 1 2250 9 73 -2275 redor 1 1347 -2276 not 1 2275 -2277 ite 1 2276 2274 2273 -2278 not 1 1076 -2279 redor 1 1075 -2280 not 1 2279 -2281 and 1 2278 2280 -2282 ite 1 2281 2277 73 -2283 ite 1 80 2282 73 -2284 ite 1 1349 73 2283 -2285 ite 1 20 2284 73 -2286 next 1 73 2285 -2287 ite 1 77 9 75 -2288 ite 1 2250 9 75 -2289 ite 1 2250 30 75 -2290 const 17 1101 -2291 eq 1 1347 2290 -2292 const 17 1100 -2293 eq 1 1347 2292 -2294 const 260 111 -2295 uext 17 2294 1 -2296 eq 1 1347 2295 -2297 uext 17 2104 1 -2298 eq 1 1347 2297 -2299 uext 17 2107 1 -2300 eq 1 1347 2299 -2301 uext 17 2110 2 -2302 eq 1 1347 2301 -2303 uext 17 2113 2 -2304 eq 1 1347 2303 -2305 uext 17 30 3 -2306 eq 1 1347 2305 -2307 concat 258 2293 2291 -2308 concat 260 2253 2307 -2309 concat 17 2254 2308 -2310 concat 57 2255 2309 -2311 concat 264 2256 2310 -2312 concat 266 2296 2311 -2313 concat 28 2298 2312 -2314 concat 25 2272 2313 -2315 concat 87 2300 2314 -2316 concat 545 2302 2315 -2317 concat 55 2304 2316 -2318 concat 548 2306 2317 -2319 concat 550 2276 2318 -2320 redor 1 2319 -2321 ite 1 2320 2289 2288 -2322 ite 1 2281 2321 2287 -2323 ite 1 80 2322 9 -2324 const 57 10000 -2325 uext 266 2324 2 -2326 ult 1 1348 2325 -2327 ite 1 2326 30 9 -2328 and 1 2250 2280 -2329 ite 1 2328 2327 75 -2330 ite 1 1349 2329 2323 -2331 ite 1 20 2330 9 -2332 next 1 75 2331 -2333 slice 87 855 14 5 -2334 redor 1 2333 -2335 not 1 2334 -2336 and 1 2335 75 -2337 ite 1 2336 75 9 -2338 ite 1 20 2337 9 -2339 next 1 77 2338 -2340 ite 1 1076 9 80 -2341 ite 1 1077 30 2340 -2342 ite 1 20 2341 9 -2343 next 1 80 2342 -2344 slice 25 88 9 1 -2345 concat 87 66 2344 -2346 uext 17 30 3 -2347 eq 1 594 2346 -2348 ite 87 2347 2345 88 -2349 slice 25 2348 9 1 -2350 concat 87 66 2349 -2351 uext 17 2110 2 -2352 eq 1 594 2351 -2353 ite 87 2352 2350 2348 -2354 slice 25 2353 9 1 -2355 concat 87 66 2354 -2356 uext 17 2270 1 -2357 eq 1 594 2356 -2358 ite 87 2357 2355 2353 -2359 slice 25 2358 9 1 -2360 concat 87 66 2359 -2361 uext 17 2294 1 -2362 eq 1 594 2361 -2363 ite 87 2362 2360 2358 -2364 eq 1 66 847 -2365 ite 87 2364 2363 2345 -2366 uext 87 743 3 -2367 eq 1 2365 2366 -2368 uext 17 30 3 -2369 add 17 596 2368 -2370 ite 17 2347 2369 596 -2371 uext 17 30 3 -2372 add 17 2370 2371 -2373 ite 17 2352 2372 2370 -2374 uext 17 30 3 -2375 add 17 2373 2374 -2376 ite 17 2357 2375 2373 -2377 uext 17 30 3 -2378 add 17 2376 2377 -2379 ite 17 2362 2378 2376 -2380 ite 17 2364 2379 2369 -2381 eq 1 2380 2098 -2382 or 1 2367 2381 -2383 ite 1 2382 2136 9 -2384 next 1 82 2383 -2385 ite 25 2250 1011 86 -2386 ite 25 2291 2385 86 -2387 slice 28 71 31 24 -2388 concat 25 9 2387 -2389 ite 25 2250 2388 86 -2390 ite 25 2293 2389 2386 -2391 slice 28 71 23 16 -2392 concat 25 9 2391 -2393 ite 25 2250 2392 86 -2394 ite 25 2253 2393 2390 -2395 slice 28 71 15 8 -2396 concat 25 9 2395 -2397 ite 25 2250 2396 86 -2398 ite 25 2254 2397 2394 -2399 slice 28 71 7 0 -2400 concat 25 9 2399 -2401 ite 25 2250 2400 86 -2402 ite 25 2255 2401 2398 -2403 const 25 110111100 -2404 ite 25 2250 2403 86 -2405 ite 25 2256 2404 2402 -2406 ite 25 2250 1009 86 -2407 ite 25 2296 2406 2405 -2408 const 25 110011100 -2409 ite 25 2250 2408 86 -2410 ite 25 2298 2409 2407 -2411 const 264 111100 -2412 const 264 011100 -2413 uext 25 9 8 -2414 neq 1 2413 1362 -2415 ite 264 2414 2412 2411 -2416 concat 25 2104 2415 -2417 slice 1 1337 0 0 -2418 ite 25 2417 1190 1079 -2419 ite 25 2417 1268 1257 -2420 slice 1 1337 1 1 -2421 ite 25 2420 2419 2418 -2422 ite 25 2417 1290 1279 -2423 ite 25 2417 1312 1301 -2424 ite 25 2420 2423 2422 -2425 slice 1 1337 2 2 -2426 ite 25 2425 2424 2421 -2427 ite 25 2417 1334 1323 -2428 ite 25 2417 1101 1090 -2429 ite 25 2420 2428 2427 -2430 ite 25 2417 1123 1112 -2431 ite 25 2417 1145 1134 -2432 ite 25 2420 2431 2430 -2433 ite 25 2425 2432 2429 -2434 slice 1 1337 3 3 -2435 ite 25 2434 2433 2426 -2436 ite 25 2417 1167 1156 -2437 ite 25 2417 1189 1178 -2438 ite 25 2420 2437 2436 -2439 ite 25 2417 1212 1201 -2440 ite 25 2417 1234 1223 -2441 ite 25 2420 2440 2439 -2442 ite 25 2425 2441 2438 -2443 ite 25 2417 1252 1245 -2444 ite 25 2417 1254 1253 -2445 ite 25 2420 2444 2443 -2446 ite 25 2417 1256 1255 -2447 ite 25 2417 1259 1258 -2448 ite 25 2420 2447 2446 -2449 ite 25 2425 2448 2445 -2450 ite 25 2434 2449 2442 -2451 slice 1 1337 4 4 -2452 ite 25 2451 2450 2435 -2453 ite 25 2417 1261 1260 -2454 ite 25 2417 1263 1262 -2455 ite 25 2420 2454 2453 -2456 ite 25 2417 1265 1264 -2457 ite 25 2417 1267 1266 -2458 ite 25 2420 2457 2456 -2459 ite 25 2425 2458 2455 -2460 ite 25 2417 1270 1269 -2461 ite 25 2417 1272 1271 -2462 ite 25 2420 2461 2460 -2463 ite 25 2417 1274 1273 -2464 ite 25 2417 1276 1275 -2465 ite 25 2420 2464 2463 -2466 ite 25 2425 2465 2462 -2467 ite 25 2434 2466 2459 -2468 ite 25 2417 1278 1277 -2469 ite 25 2417 1281 1280 -2470 ite 25 2420 2469 2468 -2471 ite 25 2417 1283 1282 -2472 ite 25 2417 1285 1284 -2473 ite 25 2420 2472 2471 -2474 ite 25 2425 2473 2470 -2475 ite 25 2417 1287 1286 -2476 ite 25 2417 1289 1288 -2477 ite 25 2420 2476 2475 -2478 ite 25 2417 1292 1291 -2479 ite 25 2417 1294 1293 -2480 ite 25 2420 2479 2478 -2481 ite 25 2425 2480 2477 -2482 ite 25 2434 2481 2474 -2483 ite 25 2451 2482 2467 -2484 slice 1 1337 5 5 -2485 ite 25 2484 2483 2452 -2486 ite 25 2417 1296 1295 -2487 ite 25 2417 1298 1297 -2488 ite 25 2420 2487 2486 -2489 ite 25 2417 1300 1299 -2490 ite 25 2417 1303 1302 -2491 ite 25 2420 2490 2489 -2492 ite 25 2425 2491 2488 -2493 ite 25 2417 1305 1304 -2494 ite 25 2417 1307 1306 -2495 ite 25 2420 2494 2493 -2496 ite 25 2417 1309 1308 -2497 ite 25 2417 1311 1310 -2498 ite 25 2420 2497 2496 -2499 ite 25 2425 2498 2495 -2500 ite 25 2434 2499 2492 -2501 ite 25 2417 1314 1313 -2502 ite 25 2417 1316 1315 -2503 ite 25 2420 2502 2501 -2504 ite 25 2417 1318 1317 -2505 ite 25 2417 1320 1319 -2506 ite 25 2420 2505 2504 -2507 ite 25 2425 2506 2503 -2508 ite 25 2417 1322 1321 -2509 ite 25 2417 1325 1324 -2510 ite 25 2420 2509 2508 -2511 ite 25 2417 1327 1326 -2512 ite 25 2417 1329 1328 -2513 ite 25 2420 2512 2511 -2514 ite 25 2425 2513 2510 -2515 ite 25 2434 2514 2507 -2516 ite 25 2451 2515 2500 -2517 ite 25 2417 1331 1330 -2518 ite 25 2417 1333 1332 -2519 ite 25 2420 2518 2517 -2520 ite 25 2417 1081 1080 -2521 ite 25 2417 1083 1082 -2522 ite 25 2420 2521 2520 -2523 ite 25 2425 2522 2519 -2524 ite 25 2417 1085 1084 -2525 ite 25 2417 1087 1086 -2526 ite 25 2420 2525 2524 -2527 ite 25 2417 1089 1088 -2528 ite 25 2417 1092 1091 -2529 ite 25 2420 2528 2527 -2530 ite 25 2425 2529 2526 -2531 ite 25 2434 2530 2523 -2532 ite 25 2417 1094 1093 -2533 ite 25 2417 1096 1095 -2534 ite 25 2420 2533 2532 -2535 ite 25 2417 1098 1097 -2536 ite 25 2417 1100 1099 -2537 ite 25 2420 2536 2535 -2538 ite 25 2425 2537 2534 -2539 ite 25 2417 1103 1102 -2540 ite 25 2417 1105 1104 -2541 ite 25 2420 2540 2539 -2542 ite 25 2417 1107 1106 -2543 ite 25 2417 1109 1108 -2544 ite 25 2420 2543 2542 -2545 ite 25 2425 2544 2541 -2546 ite 25 2434 2545 2538 -2547 ite 25 2451 2546 2531 -2548 ite 25 2484 2547 2516 -2549 slice 1 1337 6 6 -2550 ite 25 2549 2548 2485 -2551 ite 25 2417 1111 1110 -2552 ite 25 2417 1114 1113 -2553 ite 25 2420 2552 2551 -2554 ite 25 2417 1116 1115 -2555 ite 25 2417 1118 1117 -2556 ite 25 2420 2555 2554 -2557 ite 25 2425 2556 2553 -2558 ite 25 2417 1120 1119 -2559 ite 25 2417 1122 1121 -2560 ite 25 2420 2559 2558 -2561 ite 25 2417 1125 1124 -2562 ite 25 2417 1127 1126 -2563 ite 25 2420 2562 2561 -2564 ite 25 2425 2563 2560 -2565 ite 25 2434 2564 2557 -2566 ite 25 2417 1129 1128 -2567 ite 25 2417 1131 1130 -2568 ite 25 2420 2567 2566 -2569 ite 25 2417 1133 1132 -2570 ite 25 2417 1136 1135 -2571 ite 25 2420 2570 2569 -2572 ite 25 2425 2571 2568 -2573 ite 25 2417 1138 1137 -2574 ite 25 2417 1140 1139 -2575 ite 25 2420 2574 2573 -2576 ite 25 2417 1142 1141 -2577 ite 25 2417 1144 1143 -2578 ite 25 2420 2577 2576 -2579 ite 25 2425 2578 2575 -2580 ite 25 2434 2579 2572 -2581 ite 25 2451 2580 2565 -2582 ite 25 2417 1147 1146 -2583 ite 25 2417 1149 1148 -2584 ite 25 2420 2583 2582 -2585 ite 25 2417 1151 1150 -2586 ite 25 2417 1153 1152 -2587 ite 25 2420 2586 2585 -2588 ite 25 2425 2587 2584 -2589 ite 25 2417 1155 1154 -2590 ite 25 2417 1158 1157 -2591 ite 25 2420 2590 2589 -2592 ite 25 2417 1160 1159 -2593 ite 25 2417 1162 1161 -2594 ite 25 2420 2593 2592 -2595 ite 25 2425 2594 2591 -2596 ite 25 2434 2595 2588 -2597 ite 25 2417 1164 1163 -2598 ite 25 2417 1166 1165 -2599 ite 25 2420 2598 2597 -2600 ite 25 2417 1169 1168 -2601 ite 25 2417 1171 1170 -2602 ite 25 2420 2601 2600 -2603 ite 25 2425 2602 2599 -2604 ite 25 2417 1173 1172 -2605 ite 25 2417 1175 1174 -2606 ite 25 2420 2605 2604 -2607 ite 25 2417 1177 1176 -2608 ite 25 2417 1180 1179 -2609 ite 25 2420 2608 2607 -2610 ite 25 2425 2609 2606 -2611 ite 25 2434 2610 2603 -2612 ite 25 2451 2611 2596 -2613 ite 25 2484 2612 2581 -2614 ite 25 2417 1182 1181 -2615 ite 25 2417 1184 1183 -2616 ite 25 2420 2615 2614 -2617 ite 25 2417 1186 1185 -2618 ite 25 2417 1188 1187 -2619 ite 25 2420 2618 2617 -2620 ite 25 2425 2619 2616 -2621 ite 25 2417 1192 1191 -2622 ite 25 2417 1194 1193 -2623 ite 25 2420 2622 2621 -2624 ite 25 2417 1196 1195 -2625 ite 25 2417 1198 1197 -2626 ite 25 2420 2625 2624 -2627 ite 25 2425 2626 2623 -2628 ite 25 2434 2627 2620 -2629 ite 25 2417 1200 1199 -2630 ite 25 2417 1203 1202 -2631 ite 25 2420 2630 2629 -2632 ite 25 2417 1205 1204 -2633 ite 25 2417 1207 1206 -2634 ite 25 2420 2633 2632 -2635 ite 25 2425 2634 2631 -2636 ite 25 2417 1209 1208 -2637 ite 25 2417 1211 1210 -2638 ite 25 2420 2637 2636 -2639 ite 25 2417 1214 1213 -2640 ite 25 2417 1216 1215 -2641 ite 25 2420 2640 2639 -2642 ite 25 2425 2641 2638 -2643 ite 25 2434 2642 2635 -2644 ite 25 2451 2643 2628 -2645 ite 25 2417 1218 1217 -2646 ite 25 2417 1220 1219 -2647 ite 25 2420 2646 2645 -2648 ite 25 2417 1222 1221 -2649 ite 25 2417 1225 1224 -2650 ite 25 2420 2649 2648 -2651 ite 25 2425 2650 2647 -2652 ite 25 2417 1227 1226 -2653 ite 25 2417 1229 1228 -2654 ite 25 2420 2653 2652 -2655 ite 25 2417 1231 1230 -2656 ite 25 2417 1233 1232 -2657 ite 25 2420 2656 2655 -2658 ite 25 2425 2657 2654 -2659 ite 25 2434 2658 2651 -2660 ite 25 2417 1236 1235 -2661 ite 25 2417 1238 1237 -2662 ite 25 2420 2661 2660 -2663 ite 25 2417 1240 1239 -2664 ite 25 2417 1242 1241 -2665 ite 25 2420 2664 2663 -2666 ite 25 2425 2665 2662 -2667 ite 25 2417 1244 1243 -2668 ite 25 2417 1247 1246 -2669 ite 25 2420 2668 2667 -2670 ite 25 2417 1249 1248 -2671 ite 25 2417 1251 1250 -2672 ite 25 2420 2671 2670 -2673 ite 25 2425 2672 2669 -2674 ite 25 2434 2673 2666 -2675 ite 25 2451 2674 2659 -2676 ite 25 2484 2675 2644 -2677 ite 25 2549 2676 2613 -2678 slice 1 1337 7 7 -2679 ite 25 2678 2677 2550 -2680 ite 25 2267 2679 2416 -2681 ite 25 2250 2680 86 -2682 ite 25 2272 2681 2410 -2683 concat 25 9 33 -2684 ite 25 2250 2683 86 -2685 ite 25 2300 2684 2682 -2686 concat 25 9 42 -2687 ite 25 2250 2686 86 -2688 ite 25 2302 2687 2685 -2689 const 25 001110100 -2690 ite 25 2250 2689 86 -2691 ite 25 2304 2690 2688 -2692 ite 25 2250 588 86 -2693 ite 25 2306 2692 2691 -2694 const 25 010110101 -2695 ite 25 2250 2694 86 -2696 ite 25 2276 2695 2693 -2697 ite 25 2281 2696 86 -2698 ite 25 80 2697 86 -2699 const 258 00 -2700 concat 25 2699 1348 -2701 uext 266 2052 3 -2702 eq 1 1348 2701 -2703 ite 25 2702 1011 2700 -2704 const 25 111111110 -2705 uext 266 2270 4 -2706 eq 1 1348 2705 -2707 uext 266 2107 4 -2708 eq 1 1348 2707 -2709 uext 266 2110 5 -2710 eq 1 1348 2709 -2711 uext 266 2113 5 -2712 eq 1 1348 2711 -2713 concat 258 2708 2706 -2714 concat 260 2710 2713 -2715 concat 17 2712 2714 -2716 redor 1 2715 -2717 ite 25 2716 2704 2703 -2718 uext 266 30 6 -2719 eq 1 1348 2718 -2720 ite 25 2719 588 2717 -2721 redor 1 1348 -2722 not 1 2721 -2723 ite 25 2722 2694 2720 -2724 ite 25 2326 2723 86 -2725 ite 25 2328 2724 86 -2726 ite 25 1349 2725 2698 -2727 ite 25 20 2726 86 -2728 next 25 86 2727 -2729 next 87 88 2365 -2730 uext 17 30 3 -2731 add 17 594 2730 -2732 ite 17 2364 2731 593 -2733 next 17 594 2732 -2734 ite 17 2382 593 2380 -2735 next 17 596 2734 -2736 ite 1 82 803 742 -2737 next 1 742 2736 -2738 uext 17 30 3 -2739 add 17 845 2738 -2740 uext 25 845 5 -2741 eq 1 269 2740 -2742 ite 17 2741 2739 593 -2743 uext 17 2104 1 -2744 ulte 1 2743 845 -2745 ite 17 2744 2742 593 -2746 const 25 111111101 -2747 eq 1 269 2746 -2748 ite 17 2747 2739 593 -2749 uext 17 2113 2 -2750 ulte 1 2749 845 -2751 uext 17 2104 1 -2752 ult 1 845 2751 -2753 and 1 2750 2752 -2754 ite 17 2753 2748 2745 -2755 const 17 0010 -2756 ite 17 2130 2755 2754 -2757 ite 17 842 593 2756 -2758 ite 17 82 2757 845 -2759 ite 17 63 593 2758 -2760 eq 1 845 2052 -2761 ite 17 2760 593 2759 -2762 next 17 845 2761 -2763 ite 1 2760 30 9 -2764 next 1 846 2763 -2765 next 1 847 66 -2766 slice 87 854 14 5 -2767 ite 87 2336 1013 2766 -2768 slice 57 854 4 0 -2769 concat 552 2767 2768 -2770 slice 17 854 4 1 -2771 concat 550 2767 2770 -2772 concat 552 9 2771 -2773 ite 552 1073 2772 2769 -2774 ite 552 20 2773 854 -2775 next 552 854 2774 -2776 const 552 000000000000000 -2777 concat 258 75 75 -2778 concat 260 75 2777 -2779 concat 17 75 2778 -2780 concat 57 75 2779 -2781 concat 264 75 2780 -2782 concat 266 75 2781 -2783 concat 28 75 2782 -2784 concat 25 75 2783 -2785 concat 87 75 2784 -2786 ite 87 2336 2785 2333 -2787 slice 57 855 4 0 -2788 concat 552 2786 2787 -2789 slice 17 855 4 1 -2790 concat 550 2786 2789 -2791 concat 552 9 2790 -2792 ite 552 1073 2791 2788 -2793 ite 552 20 2792 2776 -2794 next 552 855 2793 -2795 eq 1 1065 2107 -2796 uext 260 2110 1 -2797 eq 1 1065 2796 -2798 uext 260 2113 1 -2799 eq 1 1065 2798 -2800 uext 260 30 2 -2801 eq 1 1065 2800 -2802 concat 258 2797 2795 -2803 concat 260 2799 2802 -2804 concat 17 2801 2803 -2805 redor 1 2804 -2806 ite 260 2805 858 857 -2807 not 1 1072 -2808 neq 1 1062 1071 -2809 or 1 2807 2808 -2810 eq 1 1065 2270 -2811 or 1 2809 2810 -2812 ite 260 2811 857 2806 -2813 ite 260 1073 2812 858 -2814 uext 260 30 2 -2815 add 260 2813 2814 -2816 ite 260 20 2815 857 -2817 next 260 858 2816 -2818 ite 1 2336 1018 901 -2819 ite 1 20 2818 9 -2820 next 1 901 2819 -2821 slice 1 1013 9 9 -2822 next 1 1007 2821 -2823 ite 1 1073 1071 1062 -2824 ite 1 20 2823 9 -2825 next 1 1062 2824 -2826 ite 260 2795 2270 1064 -2827 ite 260 2797 2107 2826 -2828 const 260 011 -2829 ite 260 2799 2828 2827 -2830 const 260 010 -2831 ite 260 2801 2830 2829 -2832 ite 260 2811 1064 2831 -2833 ite 260 1073 2832 1065 -2834 ite 260 20 2833 1064 -2835 next 260 1065 2834 -2836 slice 1 2773 0 0 -2837 ite 1 20 2836 1071 -2838 next 1 1071 2837 -2839 slice 1 2792 0 0 -2840 ite 1 20 2839 9 -2841 next 1 1072 2840 -2842 eq 1 2833 2815 -2843 ite 1 2842 30 9 -2844 ite 1 20 2843 9 -2845 next 1 1073 2844 -2846 uext 260 30 2 -2847 sub 260 1074 2846 -2848 redor 1 1074 -2849 ite 260 2848 2847 1074 -2850 ite 260 1076 2294 2849 -2851 ite 260 1077 2849 2850 -2852 ite 260 20 2851 2294 -2853 next 260 1074 2852 -2854 const 57 11111 -2855 uext 57 30 4 -2856 sub 57 1075 2855 -2857 redor 1 1075 -2858 ite 57 2857 2856 1075 -2859 ite 57 1077 2854 2858 -2860 ite 57 20 2859 2854 -2861 next 57 1075 2860 -2862 ite 1 63 9 30 -2863 ite 1 2250 2862 9 -2864 ite 1 2320 9 2863 -2865 ite 1 2281 2864 9 -2866 ite 1 80 2865 9 -2867 ite 1 2326 9 30 -2868 ite 1 2328 2867 9 -2869 ite 1 1349 2868 2866 -2870 ite 1 20 2869 9 -2871 next 1 1076 2870 -2872 ite 1 2128 846 30 -2873 ite 1 2130 846 2872 -2874 ite 1 842 846 2873 -2875 ite 1 2137 2874 846 -2876 ite 1 80 846 2875 -2877 ite 1 20 2876 846 -2878 next 1 1077 2877 -2879 eq 1 269 2403 -2880 ite 53 2879 71 1078 -2881 ite 53 2106 2880 1078 -2882 eq 1 269 2408 -2883 ite 53 2882 1078 2880 -2884 ite 53 2109 2883 2881 -2885 ite 53 2130 1078 2884 -2886 ite 53 842 1078 2885 -2887 ite 53 2137 2886 1078 -2888 ite 53 80 1078 2887 -2889 ite 53 20 2888 1078 -2890 next 53 1078 2889 -2891 slice 1 29 0 0 -2892 not 1 2891 -2893 slice 1 29 1 1 -2894 not 1 2893 -2895 and 1 2892 2894 -2896 slice 1 29 2 2 -2897 not 1 2896 -2898 slice 1 29 3 3 -2899 not 1 2898 -2900 and 1 2897 2899 -2901 and 1 2895 2900 -2902 slice 1 29 4 4 -2903 not 1 2902 -2904 slice 1 29 5 5 -2905 not 1 2904 -2906 and 1 2903 2905 -2907 slice 1 29 6 6 -2908 not 1 2907 -2909 slice 1 29 7 7 -2910 not 1 2909 -2911 and 1 2908 2910 -2912 and 1 2906 2911 -2913 and 1 2901 2912 -2914 ite 1 2090 30 9 -2915 ite 1 20 2914 9 -2916 and 1 2913 2915 -2917 ite 25 2916 26 1079 -2918 next 25 1079 2917 -2919 and 1 2896 2899 -2920 and 1 2895 2919 -2921 and 1 2903 2904 -2922 and 1 2907 2910 -2923 and 1 2921 2922 -2924 and 1 2920 2923 -2925 and 1 2924 2915 -2926 ite 25 2925 26 1080 -2927 next 25 1080 2926 -2928 and 1 2891 2894 -2929 and 1 2928 2919 -2930 and 1 2929 2923 -2931 and 1 2930 2915 -2932 ite 25 2931 26 1081 -2933 next 25 1081 2932 -2934 and 1 2892 2893 -2935 and 1 2934 2919 -2936 and 1 2935 2923 -2937 and 1 2936 2915 -2938 ite 25 2937 26 1082 -2939 next 25 1082 2938 -2940 and 1 2891 2893 -2941 and 1 2940 2919 -2942 and 1 2941 2923 -2943 and 1 2942 2915 -2944 ite 25 2943 26 1083 -2945 next 25 1083 2944 -2946 and 1 2897 2898 -2947 and 1 2895 2946 -2948 and 1 2947 2923 -2949 and 1 2948 2915 -2950 ite 25 2949 26 1084 -2951 next 25 1084 2950 -2952 and 1 2928 2946 -2953 and 1 2952 2923 -2954 and 1 2953 2915 -2955 ite 25 2954 26 1085 -2956 next 25 1085 2955 -2957 and 1 2934 2946 -2958 and 1 2957 2923 -2959 and 1 2958 2915 -2960 ite 25 2959 26 1086 -2961 next 25 1086 2960 -2962 and 1 2940 2946 -2963 and 1 2962 2923 -2964 and 1 2963 2915 -2965 ite 25 2964 26 1087 -2966 next 25 1087 2965 -2967 and 1 2896 2898 -2968 and 1 2895 2967 -2969 and 1 2968 2923 -2970 and 1 2969 2915 -2971 ite 25 2970 26 1088 -2972 next 25 1088 2971 -2973 and 1 2928 2967 -2974 and 1 2973 2923 -2975 and 1 2974 2915 -2976 ite 25 2975 26 1089 -2977 next 25 1089 2976 -2978 and 1 2957 2912 -2979 and 1 2978 2915 -2980 ite 25 2979 26 1090 -2981 next 25 1090 2980 -2982 and 1 2934 2967 -2983 and 1 2982 2923 -2984 and 1 2983 2915 -2985 ite 25 2984 26 1091 -2986 next 25 1091 2985 -2987 and 1 2940 2967 -2988 and 1 2987 2923 -2989 and 1 2988 2915 -2990 ite 25 2989 26 1092 -2991 next 25 1092 2990 -2992 and 1 2902 2904 -2993 and 1 2992 2922 -2994 and 1 2901 2993 -2995 and 1 2994 2915 -2996 ite 25 2995 26 1093 -2997 next 25 1093 2996 -2998 and 1 2928 2900 -2999 and 1 2998 2993 -3000 and 1 2999 2915 -3001 ite 25 3000 26 1094 -3002 next 25 1094 3001 -3003 and 1 2934 2900 -3004 and 1 3003 2993 -3005 and 1 3004 2915 -3006 ite 25 3005 26 1095 -3007 next 25 1095 3006 -3008 and 1 2940 2900 -3009 and 1 3008 2993 -3010 and 1 3009 2915 -3011 ite 25 3010 26 1096 -3012 next 25 1096 3011 -3013 and 1 2920 2993 -3014 and 1 3013 2915 -3015 ite 25 3014 26 1097 -3016 next 25 1097 3015 -3017 and 1 2929 2993 -3018 and 1 3017 2915 -3019 ite 25 3018 26 1098 -3020 next 25 1098 3019 -3021 and 1 2935 2993 -3022 and 1 3021 2915 -3023 ite 25 3022 26 1099 -3024 next 25 1099 3023 -3025 and 1 2941 2993 -3026 and 1 3025 2915 -3027 ite 25 3026 26 1100 -3028 next 25 1100 3027 -3029 and 1 2962 2912 -3030 and 1 3029 2915 -3031 ite 25 3030 26 1101 -3032 next 25 1101 3031 -3033 and 1 2947 2993 -3034 and 1 3033 2915 -3035 ite 25 3034 26 1102 -3036 next 25 1102 3035 -3037 and 1 2952 2993 -3038 and 1 3037 2915 -3039 ite 25 3038 26 1103 -3040 next 25 1103 3039 -3041 and 1 2957 2993 -3042 and 1 3041 2915 -3043 ite 25 3042 26 1104 -3044 next 25 1104 3043 -3045 and 1 2962 2993 -3046 and 1 3045 2915 -3047 ite 25 3046 26 1105 -3048 next 25 1105 3047 -3049 and 1 2968 2993 -3050 and 1 3049 2915 -3051 ite 25 3050 26 1106 -3052 next 25 1106 3051 -3053 and 1 2973 2993 -3054 and 1 3053 2915 -3055 ite 25 3054 26 1107 -3056 next 25 1107 3055 -3057 and 1 2982 2993 -3058 and 1 3057 2915 -3059 ite 25 3058 26 1108 -3060 next 25 1108 3059 -3061 and 1 2987 2993 -3062 and 1 3061 2915 -3063 ite 25 3062 26 1109 -3064 next 25 1109 3063 -3065 and 1 2908 2909 -3066 and 1 2906 3065 -3067 and 1 2901 3066 -3068 and 1 3067 2915 -3069 ite 25 3068 26 1110 -3070 next 25 1110 3069 -3071 and 1 2998 3066 -3072 and 1 3071 2915 -3073 ite 25 3072 26 1111 -3074 next 25 1111 3073 -3075 and 1 2968 2912 -3076 and 1 3075 2915 -3077 ite 25 3076 26 1112 -3078 next 25 1112 3077 -3079 and 1 3003 3066 -3080 and 1 3079 2915 -3081 ite 25 3080 26 1113 -3082 next 25 1113 3081 -3083 and 1 3008 3066 -3084 and 1 3083 2915 -3085 ite 25 3084 26 1114 -3086 next 25 1114 3085 -3087 and 1 2920 3066 -3088 and 1 3087 2915 -3089 ite 25 3088 26 1115 -3090 next 25 1115 3089 -3091 and 1 2929 3066 -3092 and 1 3091 2915 -3093 ite 25 3092 26 1116 -3094 next 25 1116 3093 -3095 and 1 2935 3066 -3096 and 1 3095 2915 -3097 ite 25 3096 26 1117 -3098 next 25 1117 3097 -3099 and 1 2941 3066 -3100 and 1 3099 2915 -3101 ite 25 3100 26 1118 -3102 next 25 1118 3101 -3103 and 1 2947 3066 -3104 and 1 3103 2915 -3105 ite 25 3104 26 1119 -3106 next 25 1119 3105 -3107 and 1 2952 3066 -3108 and 1 3107 2915 -3109 ite 25 3108 26 1120 -3110 next 25 1120 3109 -3111 and 1 2957 3066 -3112 and 1 3111 2915 -3113 ite 25 3112 26 1121 -3114 next 25 1121 3113 -3115 and 1 2962 3066 -3116 and 1 3115 2915 -3117 ite 25 3116 26 1122 -3118 next 25 1122 3117 -3119 and 1 2973 2912 -3120 and 1 3119 2915 -3121 ite 25 3120 26 1123 -3122 next 25 1123 3121 -3123 and 1 2968 3066 -3124 and 1 3123 2915 -3125 ite 25 3124 26 1124 -3126 next 25 1124 3125 -3127 and 1 2973 3066 -3128 and 1 3127 2915 -3129 ite 25 3128 26 1125 -3130 next 25 1125 3129 -3131 and 1 2982 3066 -3132 and 1 3131 2915 -3133 ite 25 3132 26 1126 -3134 next 25 1126 3133 -3135 and 1 2987 3066 -3136 and 1 3135 2915 -3137 ite 25 3136 26 1127 -3138 next 25 1127 3137 -3139 and 1 2902 2905 -3140 and 1 3139 3065 -3141 and 1 2901 3140 -3142 and 1 3141 2915 -3143 ite 25 3142 26 1128 -3144 next 25 1128 3143 -3145 and 1 2998 3140 -3146 and 1 3145 2915 -3147 ite 25 3146 26 1129 -3148 next 25 1129 3147 -3149 and 1 3003 3140 -3150 and 1 3149 2915 -3151 ite 25 3150 26 1130 -3152 next 25 1130 3151 -3153 and 1 3008 3140 -3154 and 1 3153 2915 -3155 ite 25 3154 26 1131 -3156 next 25 1131 3155 -3157 and 1 2920 3140 -3158 and 1 3157 2915 -3159 ite 25 3158 26 1132 -3160 next 25 1132 3159 -3161 and 1 2929 3140 -3162 and 1 3161 2915 -3163 ite 25 3162 26 1133 -3164 next 25 1133 3163 -3165 and 1 2982 2912 -3166 and 1 3165 2915 -3167 ite 25 3166 26 1134 -3168 next 25 1134 3167 -3169 and 1 2935 3140 -3170 and 1 3169 2915 -3171 ite 25 3170 26 1135 -3172 next 25 1135 3171 -3173 and 1 2941 3140 -3174 and 1 3173 2915 -3175 ite 25 3174 26 1136 -3176 next 25 1136 3175 -3177 and 1 2947 3140 -3178 and 1 3177 2915 -3179 ite 25 3178 26 1137 -3180 next 25 1137 3179 -3181 and 1 2952 3140 -3182 and 1 3181 2915 -3183 ite 25 3182 26 1138 -3184 next 25 1138 3183 -3185 and 1 2957 3140 -3186 and 1 3185 2915 -3187 ite 25 3186 26 1139 -3188 next 25 1139 3187 -3189 and 1 2962 3140 -3190 and 1 3189 2915 -3191 ite 25 3190 26 1140 -3192 next 25 1140 3191 -3193 and 1 2968 3140 -3194 and 1 3193 2915 -3195 ite 25 3194 26 1141 -3196 next 25 1141 3195 -3197 and 1 2973 3140 -3198 and 1 3197 2915 -3199 ite 25 3198 26 1142 -3200 next 25 1142 3199 -3201 and 1 2982 3140 -3202 and 1 3201 2915 -3203 ite 25 3202 26 1143 -3204 next 25 1143 3203 -3205 and 1 2987 3140 -3206 and 1 3205 2915 -3207 ite 25 3206 26 1144 -3208 next 25 1144 3207 -3209 and 1 2987 2912 -3210 and 1 3209 2915 -3211 ite 25 3210 26 1145 -3212 next 25 1145 3211 -3213 and 1 2921 3065 -3214 and 1 2901 3213 -3215 and 1 3214 2915 -3216 ite 25 3215 26 1146 -3217 next 25 1146 3216 -3218 and 1 2998 3213 -3219 and 1 3218 2915 -3220 ite 25 3219 26 1147 -3221 next 25 1147 3220 -3222 and 1 3003 3213 -3223 and 1 3222 2915 -3224 ite 25 3223 26 1148 -3225 next 25 1148 3224 -3226 and 1 3008 3213 -3227 and 1 3226 2915 -3228 ite 25 3227 26 1149 -3229 next 25 1149 3228 -3230 and 1 2920 3213 -3231 and 1 3230 2915 -3232 ite 25 3231 26 1150 -3233 next 25 1150 3232 -3234 and 1 2929 3213 -3235 and 1 3234 2915 -3236 ite 25 3235 26 1151 -3237 next 25 1151 3236 -3238 and 1 2935 3213 -3239 and 1 3238 2915 -3240 ite 25 3239 26 1152 -3241 next 25 1152 3240 -3242 and 1 2941 3213 -3243 and 1 3242 2915 -3244 ite 25 3243 26 1153 -3245 next 25 1153 3244 -3246 and 1 2947 3213 -3247 and 1 3246 2915 -3248 ite 25 3247 26 1154 -3249 next 25 1154 3248 -3250 and 1 2952 3213 -3251 and 1 3250 2915 -3252 ite 25 3251 26 1155 -3253 next 25 1155 3252 -3254 and 1 3139 2911 -3255 and 1 2901 3254 -3256 and 1 3255 2915 -3257 ite 25 3256 26 1156 -3258 next 25 1156 3257 -3259 and 1 2957 3213 -3260 and 1 3259 2915 -3261 ite 25 3260 26 1157 -3262 next 25 1157 3261 -3263 and 1 2962 3213 -3264 and 1 3263 2915 -3265 ite 25 3264 26 1158 -3266 next 25 1158 3265 -3267 and 1 2968 3213 -3268 and 1 3267 2915 -3269 ite 25 3268 26 1159 -3270 next 25 1159 3269 -3271 and 1 2973 3213 -3272 and 1 3271 2915 -3273 ite 25 3272 26 1160 -3274 next 25 1160 3273 -3275 and 1 2982 3213 -3276 and 1 3275 2915 -3277 ite 25 3276 26 1161 -3278 next 25 1161 3277 -3279 and 1 2987 3213 -3280 and 1 3279 2915 -3281 ite 25 3280 26 1162 -3282 next 25 1162 3281 -3283 and 1 2992 3065 -3284 and 1 2901 3283 -3285 and 1 3284 2915 -3286 ite 25 3285 26 1163 -3287 next 25 1163 3286 -3288 and 1 2998 3283 -3289 and 1 3288 2915 -3290 ite 25 3289 26 1164 -3291 next 25 1164 3290 -3292 and 1 3003 3283 -3293 and 1 3292 2915 -3294 ite 25 3293 26 1165 -3295 next 25 1165 3294 -3296 and 1 3008 3283 -3297 and 1 3296 2915 -3298 ite 25 3297 26 1166 -3299 next 25 1166 3298 -3300 and 1 2998 3254 -3301 and 1 3300 2915 -3302 ite 25 3301 26 1167 -3303 next 25 1167 3302 -3304 and 1 2920 3283 -3305 and 1 3304 2915 -3306 ite 25 3305 26 1168 -3307 next 25 1168 3306 -3308 and 1 2929 3283 -3309 and 1 3308 2915 -3310 ite 25 3309 26 1169 -3311 next 25 1169 3310 -3312 and 1 2935 3283 -3313 and 1 3312 2915 -3314 ite 25 3313 26 1170 -3315 next 25 1170 3314 -3316 and 1 2941 3283 -3317 and 1 3316 2915 -3318 ite 25 3317 26 1171 -3319 next 25 1171 3318 -3320 and 1 2947 3283 -3321 and 1 3320 2915 -3322 ite 25 3321 26 1172 -3323 next 25 1172 3322 -3324 and 1 2952 3283 -3325 and 1 3324 2915 -3326 ite 25 3325 26 1173 -3327 next 25 1173 3326 -3328 and 1 2957 3283 -3329 and 1 3328 2915 -3330 ite 25 3329 26 1174 -3331 next 25 1174 3330 -3332 and 1 2962 3283 -3333 and 1 3332 2915 -3334 ite 25 3333 26 1175 -3335 next 25 1175 3334 -3336 and 1 2968 3283 -3337 and 1 3336 2915 -3338 ite 25 3337 26 1176 -3339 next 25 1176 3338 -3340 and 1 2973 3283 -3341 and 1 3340 2915 -3342 ite 25 3341 26 1177 -3343 next 25 1177 3342 -3344 and 1 3003 3254 -3345 and 1 3344 2915 -3346 ite 25 3345 26 1178 -3347 next 25 1178 3346 -3348 and 1 2982 3283 -3349 and 1 3348 2915 -3350 ite 25 3349 26 1179 -3351 next 25 1179 3350 -3352 and 1 2987 3283 -3353 and 1 3352 2915 -3354 ite 25 3353 26 1180 -3355 next 25 1180 3354 -3356 and 1 2907 2909 -3357 and 1 2906 3356 -3358 and 1 2901 3357 -3359 and 1 3358 2915 -3360 ite 25 3359 26 1181 -3361 next 25 1181 3360 -3362 and 1 2998 3357 -3363 and 1 3362 2915 -3364 ite 25 3363 26 1182 -3365 next 25 1182 3364 -3366 and 1 3003 3357 -3367 and 1 3366 2915 -3368 ite 25 3367 26 1183 -3369 next 25 1183 3368 -3370 and 1 3008 3357 -3371 and 1 3370 2915 -3372 ite 25 3371 26 1184 -3373 next 25 1184 3372 -3374 and 1 2920 3357 -3375 and 1 3374 2915 -3376 ite 25 3375 26 1185 -3377 next 25 1185 3376 -3378 and 1 2929 3357 -3379 and 1 3378 2915 -3380 ite 25 3379 26 1186 -3381 next 25 1186 3380 -3382 and 1 2935 3357 -3383 and 1 3382 2915 -3384 ite 25 3383 26 1187 -3385 next 25 1187 3384 -3386 and 1 2941 3357 -3387 and 1 3386 2915 -3388 ite 25 3387 26 1188 -3389 next 25 1188 3388 -3390 and 1 3008 3254 -3391 and 1 3390 2915 -3392 ite 25 3391 26 1189 -3393 next 25 1189 3392 -3394 and 1 2998 2912 -3395 and 1 3394 2915 -3396 ite 25 3395 26 1190 -3397 next 25 1190 3396 -3398 and 1 2947 3357 -3399 and 1 3398 2915 -3400 ite 25 3399 26 1191 -3401 next 25 1191 3400 -3402 and 1 2952 3357 -3403 and 1 3402 2915 -3404 ite 25 3403 26 1192 -3405 next 25 1192 3404 -3406 and 1 2957 3357 -3407 and 1 3406 2915 -3408 ite 25 3407 26 1193 -3409 next 25 1193 3408 -3410 and 1 2962 3357 -3411 and 1 3410 2915 -3412 ite 25 3411 26 1194 -3413 next 25 1194 3412 -3414 and 1 2968 3357 -3415 and 1 3414 2915 -3416 ite 25 3415 26 1195 -3417 next 25 1195 3416 -3418 and 1 2973 3357 -3419 and 1 3418 2915 -3420 ite 25 3419 26 1196 -3421 next 25 1196 3420 -3422 and 1 2982 3357 -3423 and 1 3422 2915 -3424 ite 25 3423 26 1197 -3425 next 25 1197 3424 -3426 and 1 2987 3357 -3427 and 1 3426 2915 -3428 ite 25 3427 26 1198 -3429 next 25 1198 3428 -3430 and 1 3139 3356 -3431 and 1 2901 3430 -3432 and 1 3431 2915 -3433 ite 25 3432 26 1199 -3434 next 25 1199 3433 -3435 and 1 2998 3430 -3436 and 1 3435 2915 -3437 ite 25 3436 26 1200 -3438 next 25 1200 3437 -3439 and 1 2920 3254 -3440 and 1 3439 2915 -3441 ite 25 3440 26 1201 -3442 next 25 1201 3441 -3443 and 1 3003 3430 -3444 and 1 3443 2915 -3445 ite 25 3444 26 1202 -3446 next 25 1202 3445 -3447 and 1 3008 3430 -3448 and 1 3447 2915 -3449 ite 25 3448 26 1203 -3450 next 25 1203 3449 -3451 and 1 2920 3430 -3452 and 1 3451 2915 -3453 ite 25 3452 26 1204 -3454 next 25 1204 3453 -3455 and 1 2929 3430 -3456 and 1 3455 2915 -3457 ite 25 3456 26 1205 -3458 next 25 1205 3457 -3459 and 1 2935 3430 -3460 and 1 3459 2915 -3461 ite 25 3460 26 1206 -3462 next 25 1206 3461 -3463 and 1 2941 3430 -3464 and 1 3463 2915 -3465 ite 25 3464 26 1207 -3466 next 25 1207 3465 -3467 and 1 2947 3430 -3468 and 1 3467 2915 -3469 ite 25 3468 26 1208 -3470 next 25 1208 3469 -3471 and 1 2952 3430 -3472 and 1 3471 2915 -3473 ite 25 3472 26 1209 -3474 next 25 1209 3473 -3475 and 1 2957 3430 -3476 and 1 3475 2915 -3477 ite 25 3476 26 1210 -3478 next 25 1210 3477 -3479 and 1 2962 3430 -3480 and 1 3479 2915 -3481 ite 25 3480 26 1211 -3482 next 25 1211 3481 -3483 and 1 2929 3254 -3484 and 1 3483 2915 -3485 ite 25 3484 26 1212 -3486 next 25 1212 3485 -3487 and 1 2968 3430 -3488 and 1 3487 2915 -3489 ite 25 3488 26 1213 -3490 next 25 1213 3489 -3491 and 1 2973 3430 -3492 and 1 3491 2915 -3493 ite 25 3492 26 1214 -3494 next 25 1214 3493 -3495 and 1 2982 3430 -3496 and 1 3495 2915 -3497 ite 25 3496 26 1215 -3498 next 25 1215 3497 -3499 and 1 2987 3430 -3500 and 1 3499 2915 -3501 ite 25 3500 26 1216 -3502 next 25 1216 3501 -3503 and 1 2921 3356 -3504 and 1 2901 3503 -3505 and 1 3504 2915 -3506 ite 25 3505 26 1217 -3507 next 25 1217 3506 -3508 and 1 2998 3503 -3509 and 1 3508 2915 -3510 ite 25 3509 26 1218 -3511 next 25 1218 3510 -3512 and 1 3003 3503 -3513 and 1 3512 2915 -3514 ite 25 3513 26 1219 -3515 next 25 1219 3514 -3516 and 1 3008 3503 -3517 and 1 3516 2915 -3518 ite 25 3517 26 1220 -3519 next 25 1220 3518 -3520 and 1 2920 3503 -3521 and 1 3520 2915 -3522 ite 25 3521 26 1221 -3523 next 25 1221 3522 -3524 and 1 2929 3503 -3525 and 1 3524 2915 -3526 ite 25 3525 26 1222 -3527 next 25 1222 3526 -3528 and 1 2935 3254 -3529 and 1 3528 2915 -3530 ite 25 3529 26 1223 -3531 next 25 1223 3530 -3532 and 1 2935 3503 -3533 and 1 3532 2915 -3534 ite 25 3533 26 1224 -3535 next 25 1224 3534 -3536 and 1 2941 3503 -3537 and 1 3536 2915 -3538 ite 25 3537 26 1225 -3539 next 25 1225 3538 -3540 and 1 2947 3503 -3541 and 1 3540 2915 -3542 ite 25 3541 26 1226 -3543 next 25 1226 3542 -3544 and 1 2952 3503 -3545 and 1 3544 2915 -3546 ite 25 3545 26 1227 -3547 next 25 1227 3546 -3548 and 1 2957 3503 -3549 and 1 3548 2915 -3550 ite 25 3549 26 1228 -3551 next 25 1228 3550 -3552 and 1 2962 3503 -3553 and 1 3552 2915 -3554 ite 25 3553 26 1229 -3555 next 25 1229 3554 -3556 and 1 2968 3503 -3557 and 1 3556 2915 -3558 ite 25 3557 26 1230 -3559 next 25 1230 3558 -3560 and 1 2973 3503 -3561 and 1 3560 2915 -3562 ite 25 3561 26 1231 -3563 next 25 1231 3562 -3564 and 1 2982 3503 -3565 and 1 3564 2915 -3566 ite 25 3565 26 1232 -3567 next 25 1232 3566 -3568 and 1 2987 3503 -3569 and 1 3568 2915 -3570 ite 25 3569 26 1233 -3571 next 25 1233 3570 -3572 and 1 2941 3254 -3573 and 1 3572 2915 -3574 ite 25 3573 26 1234 -3575 next 25 1234 3574 -3576 and 1 2992 3356 -3577 and 1 2901 3576 -3578 and 1 3577 2915 -3579 ite 25 3578 26 1235 -3580 next 25 1235 3579 -3581 and 1 2998 3576 -3582 and 1 3581 2915 -3583 ite 25 3582 26 1236 -3584 next 25 1236 3583 -3585 and 1 3003 3576 -3586 and 1 3585 2915 -3587 ite 25 3586 26 1237 -3588 next 25 1237 3587 -3589 and 1 3008 3576 -3590 and 1 3589 2915 -3591 ite 25 3590 26 1238 -3592 next 25 1238 3591 -3593 and 1 2920 3576 -3594 and 1 3593 2915 -3595 ite 25 3594 26 1239 -3596 next 25 1239 3595 -3597 and 1 2929 3576 -3598 and 1 3597 2915 -3599 ite 25 3598 26 1240 -3600 next 25 1240 3599 -3601 and 1 2935 3576 -3602 and 1 3601 2915 -3603 ite 25 3602 26 1241 -3604 next 25 1241 3603 -3605 and 1 2941 3576 -3606 and 1 3605 2915 -3607 ite 25 3606 26 1242 -3608 next 25 1242 3607 -3609 and 1 2947 3576 -3610 and 1 3609 2915 -3611 ite 25 3610 26 1243 -3612 next 25 1243 3611 -3613 and 1 2952 3576 -3614 and 1 3613 2915 -3615 ite 25 3614 26 1244 -3616 next 25 1244 3615 -3617 and 1 2947 3254 -3618 and 1 3617 2915 -3619 ite 25 3618 26 1245 -3620 next 25 1245 3619 -3621 and 1 2957 3576 -3622 and 1 3621 2915 -3623 ite 25 3622 26 1246 -3624 next 25 1246 3623 -3625 and 1 2962 3576 -3626 and 1 3625 2915 -3627 ite 25 3626 26 1247 -3628 next 25 1247 3627 -3629 and 1 2968 3576 -3630 and 1 3629 2915 -3631 ite 25 3630 26 1248 -3632 next 25 1248 3631 -3633 and 1 2973 3576 -3634 and 1 3633 2915 -3635 ite 25 3634 26 1249 -3636 next 25 1249 3635 -3637 and 1 2982 3576 -3638 and 1 3637 2915 -3639 ite 25 3638 26 1250 -3640 next 25 1250 3639 -3641 and 1 2987 3576 -3642 and 1 3641 2915 -3643 ite 25 3642 26 1251 -3644 next 25 1251 3643 -3645 and 1 2952 3254 -3646 and 1 3645 2915 -3647 ite 25 3646 26 1252 -3648 next 25 1252 3647 -3649 and 1 2957 3254 -3650 and 1 3649 2915 -3651 ite 25 3650 26 1253 -3652 next 25 1253 3651 -3653 and 1 2962 3254 -3654 and 1 3653 2915 -3655 ite 25 3654 26 1254 -3656 next 25 1254 3655 -3657 and 1 2968 3254 -3658 and 1 3657 2915 -3659 ite 25 3658 26 1255 -3660 next 25 1255 3659 -3661 and 1 2973 3254 -3662 and 1 3661 2915 -3663 ite 25 3662 26 1256 -3664 next 25 1256 3663 -3665 and 1 3003 2912 -3666 and 1 3665 2915 -3667 ite 25 3666 26 1257 -3668 next 25 1257 3667 -3669 and 1 2982 3254 -3670 and 1 3669 2915 -3671 ite 25 3670 26 1258 -3672 next 25 1258 3671 -3673 and 1 2987 3254 -3674 and 1 3673 2915 -3675 ite 25 3674 26 1259 -3676 next 25 1259 3675 -3677 and 1 2921 2911 -3678 and 1 2901 3677 -3679 and 1 3678 2915 -3680 ite 25 3679 26 1260 -3681 next 25 1260 3680 -3682 and 1 2998 3677 -3683 and 1 3682 2915 -3684 ite 25 3683 26 1261 -3685 next 25 1261 3684 -3686 and 1 3003 3677 -3687 and 1 3686 2915 -3688 ite 25 3687 26 1262 -3689 next 25 1262 3688 -3690 and 1 3008 3677 -3691 and 1 3690 2915 -3692 ite 25 3691 26 1263 -3693 next 25 1263 3692 -3694 and 1 2920 3677 -3695 and 1 3694 2915 -3696 ite 25 3695 26 1264 -3697 next 25 1264 3696 -3698 and 1 2929 3677 -3699 and 1 3698 2915 -3700 ite 25 3699 26 1265 -3701 next 25 1265 3700 -3702 and 1 2935 3677 -3703 and 1 3702 2915 -3704 ite 25 3703 26 1266 -3705 next 25 1266 3704 -3706 and 1 2941 3677 -3707 and 1 3706 2915 -3708 ite 25 3707 26 1267 -3709 next 25 1267 3708 -3710 and 1 3008 2912 -3711 and 1 3710 2915 -3712 ite 25 3711 26 1268 -3713 next 25 1268 3712 -3714 and 1 2947 3677 -3715 and 1 3714 2915 -3716 ite 25 3715 26 1269 -3717 next 25 1269 3716 -3718 and 1 2952 3677 -3719 and 1 3718 2915 -3720 ite 25 3719 26 1270 -3721 next 25 1270 3720 -3722 and 1 2957 3677 -3723 and 1 3722 2915 -3724 ite 25 3723 26 1271 -3725 next 25 1271 3724 -3726 and 1 2962 3677 -3727 and 1 3726 2915 -3728 ite 25 3727 26 1272 -3729 next 25 1272 3728 -3730 and 1 2968 3677 -3731 and 1 3730 2915 -3732 ite 25 3731 26 1273 -3733 next 25 1273 3732 -3734 and 1 2973 3677 -3735 and 1 3734 2915 -3736 ite 25 3735 26 1274 -3737 next 25 1274 3736 -3738 and 1 2982 3677 -3739 and 1 3738 2915 -3740 ite 25 3739 26 1275 -3741 next 25 1275 3740 -3742 and 1 2987 3677 -3743 and 1 3742 2915 -3744 ite 25 3743 26 1276 -3745 next 25 1276 3744 -3746 and 1 2992 2911 -3747 and 1 2901 3746 -3748 and 1 3747 2915 -3749 ite 25 3748 26 1277 -3750 next 25 1277 3749 -3751 and 1 2998 3746 -3752 and 1 3751 2915 -3753 ite 25 3752 26 1278 -3754 next 25 1278 3753 -3755 and 1 2920 2912 -3756 and 1 3755 2915 -3757 ite 25 3756 26 1279 -3758 next 25 1279 3757 -3759 and 1 3003 3746 -3760 and 1 3759 2915 -3761 ite 25 3760 26 1280 -3762 next 25 1280 3761 -3763 and 1 3008 3746 -3764 and 1 3763 2915 -3765 ite 25 3764 26 1281 -3766 next 25 1281 3765 -3767 and 1 2920 3746 -3768 and 1 3767 2915 -3769 ite 25 3768 26 1282 -3770 next 25 1282 3769 -3771 and 1 2929 3746 -3772 and 1 3771 2915 -3773 ite 25 3772 26 1283 -3774 next 25 1283 3773 -3775 and 1 2935 3746 -3776 and 1 3775 2915 -3777 ite 25 3776 26 1284 -3778 next 25 1284 3777 -3779 and 1 2941 3746 -3780 and 1 3779 2915 -3781 ite 25 3780 26 1285 -3782 next 25 1285 3781 -3783 and 1 2947 3746 -3784 and 1 3783 2915 -3785 ite 25 3784 26 1286 -3786 next 25 1286 3785 -3787 and 1 2952 3746 -3788 and 1 3787 2915 -3789 ite 25 3788 26 1287 -3790 next 25 1287 3789 -3791 and 1 2957 3746 -3792 and 1 3791 2915 -3793 ite 25 3792 26 1288 -3794 next 25 1288 3793 -3795 and 1 2962 3746 -3796 and 1 3795 2915 -3797 ite 25 3796 26 1289 -3798 next 25 1289 3797 -3799 and 1 2929 2912 -3800 and 1 3799 2915 -3801 ite 25 3800 26 1290 -3802 next 25 1290 3801 -3803 and 1 2968 3746 -3804 and 1 3803 2915 -3805 ite 25 3804 26 1291 -3806 next 25 1291 3805 -3807 and 1 2973 3746 -3808 and 1 3807 2915 -3809 ite 25 3808 26 1292 -3810 next 25 1292 3809 -3811 and 1 2982 3746 -3812 and 1 3811 2915 -3813 ite 25 3812 26 1293 -3814 next 25 1293 3813 -3815 and 1 2987 3746 -3816 and 1 3815 2915 -3817 ite 25 3816 26 1294 -3818 next 25 1294 3817 -3819 and 1 2906 2922 -3820 and 1 2901 3819 -3821 and 1 3820 2915 -3822 ite 25 3821 26 1295 -3823 next 25 1295 3822 -3824 and 1 2998 3819 -3825 and 1 3824 2915 -3826 ite 25 3825 26 1296 -3827 next 25 1296 3826 -3828 and 1 3003 3819 -3829 and 1 3828 2915 -3830 ite 25 3829 26 1297 -3831 next 25 1297 3830 -3832 and 1 3008 3819 -3833 and 1 3832 2915 -3834 ite 25 3833 26 1298 -3835 next 25 1298 3834 -3836 and 1 2920 3819 -3837 and 1 3836 2915 -3838 ite 25 3837 26 1299 -3839 next 25 1299 3838 -3840 and 1 2929 3819 -3841 and 1 3840 2915 -3842 ite 25 3841 26 1300 -3843 next 25 1300 3842 -3844 and 1 2935 2912 -3845 and 1 3844 2915 -3846 ite 25 3845 26 1301 -3847 next 25 1301 3846 -3848 and 1 2935 3819 -3849 and 1 3848 2915 -3850 ite 25 3849 26 1302 -3851 next 25 1302 3850 -3852 and 1 2941 3819 -3853 and 1 3852 2915 -3854 ite 25 3853 26 1303 -3855 next 25 1303 3854 -3856 and 1 2947 3819 -3857 and 1 3856 2915 -3858 ite 25 3857 26 1304 -3859 next 25 1304 3858 -3860 and 1 2952 3819 -3861 and 1 3860 2915 -3862 ite 25 3861 26 1305 -3863 next 25 1305 3862 -3864 and 1 2957 3819 -3865 and 1 3864 2915 -3866 ite 25 3865 26 1306 -3867 next 25 1306 3866 -3868 and 1 2962 3819 -3869 and 1 3868 2915 -3870 ite 25 3869 26 1307 -3871 next 25 1307 3870 -3872 and 1 2968 3819 -3873 and 1 3872 2915 -3874 ite 25 3873 26 1308 -3875 next 25 1308 3874 -3876 and 1 2973 3819 -3877 and 1 3876 2915 -3878 ite 25 3877 26 1309 -3879 next 25 1309 3878 -3880 and 1 2982 3819 -3881 and 1 3880 2915 -3882 ite 25 3881 26 1310 -3883 next 25 1310 3882 -3884 and 1 2987 3819 -3885 and 1 3884 2915 -3886 ite 25 3885 26 1311 -3887 next 25 1311 3886 -3888 and 1 2941 2912 -3889 and 1 3888 2915 -3890 ite 25 3889 26 1312 -3891 next 25 1312 3890 -3892 and 1 3139 2922 -3893 and 1 2901 3892 -3894 and 1 3893 2915 -3895 ite 25 3894 26 1313 -3896 next 25 1313 3895 -3897 and 1 2998 3892 -3898 and 1 3897 2915 -3899 ite 25 3898 26 1314 -3900 next 25 1314 3899 -3901 and 1 3003 3892 -3902 and 1 3901 2915 -3903 ite 25 3902 26 1315 -3904 next 25 1315 3903 -3905 and 1 3008 3892 -3906 and 1 3905 2915 -3907 ite 25 3906 26 1316 -3908 next 25 1316 3907 -3909 and 1 2920 3892 -3910 and 1 3909 2915 -3911 ite 25 3910 26 1317 -3912 next 25 1317 3911 -3913 and 1 2929 3892 -3914 and 1 3913 2915 -3915 ite 25 3914 26 1318 -3916 next 25 1318 3915 -3917 and 1 2935 3892 -3918 and 1 3917 2915 -3919 ite 25 3918 26 1319 -3920 next 25 1319 3919 -3921 and 1 2941 3892 -3922 and 1 3921 2915 -3923 ite 25 3922 26 1320 -3924 next 25 1320 3923 -3925 and 1 2947 3892 -3926 and 1 3925 2915 -3927 ite 25 3926 26 1321 -3928 next 25 1321 3927 -3929 and 1 2952 3892 -3930 and 1 3929 2915 -3931 ite 25 3930 26 1322 -3932 next 25 1322 3931 -3933 and 1 2947 2912 -3934 and 1 3933 2915 -3935 ite 25 3934 26 1323 -3936 next 25 1323 3935 -3937 and 1 2957 3892 -3938 and 1 3937 2915 -3939 ite 25 3938 26 1324 -3940 next 25 1324 3939 -3941 and 1 2962 3892 -3942 and 1 3941 2915 -3943 ite 25 3942 26 1325 -3944 next 25 1325 3943 -3945 and 1 2968 3892 -3946 and 1 3945 2915 -3947 ite 25 3946 26 1326 -3948 next 25 1326 3947 -3949 and 1 2973 3892 -3950 and 1 3949 2915 -3951 ite 25 3950 26 1327 -3952 next 25 1327 3951 -3953 and 1 2982 3892 -3954 and 1 3953 2915 -3955 ite 25 3954 26 1328 -3956 next 25 1328 3955 -3957 and 1 2987 3892 -3958 and 1 3957 2915 -3959 ite 25 3958 26 1329 -3960 next 25 1329 3959 -3961 and 1 2901 2923 -3962 and 1 3961 2915 -3963 ite 25 3962 26 1330 -3964 next 25 1330 3963 -3965 and 1 2998 2923 -3966 and 1 3965 2915 -3967 ite 25 3966 26 1331 -3968 next 25 1331 3967 -3969 and 1 3003 2923 -3970 and 1 3969 2915 -3971 ite 25 3970 26 1332 -3972 next 25 1332 3971 -3973 and 1 3008 2923 -3974 and 1 3973 2915 -3975 ite 25 3974 26 1333 -3976 next 25 1333 3975 -3977 and 1 2952 2912 -3978 and 1 3977 2915 -3979 ite 25 3978 26 1334 -3980 next 25 1334 3979 -3981 ite 28 2267 1339 1337 -3982 ite 28 78 3981 1337 -3983 ite 28 2272 3982 1337 -3984 ite 28 2250 33 1337 -3985 ite 28 2300 3984 3983 -3986 ite 28 2281 3985 1337 -3987 ite 28 80 3986 1337 -3988 ite 28 1349 1337 3987 -3989 ite 28 20 3988 2089 -3990 next 28 1337 3989 -3991 slice 28 1078 23 16 -3992 uext 25 3991 1 -3993 eq 1 269 3992 -3994 ite 17 3993 2252 593 -3995 ite 17 2099 3994 593 -3996 slice 28 1078 15 8 -3997 uext 25 3996 1 -3998 eq 1 269 3997 -3999 ite 17 3998 2098 593 -4000 ite 17 2101 3999 3995 -4001 slice 28 1078 7 0 -4002 uext 25 4001 1 -4003 eq 1 269 4002 -4004 ite 17 4003 2100 593 -4005 ite 17 2103 4004 4000 -4006 ite 17 257 593 1344 -4007 ite 17 2879 2102 4006 -4008 ite 17 2106 4007 4005 -4009 neq 1 269 2082 -4010 and 1 257 4009 -4011 neq 1 269 2066 -4012 and 1 4010 4011 -4013 neq 1 269 2068 -4014 and 1 4012 4013 -4015 ite 17 4014 593 1344 -4016 ite 17 2879 2102 4015 -4017 const 17 0110 -4018 ite 17 2882 4017 4016 -4019 ite 17 2109 4018 4008 -4020 ite 260 257 857 2107 -4021 concat 17 9 4020 -4022 ite 17 2112 4021 4019 -4023 ite 258 257 2699 2110 -4024 concat 17 2699 4023 -4025 ite 17 2115 4024 4022 -4026 ite 17 841 593 1344 -4027 const 28 10011110 -4028 uext 25 4027 1 -4029 eq 1 269 4028 -4030 ite 17 4029 2755 4026 -4031 ite 17 2117 4030 4025 -4032 ite 17 2119 1344 4031 -4033 const 17 0001 -4034 ite 17 2130 4033 4032 -4035 ite 17 842 593 4034 -4036 ite 17 2137 4035 1344 -4037 ite 17 80 593 4036 -4038 ite 17 20 4037 593 -4039 next 17 1344 4038 -4040 ite 28 2250 2089 1345 -4041 ite 28 2296 4040 1345 -4042 ite 28 2281 4041 1345 -4043 ite 28 80 4042 1345 -4044 ite 28 1349 1345 4043 -4045 ite 28 20 4044 2089 -4046 next 28 1345 4045 -4047 ite 28 2250 1337 1346 -4048 ite 28 2296 4047 1346 -4049 ite 28 2281 4048 1346 -4050 ite 28 80 4049 1346 -4051 ite 28 1349 1346 4050 -4052 ite 28 20 4051 2089 -4053 next 28 1346 4052 -4054 ite 17 63 1347 593 -4055 ite 17 2250 4054 1347 -4056 const 17 1110 -4057 ite 17 2250 4056 1347 -4058 ite 17 2291 4057 4055 -4059 ite 17 2250 2290 1347 -4060 ite 17 2293 4059 4058 -4061 ite 17 2250 2292 1347 -4062 ite 17 2253 4061 4060 -4063 ite 17 2250 2252 1347 -4064 ite 17 2254 4063 4062 -4065 ite 17 2250 2098 1347 -4066 ite 17 2255 4065 4064 -4067 ite 17 2250 2100 1347 -4068 ite 17 2256 4067 4066 -4069 ite 17 2250 2102 1347 -4070 ite 17 2296 4069 4068 -4071 const 17 0111 -4072 ite 17 2250 4071 1347 -4073 ite 17 2298 4072 4070 -4074 ite 17 2414 4071 2100 -4075 ite 17 2267 1347 4074 -4076 ite 17 2250 4075 1347 -4077 ite 17 2272 4076 4073 -4078 ite 17 2414 4017 2102 -4079 const 17 0101 -4080 neq 1 29 33 -4081 ite 17 4080 4079 4078 -4082 ite 17 2250 4081 1347 -4083 ite 17 2300 4082 4077 -4084 const 17 0100 -4085 ite 17 2250 4084 1347 -4086 ite 17 2302 4085 4083 -4087 const 17 0011 -4088 ite 17 2250 4087 1347 -4089 ite 17 2304 4088 4086 -4090 ite 17 2250 2755 1347 -4091 ite 17 2306 4090 4089 -4092 ite 17 2250 4033 1347 -4093 ite 17 2276 4092 4091 -4094 ite 17 2281 4093 1347 -4095 ite 17 80 4094 593 -4096 ite 17 1349 593 4095 -4097 ite 17 20 4096 593 -4098 next 17 1347 4097 -4099 const 266 0000000 -4100 uext 266 30 6 -4101 add 266 1348 4100 -4102 ite 266 2267 4101 1348 -4103 ite 266 2250 4102 1348 -4104 ite 266 2272 4103 1348 -4105 ite 266 2250 4099 1348 -4106 ite 266 2300 4105 4104 -4107 ite 266 2281 4106 1348 -4108 ite 266 80 4107 1348 -4109 ite 266 2326 4101 1348 -4110 ite 266 2328 4109 1348 -4111 ite 266 1349 4110 4108 -4112 ite 266 20 4111 4099 -4113 next 266 1348 4112 -4114 ite 1 2328 2327 30 -4115 ite 1 1349 4114 9 -4116 ite 1 20 4115 30 -4117 next 1 1349 4116 -4118 concat 258 161 148 -4119 concat 260 168 4118 -4120 concat 17 173 4119 -4121 concat 57 181 4120 -4122 concat 264 208 4121 -4123 concat 266 219 4122 -4124 concat 28 243 4123 -4125 ite 28 2115 4124 1355 -4126 ite 28 2130 1355 4125 -4127 ite 28 842 1355 4126 -4128 ite 28 2137 4127 1355 -4129 ite 28 80 1355 4128 -4130 ite 28 20 4129 1355 -4131 next 28 1355 4130 -4132 concat 25 9 1345 -4133 eq 1 1355 1346 -4134 neq 1 1355 33 -4135 and 1 4133 4134 -4136 ite 25 4135 4132 1011 -4137 uext 25 1345 1 -4138 neq 1 1362 4137 -4139 ite 25 4138 4136 1362 -4140 ite 25 2096 4139 1362 -4141 ite 25 2128 1362 4140 -4142 ite 25 2130 1362 4141 -4143 ite 25 842 1362 4142 -4144 ite 25 2137 4143 1362 -4145 ite 25 80 1362 4144 -4146 ite 25 20 4145 1011 -4147 next 25 1362 4146 -4148 eq 1 1369 43 -4149 not 1 1367 -4150 or 1 4148 4149 -4151 ite 28 4150 1366 1369 -4152 ite 28 4014 1366 4151 -4153 ite 28 2879 1366 4152 -4154 ite 28 2882 1366 4153 -4155 ite 28 2109 4154 1366 -4156 ite 28 4029 42 1366 -4157 ite 28 2117 4156 4155 -4158 ite 28 2130 1366 4157 -4159 ite 28 842 1366 4158 -4160 ite 28 2137 4159 1366 -4161 ite 28 80 1366 4160 -4162 ite 28 20 4161 1366 -4163 next 28 1366 4162 -4164 ite 1 4150 9 1367 -4165 ite 1 4014 1367 4164 -4166 ite 1 2879 1367 4165 -4167 ite 1 2882 1367 4166 -4168 ite 1 2109 4167 1367 -4169 uext 25 1366 1 -4170 eq 1 269 4169 -4171 ite 1 2112 4170 4168 -4172 ite 1 2130 1367 4171 -4173 ite 1 842 1367 4172 -4174 ite 1 2137 4173 1367 -4175 ite 1 80 1367 4174 -4176 ite 1 20 4175 1367 -4177 next 1 1367 4176 -4178 slice 2026 1376 226 0 -4179 concat 1374 4178 4 -4180 next 1374 1376 4179 -; end of yosys output diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/recount4.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/recount4.btor2 deleted file mode 100644 index c644af1574..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/recount4.btor2 +++ /dev/null @@ -1,15 +0,0 @@ -1 sort bitvec 1 -2 input 1 enable -3 input 1 reset -4 sort bitvec 4 -5 zero 4 -6 state 4 counter -7 init 4 6 5 -8 one 4 -9 add 4 6 8 -10 ite 4 2 9 6 -11 ite 4 3 5 10 -12 next 4 6 11 -13 ones 4 -14 eq 1 6 13 -15 bad 14 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/run-examples.sh b/subprojects/xcfa/btor2xcfa/src/test/resources/run-examples.sh deleted file mode 100644 index 74ccac0256..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/run-examples.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/sh - -readonly DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -readonly OUTDIR=$DIR/out - -# The directory with example witnesses generated from the model checker BtorMC -readonly MCWITNESSDIR=$DIR/mc-witnesses -if [ ! -e $MCWITNESSDIR ] -then - echo "[error] can not find MC witnesses directory" - exit 1 -fi - -BTORSIM=$DIR/../../bin/btorsim -if [ ! -e $BTORSIM ] -then - echo "[error] BtorSim not built" - exit 1 -fi - -invalid () { - : -} - -mkdir -p $OUTDIR - -set -x - -### Check witnesses from model checker -$BTORSIM -c count2.btor2 $MCWITNESSDIR/count2.witnessmc -$BTORSIM -c count4.btor2 $MCWITNESSDIR/count4.witnessmc -$BTORSIM -c factorial4even.btor2 $MCWITNESSDIR/factorial4even.witnessmc -$BTORSIM -c noninitstate.btor2 $MCWITNESSDIR/noninitstate.witnessmc -$BTORSIM -c recount4.btor2 $MCWITNESSDIR/recount4.witnessmc -$BTORSIM -c twocount2.btor2 $MCWITNESSDIR/twocount2.witnessmc -$BTORSIM -c twocount2c.btor2 $MCWITNESSDIR/twocount2c.witnessmc -$BTORSIM -c twocount32.btor2 $MCWITNESSDIR/twocount32.witnessmc - -### Simulation for sat files, simulator produces valid witnesses -# Run simulation -$BTORSIM -b 0 -r 20 count2.btor2 > $OUTDIR/count2.witnesssim -$BTORSIM -b 0 -r 20 count4.btor2 > $OUTDIR/count4.witnesssim -$BTORSIM -b 0 -r 20 factorial4even.btor2 > $OUTDIR/factorial4even.witnesssim -$BTORSIM -b 0 -r 20 noninitstate.btor2 -s 1 > $OUTDIR/noninitstate.witnesssim -$BTORSIM -b 0 -r 20 twocount2.btor2 > $OUTDIR/twocount2.witnesssim -$BTORSIM -b 0 -r 20 twocount2c.btor2 -s 11 > $OUTDIR/twocount2c.witnesssim -$BTORSIM -b 0 -r 20 twocount32.btor2 > $OUTDIR/twocount32.witnesssim -# Check witnesses produced by simulation -$BTORSIM -c count2.btor2 $OUTDIR/count2.witnesssim -$BTORSIM -c count4.btor2 $OUTDIR/count4.witnesssim -$BTORSIM -c factorial4even.btor2 $OUTDIR/factorial4even.witnesssim -$BTORSIM -c noninitstate.btor2 $OUTDIR/noninitstate.witnesssim -$BTORSIM -c twocount2.btor2 $OUTDIR/twocount2.witnesssim -$BTORSIM -c twocount2c.btor2 $OUTDIR/twocount2c.witnesssim -$BTORSIM -c twocount32.btor2 $OUTDIR/twocount32.witnesssim - -### Simulation for sat files, simulator produces invalid witnesses -# Run simulation -$BTORSIM -b 0 -r 20 noninitstate.btor2 > $OUTDIR/noninitstate.nowitnesssim -# Check witness produced by simulation -$BTORSIM -c noninitstate.btor2 $OUTDIR/noninitstate.nowitnesssim || invalid -# Run simulation -$BTORSIM -b 0 -r 20 recount4.btor2 > $OUTDIR/recount4.nowitnesssim -# Check witness produced by simulation -$BTORSIM -c recount4.btor2 $OUTDIR/recount4.nowitnesssim || invalid -# Run simulation -$BTORSIM -b 0 -r 20 twocount2c.btor2 > $OUTDIR/twocount2c.nowitnesssim -# Check witness produced by simulation -$BTORSIM -c twocount2c.btor2 $OUTDIR/twocount2c.nowitnesssim || invalid - - -### Real world example -# Run simulation (invalid witness) -$BTORSIM -b 0 -r 999 ponylink-slaveTXlen-sat.btor2 > $OUTDIR/ponylink-slaveTXlen.nowitnesssim -# Check witness from simulation -$BTORSIM -c ponylink-slaveTXlen-sat.btor2 $OUTDIR/ponylink-slaveTXlen.nowitnesssim || invalid -# Check witness from model checker -$BTORSIM -c ponylink-slaveTXlen-sat.btor2 $MCWITNESSDIR/ponylink-slaveTXlen.witnessmc diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2.btor2 deleted file mode 100644 index c5ba40e660..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2.btor2 +++ /dev/null @@ -1,20 +0,0 @@ -1 sort bitvec 1 -2 sort bitvec 2 -3 input 1 turn -4 zero 2 -5 state 2 a -6 state 2 b -7 init 2 5 4 -8 init 2 6 4 -9 one 2 -10 add 2 5 9 -11 add 2 6 9 -12 ite 2 3 5 10 -13 ite 2 -3 6 11 -14 next 2 5 12 -15 next 2 6 13 -16 ones 2 -17 eq 1 5 16 -18 eq 1 6 16 -19 and 1 17 18 -20 bad 19 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2c.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2c.btor2 deleted file mode 100644 index dee385156c..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount2c.btor2 +++ /dev/null @@ -1,23 +0,0 @@ -1 sort bitvec 1 -2 sort bitvec 2 -3 input 1 s -4 input 1 t -5 zero 2 -6 state 2 a -7 state 2 b -8 init 2 6 5 -9 init 2 7 5 -10 one 2 -11 add 2 6 10 -12 add 2 7 10 -13 ite 2 3 11 6 -14 ite 2 4 12 7 -15 next 2 6 13 -16 next 2 7 14 -17 ones 2 -18 eq 1 6 17 -19 eq 1 7 17 -20 and 1 18 19 -21 bad 20 -22 nand 1 3 4 -23 constraint 22 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount32.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/twocount32.btor2 deleted file mode 100644 index e8010dbfa6..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/twocount32.btor2 +++ /dev/null @@ -1,20 +0,0 @@ - 1 sort bitvec 1 - 2 sort bitvec 32 - 3 input 1 turn - 4 zero 2 - 5 state 2 a - 6 state 2 b - 7 init 2 5 4 - 8 init 2 6 4 - 9 one 2 -10 add 2 5 9 -11 add 2 6 9 -12 ite 2 3 5 10 -13 ite 2 -3 6 11 -14 next 2 5 12 -15 next 2 6 13 -16 constd 2 3 -17 eq 1 5 16 -18 eq 1 6 16 -19 and 1 17 18 -20 bad 19 From 16e2877499c43ae557067ba54a76377786bee1f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sun, 6 Jul 2025 16:31:25 +0200 Subject: [PATCH 32/72] Added some more specific TODOs and extended some --- .../btor2-frontend/src/main/antlr/Btor2.g4 | 2 +- .../theta/frontend/models/Btor2Operation.kt | 71 +- .../frontend/models/Btor2OperatorEnums.kt | 11 +- .../frontend/visitors/OperationVisitor.kt | 7 +- .../anderson.3.prop1-back-serstep.btor2 | 519 +++++++ .../anderson.3.prop1-func-interl.btor2 | 440 ++++++ .../anderson.4.prop1-back-serstep.btor2 | 690 +++++++++ .../anderson.4.prop1-func-interl.btor2 | 582 +++++++ .../anderson.5.prop1-back-serstep.btor2 | 925 ++++++++++++ .../anderson.5.prop1-func-interl.btor2 | 796 ++++++++++ .../anderson.6.prop1-back-serstep.btor2 | 1104 ++++++++++++++ .../anderson.6.prop1-func-interl.btor2 | 944 ++++++++++++ .../anderson.7.prop1-back-serstep.btor2 | 1152 ++++++++++++++ .../anderson.7.prop1-func-interl.btor2 | 998 ++++++++++++ .../anderson.8.prop1-back-serstep.btor2 | 1332 +++++++++++++++++ .../anderson.8.prop1-func-interl.btor2 | 1146 ++++++++++++++ .../btor2xcfa/src/test/resources/count2.btor2 | 12 + 17 files changed, 10687 insertions(+), 44 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index d905ac068d..aef8ddedbe 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -44,7 +44,7 @@ node: ( array_sort | bitvec_sort ) #sort // sort declaration opidx: ext | slice; -ext: id=nid ('uext'|'sext') sid opd1=nid w=NUM; +ext: id=nid operator=('uext'|'sext') sid opd1=nid w=NUM; slice: id=nid 'slice' sid opd1=nid u=NUM l=NUM; op: binop | unop | terop; diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 740a64c534..332d710e25 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -19,19 +19,15 @@ package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.Decls import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.stmt.AssignStmt -import hu.bme.mit.theta.core.stmt.AssumeStmt import hu.bme.mit.theta.core.stmt.Stmt import hu.bme.mit.theta.core.type.Expr -import hu.bme.mit.theta.core.type.abstracttype.NegExpr import hu.bme.mit.theta.core.type.anytype.IteExpr -import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.booltype.BoolType import hu.bme.mit.theta.core.type.bvtype.* import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg import hu.bme.mit.theta.core.type.inttype.IntLitExpr import hu.bme.mit.theta.core.utils.TypeUtils.castBv -import hu.bme.mit.theta.core.utils.TypeUtils.checkAllTypesEqual import java.math.BigInteger @@ -57,9 +53,9 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 Btor2UnaryOperator.INC -> BvAddExpr.create(mutableListOf(operand.getExpr() as Expr, one)) Btor2UnaryOperator.DEC -> BvSubExpr.create(operand.getExpr() as Expr, one) Btor2UnaryOperator.NEG -> BvNegExpr.of(operand.getExpr() as Expr) - Btor2UnaryOperator.REDAND -> BvAndExpr.create(cutValue()) - Btor2UnaryOperator.REDOR -> BvOrExpr.create(cutValue()) - Btor2UnaryOperator.REDXOR -> BvXorExpr.create(cutValue()) + Btor2UnaryOperator.REDAND -> BvAndExpr.create(valueByBits()) + Btor2UnaryOperator.REDOR -> BvOrExpr.create(valueByBits()) + Btor2UnaryOperator.REDXOR -> BvXorExpr.create(valueByBits()) } } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -70,7 +66,7 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 TODO("Not yet implemented") } - fun cutValue() : List> { + fun valueByBits() : List> { val expr = operand.getExpr() as BvLitExpr val value = expr.value // BooleanArray val cut = mutableListOf>() @@ -81,7 +77,7 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 } } -data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val w : UInt) : Btor2Operation(nid, sort) +data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2ExtOperator, val operand: Btor2Node, val w : UInt) : Btor2Operation(nid, sort) { val value = Decls.Var("ext_$nid", BvExprs.BvType(sort.width.toInt())) @@ -90,15 +86,18 @@ data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2So } override fun getExpr(): Expr<*> { - //return BvExt - TODO() + return when(operator) + { + Btor2ExtOperator.SEXT -> TODO("Signed extension not implemented yet") + Btor2ExtOperator.UEXT -> TODO("Unsigned extension not implemented yet") + } } override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } override fun getStmt(negate: Boolean): Stmt { - TODO("Not yet implemented") + TODO("Ext not yet implemented") } } @@ -153,19 +152,19 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.SADDO -> TODO() - Btor2BinaryOperator.SDIVO -> TODO() - Btor2BinaryOperator.SMULO -> TODO() - Btor2BinaryOperator.SSUBO -> TODO() - Btor2BinaryOperator.UADDO -> TODO() - Btor2BinaryOperator.UMULO -> TODO() - Btor2BinaryOperator.USUBO -> TODO() + Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") + Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") + Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") + Btor2BinaryOperator.SSUBO -> TODO("Signed subtraction with overflow not implemented yet") + Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") + Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") + Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.READ -> TODO() + Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") } } @@ -191,19 +190,19 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.SREM -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.SMOD -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.CONCAT -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SADDO -> TODO() - Btor2BinaryOperator.SDIVO -> TODO() - Btor2BinaryOperator.SMULO -> TODO() - Btor2BinaryOperator.SSUBO -> TODO() - Btor2BinaryOperator.UADDO -> TODO() - Btor2BinaryOperator.UMULO -> TODO() - Btor2BinaryOperator.USUBO -> TODO() + Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") + Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") + Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") + Btor2BinaryOperator.SSUBO -> TODO("Signed subtraction with overflow not implemented yet") + Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") + Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") + Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") Btor2BinaryOperator.ROL -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.ROR -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.SLL -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.SRA -> AssignStmt.of(value, getExpr() as Expr) Btor2BinaryOperator.SRL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.READ -> TODO() + Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") } } } @@ -265,13 +264,13 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort Btor2ComparisonOperator.EQ -> AssignStmt.of(value,getExpr() as Expr) Btor2ComparisonOperator.NEQ -> AssignStmt.of(value,getExpr() as Expr) Btor2ComparisonOperator.SLT -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.SLTE -> TODO() - Btor2ComparisonOperator.SGT -> TODO() - Btor2ComparisonOperator.SGTE -> TODO() - Btor2ComparisonOperator.ULT -> TODO() - Btor2ComparisonOperator.ULTE -> TODO() - Btor2ComparisonOperator.UGT -> TODO() - Btor2ComparisonOperator.UGTE -> TODO() + Btor2ComparisonOperator.SLTE -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.SGT -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.SGTE -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.ULT -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.ULTE -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.UGT -> AssignStmt.of(value,getExpr() as Expr) + Btor2ComparisonOperator.UGTE -> AssignStmt.of(value,getExpr() as Expr) } } } @@ -311,7 +310,7 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor return when(operator) { Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr() as Expr) - Btor2TernaryOperator.WRITE -> TODO() + Btor2TernaryOperator.WRITE -> TODO("Write operation not implemented yet") } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt index b36b8a7333..b48612d5cc 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt @@ -15,12 +15,11 @@ */ package hu.bme.mit.theta.frontend.models -// Btor2Ext and Slice Operation already exists -//enum class Btor2IndexedOperator { -// SEXT, -// UEXT, -// SLICE -//} + +enum class Btor2ExtOperator { + SEXT, + UEXT +} enum class Btor2UnaryOperator { NOT, diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index acf87418c9..6a8814fe2b 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -33,12 +33,17 @@ class OperationVisitor : Btor2BaseVisitor() { val nid = idVisitor.visit(ctx.id) val sid = idVisitor.visit(ctx.sid()) val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + val op = when (ctx.operator.text) { + "sext" -> Btor2ExtOperator.SEXT + "uext" -> Btor2ExtOperator.UEXT + else -> throw RuntimeException("Extension operator unknown") + } val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node val w = ctx.w.text.toUInt() check(sort.width == (opd.sort as Btor2BitvecSort).width + w) - val node = Btor2ExtOperation(nid, sort, opd, w) + val node = Btor2ExtOperation(nid, sort, op, opd, w) Btor2Circuit.nodes[nid] = node Btor2Circuit.ops[nid] = node return node diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..2652397887 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-back-serstep.btor2 @@ -0,0 +1,519 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_Slot_2 +11 init 2 10 5 +12 state 2 nextv_next +13 init 2 12 5 +14 state 2 nextv_my_place_P_0 +15 init 2 14 5 +16 state 2 nextv_my_place_P_1 +17 init 2 16 5 +18 state 2 nextv_my_place_P_2 +19 init 2 18 5 +20 zero 1 +21 state 1 nexta_NCS_P_0 +22 init 1 21 20 +23 state 1 nexta_p1_P_0 +24 init 1 23 20 +25 state 1 nexta_p2_P_0 +26 init 1 25 20 +27 state 1 nexta_p3_P_0 +28 init 1 27 20 +29 state 1 nexta_CS_P_0 +30 init 1 29 20 +31 state 1 nexta_NCS_P_1 +32 init 1 31 20 +33 state 1 nexta_p1_P_1 +34 init 1 33 20 +35 state 1 nexta_p2_P_1 +36 init 1 35 20 +37 state 1 nexta_p3_P_1 +38 init 1 37 20 +39 state 1 nexta_CS_P_1 +40 init 1 39 20 +41 state 1 nexta_NCS_P_2 +42 init 1 41 20 +43 state 1 nexta_p1_P_2 +44 init 1 43 20 +45 state 1 nexta_p2_P_2 +46 init 1 45 20 +47 state 1 nexta_p3_P_2 +48 init 1 47 20 +49 state 1 nexta_CS_P_2 +50 init 1 49 20 +51 state 1 dve_initialized +52 init 1 51 20 +53 state 1 dve_valid +54 init 1 53 20 +55 and 1 21 -23 +56 and 1 55 -25 +57 and 1 56 -27 +58 and 1 57 -29 +59 and 1 58 31 +60 and 1 59 -33 +61 and 1 60 -35 +62 and 1 61 -37 +63 and 1 62 -39 +64 and 1 63 41 +65 and 1 64 -43 +66 and 1 65 -45 +67 and 1 66 -47 +68 and 1 67 -49 +69 constd 2 1 +70 eq 1 69 6 +71 and 1 68 70 +72 constd 2 0 +73 eq 1 72 8 +74 and 1 71 73 +75 eq 1 72 10 +76 and 1 74 75 +77 eq 1 72 12 +78 and 1 76 77 +79 eq 1 72 14 +80 and 1 78 79 +81 eq 1 72 16 +82 and 1 80 81 +83 eq 1 72 18 +84 and 1 82 83 +85 and 1 53 84 +86 bad 85 +87 input 2 v_Slot_0 +88 next 2 6 87 +89 input 2 v_Slot_1 +90 next 2 8 89 +91 input 2 v_Slot_2 +92 next 2 10 91 +93 input 2 v_next +94 next 2 12 93 +95 input 2 v_my_place_P_0 +96 next 2 14 95 +97 input 2 v_my_place_P_1 +98 next 2 16 97 +99 input 2 v_my_place_P_2 +100 next 2 18 99 +101 input 1 a_NCS_P_0 +102 next 1 21 101 +103 input 1 a_p1_P_0 +104 next 1 23 103 +105 input 1 a_p2_P_0 +106 next 1 25 105 +107 input 1 a_p3_P_0 +108 next 1 27 107 +109 input 1 a_CS_P_0 +110 next 1 29 109 +111 input 1 a_NCS_P_1 +112 next 1 31 111 +113 input 1 a_p1_P_1 +114 next 1 33 113 +115 input 1 a_p2_P_1 +116 next 1 35 115 +117 input 1 a_p3_P_1 +118 next 1 37 117 +119 input 1 a_CS_P_1 +120 next 1 39 119 +121 input 1 a_NCS_P_2 +122 next 1 41 121 +123 input 1 a_p1_P_2 +124 next 1 43 123 +125 input 1 a_p2_P_2 +126 next 1 45 125 +127 input 1 a_p3_P_2 +128 next 1 47 127 +129 input 1 a_CS_P_2 +130 next 1 49 129 +131 const 1 1 +132 next 1 51 131 +133 input 1 f00 +134 or 1 101 -133 +135 input 1 f01 +136 or 1 103 133 +137 constd 2 2 +138 ite 2 133 93 95 +139 eq 1 137 138 +140 and 1 136 139 +141 or 1 -135 140 +142 and 1 134 141 +143 input 1 f02 +144 and 1 136 -135 +145 and 1 -139 144 +146 or 1 -143 145 +147 and 1 142 146 +148 input 1 f03 +149 or 1 105 135 +150 or 1 149 143 +151 constd 3 0 +152 concat 4 151 138 +153 constd 4 3 +154 srem 4 152 153 +155 slice 2 154 7 0 +156 ite 2 143 155 138 +157 eq 1 72 156 +158 eq 1 69 156 +159 ite 2 158 89 91 +160 ite 2 157 87 159 +161 eq 1 69 160 +162 and 1 150 161 +163 or 1 -148 162 +164 and 1 147 163 +165 or 1 107 148 +166 input 1 f04 +167 or 1 165 -166 +168 and 1 164 167 +169 or 1 109 166 +170 input 1 f05 +171 or 1 169 -170 +172 and 1 168 171 +173 input 1 f06 +174 or 1 111 -173 +175 and 1 172 174 +176 input 1 f07 +177 or 1 113 173 +178 constd 4 1 +179 concat 4 151 93 +180 add 4 178 179 +181 slice 2 180 7 0 +182 ite 2 133 181 93 +183 concat 4 151 182 +184 sub 4 183 153 +185 slice 2 184 7 0 +186 ite 2 135 185 182 +187 ite 2 173 186 97 +188 eq 1 137 187 +189 and 1 177 188 +190 or 1 -176 189 +191 and 1 175 190 +192 input 1 f08 +193 and 1 177 -176 +194 and 1 -188 193 +195 or 1 -192 194 +196 and 1 191 195 +197 input 1 f09 +198 or 1 115 176 +199 or 1 198 192 +200 concat 4 151 187 +201 srem 4 200 153 +202 slice 2 201 7 0 +203 ite 2 192 202 187 +204 eq 1 72 203 +205 constd 4 0 +206 concat 4 151 156 +207 add 4 178 206 +208 srem 4 207 153 +209 eq 1 205 208 +210 and 1 170 209 +211 add 4 153 206 +212 sub 4 211 178 +213 srem 4 212 153 +214 eq 1 205 213 +215 and 1 166 214 +216 ite 2 215 72 87 +217 ite 2 210 69 216 +218 eq 1 69 203 +219 eq 1 178 208 +220 and 1 170 219 +221 eq 1 178 213 +222 and 1 166 221 +223 ite 2 222 72 89 +224 ite 2 220 69 223 +225 constd 4 2 +226 eq 1 225 208 +227 and 1 170 226 +228 eq 1 225 213 +229 and 1 166 228 +230 ite 2 229 72 91 +231 ite 2 227 69 230 +232 ite 2 218 224 231 +233 ite 2 204 217 232 +234 eq 1 69 233 +235 and 1 199 234 +236 or 1 -197 235 +237 and 1 196 236 +238 or 1 117 197 +239 input 1 f10 +240 or 1 238 -239 +241 and 1 237 240 +242 or 1 119 239 +243 input 1 f11 +244 or 1 242 -243 +245 and 1 241 244 +246 input 1 f12 +247 or 1 121 -246 +248 and 1 245 247 +249 input 1 f13 +250 or 1 123 246 +251 concat 4 151 186 +252 add 4 178 251 +253 slice 2 252 7 0 +254 ite 2 173 253 186 +255 concat 4 151 254 +256 sub 4 255 153 +257 slice 2 256 7 0 +258 ite 2 176 257 254 +259 ite 2 246 258 99 +260 eq 1 137 259 +261 and 1 250 260 +262 or 1 -249 261 +263 and 1 248 262 +264 input 1 f14 +265 and 1 250 -249 +266 and 1 -260 265 +267 or 1 -264 266 +268 and 1 263 267 +269 input 1 f15 +270 or 1 125 249 +271 or 1 270 264 +272 concat 4 151 259 +273 srem 4 272 153 +274 slice 2 273 7 0 +275 ite 2 264 274 259 +276 eq 1 72 275 +277 concat 4 151 203 +278 add 4 178 277 +279 srem 4 278 153 +280 eq 1 205 279 +281 and 1 243 280 +282 add 4 153 277 +283 sub 4 282 178 +284 srem 4 283 153 +285 eq 1 205 284 +286 and 1 239 285 +287 ite 2 286 72 217 +288 ite 2 281 69 287 +289 eq 1 69 275 +290 eq 1 178 279 +291 and 1 243 290 +292 eq 1 178 284 +293 and 1 239 292 +294 ite 2 293 72 224 +295 ite 2 291 69 294 +296 eq 1 225 279 +297 and 1 243 296 +298 eq 1 225 284 +299 and 1 239 298 +300 ite 2 299 72 231 +301 ite 2 297 69 300 +302 ite 2 289 295 301 +303 ite 2 276 288 302 +304 eq 1 69 303 +305 and 1 271 304 +306 or 1 -269 305 +307 and 1 268 306 +308 or 1 127 269 +309 input 1 f16 +310 or 1 308 -309 +311 and 1 307 310 +312 or 1 129 309 +313 input 1 f17 +314 or 1 312 -313 +315 and 1 311 314 +316 or 1 133 135 +317 or 1 143 316 +318 or 1 148 317 +319 or 1 166 318 +320 or 1 170 319 +321 or 1 173 320 +322 or 1 176 321 +323 or 1 192 322 +324 or 1 197 323 +325 or 1 239 324 +326 or 1 243 325 +327 or 1 246 326 +328 or 1 249 327 +329 or 1 264 328 +330 or 1 269 329 +331 or 1 309 330 +332 or 1 313 331 +333 and 1 315 332 +334 and 1 101 103 +335 or 1 101 103 +336 and 1 105 335 +337 or 1 334 336 +338 or 1 105 335 +339 and 1 107 338 +340 or 1 337 339 +341 or 1 107 338 +342 and 1 109 341 +343 or 1 340 342 +344 or 1 109 341 +345 and 1 -343 344 +346 and 1 111 113 +347 or 1 111 113 +348 and 1 115 347 +349 or 1 346 348 +350 or 1 115 347 +351 and 1 117 350 +352 or 1 349 351 +353 or 1 117 350 +354 and 1 119 353 +355 or 1 352 354 +356 and 1 345 -355 +357 or 1 119 353 +358 and 1 356 357 +359 and 1 121 123 +360 or 1 121 123 +361 and 1 125 360 +362 or 1 359 361 +363 or 1 125 360 +364 and 1 127 363 +365 or 1 362 364 +366 or 1 127 363 +367 and 1 129 366 +368 or 1 365 367 +369 and 1 358 -368 +370 or 1 129 366 +371 and 1 369 370 +372 and 1 333 371 +373 and 1 144 -143 +374 and 1 101 -133 +375 or 1 374 170 +376 and 1 373 375 +377 and 1 150 -148 +378 or 1 373 375 +379 and 1 377 378 +380 or 1 376 379 +381 and 1 165 -166 +382 or 1 377 378 +383 and 1 381 382 +384 or 1 380 383 +385 and 1 169 -170 +386 or 1 381 382 +387 and 1 385 386 +388 or 1 384 387 +389 or 1 385 386 +390 and 1 -388 389 +391 and 1 193 -192 +392 and 1 111 -173 +393 or 1 392 243 +394 and 1 391 393 +395 and 1 199 -197 +396 or 1 391 393 +397 and 1 395 396 +398 or 1 394 397 +399 and 1 238 -239 +400 or 1 395 396 +401 and 1 399 400 +402 or 1 398 401 +403 and 1 242 -243 +404 or 1 399 400 +405 and 1 403 404 +406 or 1 402 405 +407 and 1 390 -406 +408 or 1 403 404 +409 and 1 407 408 +410 and 1 265 -264 +411 and 1 121 -246 +412 or 1 411 313 +413 and 1 410 412 +414 and 1 271 -269 +415 or 1 410 412 +416 and 1 414 415 +417 or 1 413 416 +418 and 1 308 -309 +419 or 1 414 415 +420 and 1 418 419 +421 or 1 417 420 +422 and 1 312 -313 +423 or 1 418 419 +424 and 1 422 423 +425 or 1 421 424 +426 and 1 409 -425 +427 or 1 422 423 +428 and 1 426 427 +429 and 1 372 428 +430 concat 4 151 275 +431 add 4 178 430 +432 srem 4 431 153 +433 eq 1 205 432 +434 and 1 313 433 +435 add 4 153 430 +436 sub 4 435 178 +437 srem 4 436 153 +438 eq 1 205 437 +439 and 1 309 438 +440 ite 2 439 72 288 +441 ite 2 434 69 440 +442 eq 1 441 6 +443 and 1 429 442 +444 eq 1 178 432 +445 and 1 313 444 +446 eq 1 178 437 +447 and 1 309 446 +448 ite 2 447 72 295 +449 ite 2 445 69 448 +450 eq 1 449 8 +451 and 1 443 450 +452 eq 1 225 432 +453 and 1 313 452 +454 eq 1 225 437 +455 and 1 309 454 +456 ite 2 455 72 301 +457 ite 2 453 69 456 +458 eq 1 457 10 +459 and 1 451 458 +460 concat 4 151 258 +461 add 4 178 460 +462 slice 2 461 7 0 +463 ite 2 246 462 258 +464 concat 4 151 463 +465 sub 4 464 153 +466 slice 2 465 7 0 +467 ite 2 249 466 463 +468 eq 1 467 12 +469 and 1 459 468 +470 eq 1 156 14 +471 and 1 469 470 +472 eq 1 203 16 +473 and 1 471 472 +474 eq 1 275 18 +475 and 1 473 474 +476 eq 1 375 21 +477 and 1 475 476 +478 eq 1 373 23 +479 and 1 477 478 +480 eq 1 377 25 +481 and 1 479 480 +482 eq 1 381 27 +483 and 1 481 482 +484 eq 1 385 29 +485 and 1 483 484 +486 eq 1 393 31 +487 and 1 485 486 +488 eq 1 391 33 +489 and 1 487 488 +490 eq 1 395 35 +491 and 1 489 490 +492 eq 1 399 37 +493 and 1 491 492 +494 eq 1 403 39 +495 and 1 493 494 +496 eq 1 412 41 +497 and 1 495 496 +498 eq 1 410 43 +499 and 1 497 498 +500 eq 1 414 45 +501 and 1 499 500 +502 eq 1 418 47 +503 and 1 501 502 +504 eq 1 422 49 +505 and 1 503 504 +506 and 1 505 53 +507 ite 4 109 178 205 +508 ite 4 119 178 205 +509 add 4 507 508 +510 ite 4 129 178 205 +511 add 4 509 510 +512 ulte 1 511 178 +513 ite 1 51 506 -512 +514 next 1 53 513 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-func-interl.btor2 new file mode 100644 index 0000000000..80b801724e --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-func-interl.btor2 @@ -0,0 +1,440 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_Slot_0 +7 init 2 6 5 +8 state 2 v_Slot_1 +9 init 2 8 5 +10 state 2 v_Slot_2 +11 init 2 10 5 +12 state 2 v_next +13 init 2 12 5 +14 state 2 v_my_place_P_0 +15 init 2 14 5 +16 state 2 v_my_place_P_1 +17 init 2 16 5 +18 state 2 v_my_place_P_2 +19 init 2 18 5 +20 zero 1 +21 state 1 a_NCS_P_0 +22 init 1 21 20 +23 state 1 a_p1_P_0 +24 init 1 23 20 +25 state 1 a_p2_P_0 +26 init 1 25 20 +27 state 1 a_p3_P_0 +28 init 1 27 20 +29 state 1 a_CS_P_0 +30 init 1 29 20 +31 state 1 a_NCS_P_1 +32 init 1 31 20 +33 state 1 a_p1_P_1 +34 init 1 33 20 +35 state 1 a_p2_P_1 +36 init 1 35 20 +37 state 1 a_p3_P_1 +38 init 1 37 20 +39 state 1 a_CS_P_1 +40 init 1 39 20 +41 state 1 a_NCS_P_2 +42 init 1 41 20 +43 state 1 a_p1_P_2 +44 init 1 43 20 +45 state 1 a_p2_P_2 +46 init 1 45 20 +47 state 1 a_p3_P_2 +48 init 1 47 20 +49 state 1 a_CS_P_2 +50 init 1 49 20 +51 state 1 dve_invalid +52 init 1 51 20 +53 constd 4 1 +54 constd 4 0 +55 ite 4 29 53 54 +56 ite 4 39 53 54 +57 add 4 55 56 +58 ite 4 49 53 54 +59 add 4 57 58 +60 ulte 1 59 53 +61 and 1 -51 -60 +62 bad 61 +63 constd 2 1 +64 input 1 f17 +65 constd 3 0 +66 concat 4 65 18 +67 add 4 53 66 +68 constd 4 3 +69 srem 4 67 68 +70 eq 1 54 69 +71 and 1 64 70 +72 input 1 f16 +73 add 4 68 66 +74 sub 4 73 53 +75 srem 4 74 68 +76 eq 1 54 75 +77 and 1 72 76 +78 constd 2 0 +79 input 1 f11 +80 concat 4 65 16 +81 add 4 53 80 +82 srem 4 81 68 +83 eq 1 54 82 +84 and 1 79 83 +85 input 1 f10 +86 add 4 68 80 +87 sub 4 86 53 +88 srem 4 87 68 +89 eq 1 54 88 +90 and 1 85 89 +91 input 1 f05 +92 concat 4 65 14 +93 add 4 53 92 +94 srem 4 93 68 +95 eq 1 54 94 +96 and 1 91 95 +97 input 1 f04 +98 add 4 68 92 +99 sub 4 98 53 +100 srem 4 99 68 +101 eq 1 54 100 +102 and 1 97 101 +103 xor 2 63 6 +104 ite 2 102 78 103 +105 ite 2 96 63 104 +106 ite 2 90 78 105 +107 ite 2 84 63 106 +108 ite 2 77 78 107 +109 ite 2 71 63 108 +110 xor 2 63 109 +111 next 2 6 110 +112 eq 1 53 69 +113 and 1 64 112 +114 eq 1 53 75 +115 and 1 72 114 +116 eq 1 53 82 +117 and 1 79 116 +118 eq 1 53 88 +119 and 1 85 118 +120 eq 1 53 94 +121 and 1 91 120 +122 eq 1 53 100 +123 and 1 97 122 +124 ite 2 123 78 8 +125 ite 2 121 63 124 +126 ite 2 119 78 125 +127 ite 2 117 63 126 +128 ite 2 115 78 127 +129 ite 2 113 63 128 +130 next 2 8 129 +131 constd 4 2 +132 eq 1 131 69 +133 and 1 64 132 +134 eq 1 131 75 +135 and 1 72 134 +136 eq 1 131 82 +137 and 1 79 136 +138 eq 1 131 88 +139 and 1 85 138 +140 eq 1 131 94 +141 and 1 91 140 +142 eq 1 131 100 +143 and 1 97 142 +144 ite 2 143 78 10 +145 ite 2 141 63 144 +146 ite 2 139 78 145 +147 ite 2 137 63 146 +148 ite 2 135 78 147 +149 ite 2 133 63 148 +150 next 2 10 149 +151 input 1 f13 +152 concat 4 65 12 +153 sub 4 152 68 +154 slice 2 153 7 0 +155 input 1 f12 +156 add 4 53 152 +157 slice 2 156 7 0 +158 input 1 f07 +159 input 1 f06 +160 input 1 f01 +161 input 1 f00 +162 ite 2 161 157 12 +163 ite 2 160 154 162 +164 ite 2 159 157 163 +165 ite 2 158 154 164 +166 ite 2 155 157 165 +167 ite 2 151 154 166 +168 next 2 12 167 +169 input 1 f02 +170 srem 4 92 68 +171 slice 2 170 7 0 +172 ite 2 161 12 14 +173 ite 2 169 171 172 +174 next 2 14 173 +175 input 1 f08 +176 srem 4 80 68 +177 slice 2 176 7 0 +178 ite 2 159 12 16 +179 ite 2 175 177 178 +180 next 2 16 179 +181 input 1 f14 +182 srem 4 66 68 +183 slice 2 182 7 0 +184 ite 2 155 12 18 +185 ite 2 181 183 184 +186 next 2 18 185 +187 and 1 -21 -161 +188 or 1 187 91 +189 next 1 21 -188 +190 or 1 23 161 +191 and 1 190 -160 +192 and 1 191 -169 +193 next 1 23 192 +194 or 1 25 160 +195 or 1 194 169 +196 input 1 f03 +197 and 1 195 -196 +198 next 1 25 197 +199 or 1 27 196 +200 and 1 199 -97 +201 next 1 27 200 +202 or 1 29 97 +203 and 1 202 -91 +204 next 1 29 203 +205 and 1 -31 -159 +206 or 1 205 79 +207 next 1 31 -206 +208 or 1 33 159 +209 and 1 208 -158 +210 and 1 209 -175 +211 next 1 33 210 +212 or 1 35 158 +213 or 1 212 175 +214 input 1 f09 +215 and 1 213 -214 +216 next 1 35 215 +217 or 1 37 214 +218 and 1 217 -85 +219 next 1 37 218 +220 or 1 39 85 +221 and 1 220 -79 +222 next 1 39 221 +223 and 1 -41 -155 +224 or 1 223 64 +225 next 1 41 -224 +226 or 1 43 155 +227 and 1 226 -151 +228 and 1 227 -181 +229 next 1 43 228 +230 or 1 45 151 +231 or 1 230 181 +232 input 1 f15 +233 and 1 231 -232 +234 next 1 45 233 +235 or 1 47 232 +236 and 1 235 -72 +237 next 1 47 236 +238 or 1 49 72 +239 and 1 238 -64 +240 next 1 49 239 +241 or 1 -21 -161 +242 constd 2 2 +243 eq 1 242 14 +244 and 1 23 243 +245 or 1 -160 244 +246 and 1 241 245 +247 and 1 23 -243 +248 or 1 -169 247 +249 and 1 246 248 +250 eq 1 78 14 +251 eq 1 63 14 +252 ite 2 251 8 10 +253 ite 2 250 103 252 +254 eq 1 63 253 +255 and 1 25 254 +256 or 1 -196 255 +257 and 1 249 256 +258 or 1 27 -97 +259 and 1 257 258 +260 or 1 29 -91 +261 and 1 259 260 +262 or 1 -31 -159 +263 and 1 261 262 +264 eq 1 242 16 +265 and 1 33 264 +266 or 1 -158 265 +267 and 1 263 266 +268 and 1 33 -264 +269 or 1 -175 268 +270 and 1 267 269 +271 eq 1 78 16 +272 eq 1 63 16 +273 ite 2 272 8 10 +274 ite 2 271 103 273 +275 eq 1 63 274 +276 and 1 35 275 +277 or 1 -214 276 +278 and 1 270 277 +279 or 1 37 -85 +280 and 1 278 279 +281 or 1 39 -79 +282 and 1 280 281 +283 or 1 -41 -155 +284 and 1 282 283 +285 eq 1 242 18 +286 and 1 43 285 +287 or 1 -151 286 +288 and 1 284 287 +289 and 1 43 -285 +290 or 1 -181 289 +291 and 1 288 290 +292 eq 1 78 18 +293 eq 1 63 18 +294 ite 2 293 8 10 +295 ite 2 292 103 294 +296 eq 1 63 295 +297 and 1 45 296 +298 or 1 -232 297 +299 and 1 291 298 +300 or 1 47 -72 +301 and 1 299 300 +302 or 1 49 -64 +303 and 1 301 302 +304 or 1 161 160 +305 or 1 169 304 +306 or 1 196 305 +307 or 1 97 306 +308 or 1 91 307 +309 or 1 159 308 +310 or 1 158 309 +311 or 1 175 310 +312 or 1 214 311 +313 or 1 85 312 +314 or 1 79 313 +315 or 1 155 314 +316 or 1 151 315 +317 or 1 181 316 +318 or 1 232 317 +319 or 1 72 318 +320 or 1 64 319 +321 and 1 303 320 +322 and 1 161 160 +323 and 1 169 304 +324 or 1 322 323 +325 and 1 196 305 +326 or 1 324 325 +327 and 1 97 306 +328 or 1 326 327 +329 and 1 91 307 +330 or 1 328 329 +331 and 1 159 308 +332 or 1 330 331 +333 and 1 158 309 +334 or 1 332 333 +335 and 1 175 310 +336 or 1 334 335 +337 and 1 214 311 +338 or 1 336 337 +339 and 1 85 312 +340 or 1 338 339 +341 and 1 79 313 +342 or 1 340 341 +343 and 1 155 314 +344 or 1 342 343 +345 and 1 151 315 +346 or 1 344 345 +347 and 1 181 316 +348 or 1 346 347 +349 and 1 232 317 +350 or 1 348 349 +351 and 1 72 318 +352 or 1 350 351 +353 and 1 64 319 +354 or 1 352 353 +355 and 1 321 -354 +356 and 1 -21 23 +357 or 1 -21 23 +358 and 1 25 357 +359 or 1 356 358 +360 or 1 25 357 +361 and 1 27 360 +362 or 1 359 361 +363 or 1 27 360 +364 and 1 29 363 +365 or 1 362 364 +366 or 1 29 363 +367 and 1 -365 366 +368 and 1 -31 33 +369 or 1 -31 33 +370 and 1 35 369 +371 or 1 368 370 +372 or 1 35 369 +373 and 1 37 372 +374 or 1 371 373 +375 or 1 37 372 +376 and 1 39 375 +377 or 1 374 376 +378 and 1 367 -377 +379 or 1 39 375 +380 and 1 378 379 +381 and 1 -41 43 +382 or 1 -41 43 +383 and 1 45 382 +384 or 1 381 383 +385 or 1 45 382 +386 and 1 47 385 +387 or 1 384 386 +388 or 1 47 385 +389 and 1 49 388 +390 or 1 387 389 +391 and 1 380 -390 +392 or 1 49 388 +393 and 1 391 392 +394 and 1 355 393 +395 and 1 192 188 +396 or 1 192 188 +397 and 1 197 396 +398 or 1 395 397 +399 or 1 197 396 +400 and 1 200 399 +401 or 1 398 400 +402 or 1 200 399 +403 and 1 203 402 +404 or 1 401 403 +405 or 1 203 402 +406 and 1 -404 405 +407 and 1 210 206 +408 or 1 210 206 +409 and 1 215 408 +410 or 1 407 409 +411 or 1 215 408 +412 and 1 218 411 +413 or 1 410 412 +414 or 1 218 411 +415 and 1 221 414 +416 or 1 413 415 +417 and 1 406 -416 +418 or 1 221 414 +419 and 1 417 418 +420 and 1 228 224 +421 or 1 228 224 +422 and 1 233 421 +423 or 1 420 422 +424 or 1 233 421 +425 and 1 236 424 +426 or 1 423 425 +427 or 1 236 424 +428 and 1 239 427 +429 or 1 426 428 +430 and 1 419 -429 +431 or 1 239 427 +432 and 1 430 431 +433 and 1 394 432 +434 and 1 433 -51 +435 next 1 51 -434 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..f224822b83 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 @@ -0,0 +1,690 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_Slot_2 +11 init 2 10 5 +12 state 2 nextv_Slot_3 +13 init 2 12 5 +14 state 2 nextv_next +15 init 2 14 5 +16 state 2 nextv_my_place_P_0 +17 init 2 16 5 +18 state 2 nextv_my_place_P_1 +19 init 2 18 5 +20 state 2 nextv_my_place_P_2 +21 init 2 20 5 +22 state 2 nextv_my_place_P_3 +23 init 2 22 5 +24 zero 1 +25 state 1 nexta_NCS_P_0 +26 init 1 25 24 +27 state 1 nexta_p1_P_0 +28 init 1 27 24 +29 state 1 nexta_p2_P_0 +30 init 1 29 24 +31 state 1 nexta_p3_P_0 +32 init 1 31 24 +33 state 1 nexta_CS_P_0 +34 init 1 33 24 +35 state 1 nexta_NCS_P_1 +36 init 1 35 24 +37 state 1 nexta_p1_P_1 +38 init 1 37 24 +39 state 1 nexta_p2_P_1 +40 init 1 39 24 +41 state 1 nexta_p3_P_1 +42 init 1 41 24 +43 state 1 nexta_CS_P_1 +44 init 1 43 24 +45 state 1 nexta_NCS_P_2 +46 init 1 45 24 +47 state 1 nexta_p1_P_2 +48 init 1 47 24 +49 state 1 nexta_p2_P_2 +50 init 1 49 24 +51 state 1 nexta_p3_P_2 +52 init 1 51 24 +53 state 1 nexta_CS_P_2 +54 init 1 53 24 +55 state 1 nexta_NCS_P_3 +56 init 1 55 24 +57 state 1 nexta_p1_P_3 +58 init 1 57 24 +59 state 1 nexta_p2_P_3 +60 init 1 59 24 +61 state 1 nexta_p3_P_3 +62 init 1 61 24 +63 state 1 nexta_CS_P_3 +64 init 1 63 24 +65 state 1 dve_initialized +66 init 1 65 24 +67 state 1 dve_valid +68 init 1 67 24 +69 and 1 25 -27 +70 and 1 69 -29 +71 and 1 70 -31 +72 and 1 71 -33 +73 and 1 72 35 +74 and 1 73 -37 +75 and 1 74 -39 +76 and 1 75 -41 +77 and 1 76 -43 +78 and 1 77 45 +79 and 1 78 -47 +80 and 1 79 -49 +81 and 1 80 -51 +82 and 1 81 -53 +83 and 1 82 55 +84 and 1 83 -57 +85 and 1 84 -59 +86 and 1 85 -61 +87 and 1 86 -63 +88 constd 2 1 +89 eq 1 88 6 +90 and 1 87 89 +91 constd 2 0 +92 eq 1 91 8 +93 and 1 90 92 +94 eq 1 91 10 +95 and 1 93 94 +96 eq 1 91 12 +97 and 1 95 96 +98 eq 1 91 14 +99 and 1 97 98 +100 eq 1 91 16 +101 and 1 99 100 +102 eq 1 91 18 +103 and 1 101 102 +104 eq 1 91 20 +105 and 1 103 104 +106 eq 1 91 22 +107 and 1 105 106 +108 and 1 67 107 +109 bad 108 +110 input 2 v_Slot_0 +111 next 2 6 110 +112 input 2 v_Slot_1 +113 next 2 8 112 +114 input 2 v_Slot_2 +115 next 2 10 114 +116 input 2 v_Slot_3 +117 next 2 12 116 +118 input 2 v_next +119 next 2 14 118 +120 input 2 v_my_place_P_0 +121 next 2 16 120 +122 input 2 v_my_place_P_1 +123 next 2 18 122 +124 input 2 v_my_place_P_2 +125 next 2 20 124 +126 input 2 v_my_place_P_3 +127 next 2 22 126 +128 input 1 a_NCS_P_0 +129 next 1 25 128 +130 input 1 a_p1_P_0 +131 next 1 27 130 +132 input 1 a_p2_P_0 +133 next 1 29 132 +134 input 1 a_p3_P_0 +135 next 1 31 134 +136 input 1 a_CS_P_0 +137 next 1 33 136 +138 input 1 a_NCS_P_1 +139 next 1 35 138 +140 input 1 a_p1_P_1 +141 next 1 37 140 +142 input 1 a_p2_P_1 +143 next 1 39 142 +144 input 1 a_p3_P_1 +145 next 1 41 144 +146 input 1 a_CS_P_1 +147 next 1 43 146 +148 input 1 a_NCS_P_2 +149 next 1 45 148 +150 input 1 a_p1_P_2 +151 next 1 47 150 +152 input 1 a_p2_P_2 +153 next 1 49 152 +154 input 1 a_p3_P_2 +155 next 1 51 154 +156 input 1 a_CS_P_2 +157 next 1 53 156 +158 input 1 a_NCS_P_3 +159 next 1 55 158 +160 input 1 a_p1_P_3 +161 next 1 57 160 +162 input 1 a_p2_P_3 +163 next 1 59 162 +164 input 1 a_p3_P_3 +165 next 1 61 164 +166 input 1 a_CS_P_3 +167 next 1 63 166 +168 const 1 1 +169 next 1 65 168 +170 input 1 f00 +171 or 1 128 -170 +172 input 1 f01 +173 or 1 130 170 +174 constd 2 3 +175 ite 2 170 118 120 +176 eq 1 174 175 +177 and 1 173 176 +178 or 1 -172 177 +179 and 1 171 178 +180 input 1 f02 +181 and 1 173 -172 +182 and 1 -176 181 +183 or 1 -180 182 +184 and 1 179 183 +185 input 1 f03 +186 or 1 132 172 +187 or 1 186 180 +188 constd 3 0 +189 concat 4 188 175 +190 constd 4 4 +191 srem 4 189 190 +192 slice 2 191 7 0 +193 ite 2 180 192 175 +194 eq 1 91 193 +195 eq 1 88 193 +196 constd 2 2 +197 eq 1 196 193 +198 ite 2 197 114 116 +199 ite 2 195 112 198 +200 ite 2 194 110 199 +201 eq 1 88 200 +202 and 1 187 201 +203 or 1 -185 202 +204 and 1 184 203 +205 or 1 134 185 +206 input 1 f04 +207 or 1 205 -206 +208 and 1 204 207 +209 or 1 136 206 +210 input 1 f05 +211 or 1 209 -210 +212 and 1 208 211 +213 input 1 f06 +214 or 1 138 -213 +215 and 1 212 214 +216 input 1 f07 +217 or 1 140 213 +218 constd 4 1 +219 concat 4 188 118 +220 add 4 218 219 +221 slice 2 220 7 0 +222 ite 2 170 221 118 +223 concat 4 188 222 +224 sub 4 223 190 +225 slice 2 224 7 0 +226 ite 2 172 225 222 +227 ite 2 213 226 122 +228 eq 1 174 227 +229 and 1 217 228 +230 or 1 -216 229 +231 and 1 215 230 +232 input 1 f08 +233 and 1 217 -216 +234 and 1 -228 233 +235 or 1 -232 234 +236 and 1 231 235 +237 input 1 f09 +238 or 1 142 216 +239 or 1 238 232 +240 concat 4 188 227 +241 srem 4 240 190 +242 slice 2 241 7 0 +243 ite 2 232 242 227 +244 eq 1 91 243 +245 constd 4 0 +246 concat 4 188 193 +247 add 4 218 246 +248 srem 4 247 190 +249 eq 1 245 248 +250 and 1 210 249 +251 and 1 194 206 +252 ite 2 251 91 110 +253 ite 2 250 88 252 +254 eq 1 88 243 +255 eq 1 218 248 +256 and 1 210 255 +257 and 1 195 206 +258 ite 2 257 91 112 +259 ite 2 256 88 258 +260 eq 1 196 243 +261 constd 4 2 +262 eq 1 261 248 +263 and 1 210 262 +264 and 1 197 206 +265 ite 2 264 91 114 +266 ite 2 263 88 265 +267 constd 4 3 +268 eq 1 267 248 +269 and 1 210 268 +270 eq 1 174 193 +271 and 1 270 206 +272 ite 2 271 91 116 +273 ite 2 269 88 272 +274 ite 2 260 266 273 +275 ite 2 254 259 274 +276 ite 2 244 253 275 +277 eq 1 88 276 +278 and 1 239 277 +279 or 1 -237 278 +280 and 1 236 279 +281 or 1 144 237 +282 input 1 f10 +283 or 1 281 -282 +284 and 1 280 283 +285 or 1 146 282 +286 input 1 f11 +287 or 1 285 -286 +288 and 1 284 287 +289 input 1 f12 +290 or 1 148 -289 +291 and 1 288 290 +292 input 1 f13 +293 or 1 150 289 +294 concat 4 188 226 +295 add 4 218 294 +296 slice 2 295 7 0 +297 ite 2 213 296 226 +298 concat 4 188 297 +299 sub 4 298 190 +300 slice 2 299 7 0 +301 ite 2 216 300 297 +302 ite 2 289 301 124 +303 eq 1 174 302 +304 and 1 293 303 +305 or 1 -292 304 +306 and 1 291 305 +307 input 1 f14 +308 and 1 293 -292 +309 and 1 -303 308 +310 or 1 -307 309 +311 and 1 306 310 +312 input 1 f15 +313 or 1 152 292 +314 or 1 313 307 +315 concat 4 188 302 +316 srem 4 315 190 +317 slice 2 316 7 0 +318 ite 2 307 317 302 +319 eq 1 91 318 +320 concat 4 188 243 +321 add 4 218 320 +322 srem 4 321 190 +323 eq 1 245 322 +324 and 1 286 323 +325 and 1 244 282 +326 ite 2 325 91 253 +327 ite 2 324 88 326 +328 eq 1 88 318 +329 eq 1 218 322 +330 and 1 286 329 +331 and 1 254 282 +332 ite 2 331 91 259 +333 ite 2 330 88 332 +334 eq 1 196 318 +335 eq 1 261 322 +336 and 1 286 335 +337 and 1 260 282 +338 ite 2 337 91 266 +339 ite 2 336 88 338 +340 eq 1 267 322 +341 and 1 286 340 +342 eq 1 174 243 +343 and 1 342 282 +344 ite 2 343 91 273 +345 ite 2 341 88 344 +346 ite 2 334 339 345 +347 ite 2 328 333 346 +348 ite 2 319 327 347 +349 eq 1 88 348 +350 and 1 314 349 +351 or 1 -312 350 +352 and 1 311 351 +353 or 1 154 312 +354 input 1 f16 +355 or 1 353 -354 +356 and 1 352 355 +357 or 1 156 354 +358 input 1 f17 +359 or 1 357 -358 +360 and 1 356 359 +361 input 1 f18 +362 or 1 158 -361 +363 and 1 360 362 +364 input 1 f19 +365 or 1 160 361 +366 concat 4 188 301 +367 add 4 218 366 +368 slice 2 367 7 0 +369 ite 2 289 368 301 +370 concat 4 188 369 +371 sub 4 370 190 +372 slice 2 371 7 0 +373 ite 2 292 372 369 +374 ite 2 361 373 126 +375 eq 1 174 374 +376 and 1 365 375 +377 or 1 -364 376 +378 and 1 363 377 +379 input 1 f20 +380 and 1 365 -364 +381 and 1 -375 380 +382 or 1 -379 381 +383 and 1 378 382 +384 input 1 f21 +385 or 1 162 364 +386 or 1 385 379 +387 concat 4 188 374 +388 srem 4 387 190 +389 slice 2 388 7 0 +390 ite 2 379 389 374 +391 eq 1 91 390 +392 concat 4 188 318 +393 add 4 218 392 +394 srem 4 393 190 +395 eq 1 245 394 +396 and 1 358 395 +397 and 1 319 354 +398 ite 2 397 91 327 +399 ite 2 396 88 398 +400 eq 1 88 390 +401 eq 1 218 394 +402 and 1 358 401 +403 and 1 328 354 +404 ite 2 403 91 333 +405 ite 2 402 88 404 +406 eq 1 196 390 +407 eq 1 261 394 +408 and 1 358 407 +409 and 1 334 354 +410 ite 2 409 91 339 +411 ite 2 408 88 410 +412 eq 1 267 394 +413 and 1 358 412 +414 eq 1 174 318 +415 and 1 414 354 +416 ite 2 415 91 345 +417 ite 2 413 88 416 +418 ite 2 406 411 417 +419 ite 2 400 405 418 +420 ite 2 391 399 419 +421 eq 1 88 420 +422 and 1 386 421 +423 or 1 -384 422 +424 and 1 383 423 +425 or 1 164 384 +426 input 1 f22 +427 or 1 425 -426 +428 and 1 424 427 +429 or 1 166 426 +430 input 1 f23 +431 or 1 429 -430 +432 and 1 428 431 +433 or 1 170 172 +434 or 1 180 433 +435 or 1 185 434 +436 or 1 206 435 +437 or 1 210 436 +438 or 1 213 437 +439 or 1 216 438 +440 or 1 232 439 +441 or 1 237 440 +442 or 1 282 441 +443 or 1 286 442 +444 or 1 289 443 +445 or 1 292 444 +446 or 1 307 445 +447 or 1 312 446 +448 or 1 354 447 +449 or 1 358 448 +450 or 1 361 449 +451 or 1 364 450 +452 or 1 379 451 +453 or 1 384 452 +454 or 1 426 453 +455 or 1 430 454 +456 and 1 432 455 +457 and 1 128 130 +458 or 1 128 130 +459 and 1 132 458 +460 or 1 457 459 +461 or 1 132 458 +462 and 1 134 461 +463 or 1 460 462 +464 or 1 134 461 +465 and 1 136 464 +466 or 1 463 465 +467 or 1 136 464 +468 and 1 -466 467 +469 and 1 138 140 +470 or 1 138 140 +471 and 1 142 470 +472 or 1 469 471 +473 or 1 142 470 +474 and 1 144 473 +475 or 1 472 474 +476 or 1 144 473 +477 and 1 146 476 +478 or 1 475 477 +479 and 1 468 -478 +480 or 1 146 476 +481 and 1 479 480 +482 and 1 148 150 +483 or 1 148 150 +484 and 1 152 483 +485 or 1 482 484 +486 or 1 152 483 +487 and 1 154 486 +488 or 1 485 487 +489 or 1 154 486 +490 and 1 156 489 +491 or 1 488 490 +492 and 1 481 -491 +493 or 1 156 489 +494 and 1 492 493 +495 and 1 158 160 +496 or 1 158 160 +497 and 1 162 496 +498 or 1 495 497 +499 or 1 162 496 +500 and 1 164 499 +501 or 1 498 500 +502 or 1 164 499 +503 and 1 166 502 +504 or 1 501 503 +505 and 1 494 -504 +506 or 1 166 502 +507 and 1 505 506 +508 and 1 456 507 +509 and 1 181 -180 +510 and 1 128 -170 +511 or 1 510 210 +512 and 1 509 511 +513 and 1 187 -185 +514 or 1 509 511 +515 and 1 513 514 +516 or 1 512 515 +517 and 1 205 -206 +518 or 1 513 514 +519 and 1 517 518 +520 or 1 516 519 +521 and 1 209 -210 +522 or 1 517 518 +523 and 1 521 522 +524 or 1 520 523 +525 or 1 521 522 +526 and 1 -524 525 +527 and 1 233 -232 +528 and 1 138 -213 +529 or 1 528 286 +530 and 1 527 529 +531 and 1 239 -237 +532 or 1 527 529 +533 and 1 531 532 +534 or 1 530 533 +535 and 1 281 -282 +536 or 1 531 532 +537 and 1 535 536 +538 or 1 534 537 +539 and 1 285 -286 +540 or 1 535 536 +541 and 1 539 540 +542 or 1 538 541 +543 and 1 526 -542 +544 or 1 539 540 +545 and 1 543 544 +546 and 1 308 -307 +547 and 1 148 -289 +548 or 1 547 358 +549 and 1 546 548 +550 and 1 314 -312 +551 or 1 546 548 +552 and 1 550 551 +553 or 1 549 552 +554 and 1 353 -354 +555 or 1 550 551 +556 and 1 554 555 +557 or 1 553 556 +558 and 1 357 -358 +559 or 1 554 555 +560 and 1 558 559 +561 or 1 557 560 +562 and 1 545 -561 +563 or 1 558 559 +564 and 1 562 563 +565 and 1 380 -379 +566 and 1 158 -361 +567 or 1 566 430 +568 and 1 565 567 +569 and 1 386 -384 +570 or 1 565 567 +571 and 1 569 570 +572 or 1 568 571 +573 and 1 425 -426 +574 or 1 569 570 +575 and 1 573 574 +576 or 1 572 575 +577 and 1 429 -430 +578 or 1 573 574 +579 and 1 577 578 +580 or 1 576 579 +581 and 1 564 -580 +582 or 1 577 578 +583 and 1 581 582 +584 and 1 508 583 +585 concat 4 188 390 +586 add 4 218 585 +587 srem 4 586 190 +588 eq 1 245 587 +589 and 1 430 588 +590 and 1 391 426 +591 ite 2 590 91 399 +592 ite 2 589 88 591 +593 eq 1 592 6 +594 and 1 584 593 +595 eq 1 218 587 +596 and 1 430 595 +597 and 1 400 426 +598 ite 2 597 91 405 +599 ite 2 596 88 598 +600 eq 1 599 8 +601 and 1 594 600 +602 eq 1 261 587 +603 and 1 430 602 +604 and 1 406 426 +605 ite 2 604 91 411 +606 ite 2 603 88 605 +607 eq 1 606 10 +608 and 1 601 607 +609 eq 1 267 587 +610 and 1 430 609 +611 eq 1 174 390 +612 and 1 611 426 +613 ite 2 612 91 417 +614 ite 2 610 88 613 +615 eq 1 614 12 +616 and 1 608 615 +617 concat 4 188 373 +618 add 4 218 617 +619 slice 2 618 7 0 +620 ite 2 361 619 373 +621 concat 4 188 620 +622 sub 4 621 190 +623 slice 2 622 7 0 +624 ite 2 364 623 620 +625 eq 1 624 14 +626 and 1 616 625 +627 eq 1 193 16 +628 and 1 626 627 +629 eq 1 243 18 +630 and 1 628 629 +631 eq 1 318 20 +632 and 1 630 631 +633 eq 1 390 22 +634 and 1 632 633 +635 eq 1 511 25 +636 and 1 634 635 +637 eq 1 509 27 +638 and 1 636 637 +639 eq 1 513 29 +640 and 1 638 639 +641 eq 1 517 31 +642 and 1 640 641 +643 eq 1 521 33 +644 and 1 642 643 +645 eq 1 529 35 +646 and 1 644 645 +647 eq 1 527 37 +648 and 1 646 647 +649 eq 1 531 39 +650 and 1 648 649 +651 eq 1 535 41 +652 and 1 650 651 +653 eq 1 539 43 +654 and 1 652 653 +655 eq 1 548 45 +656 and 1 654 655 +657 eq 1 546 47 +658 and 1 656 657 +659 eq 1 550 49 +660 and 1 658 659 +661 eq 1 554 51 +662 and 1 660 661 +663 eq 1 558 53 +664 and 1 662 663 +665 eq 1 567 55 +666 and 1 664 665 +667 eq 1 565 57 +668 and 1 666 667 +669 eq 1 569 59 +670 and 1 668 669 +671 eq 1 573 61 +672 and 1 670 671 +673 eq 1 577 63 +674 and 1 672 673 +675 and 1 674 67 +676 ite 4 136 218 245 +677 ite 4 146 218 245 +678 add 4 676 677 +679 ite 4 156 218 245 +680 add 4 678 679 +681 ite 4 166 218 245 +682 add 4 680 681 +683 ulte 1 682 218 +684 ite 1 65 675 -683 +685 next 1 67 684 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-func-interl.btor2 new file mode 100644 index 0000000000..577f5a509e --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-func-interl.btor2 @@ -0,0 +1,582 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_Slot_0 +7 init 2 6 5 +8 state 2 v_Slot_1 +9 init 2 8 5 +10 state 2 v_Slot_2 +11 init 2 10 5 +12 state 2 v_Slot_3 +13 init 2 12 5 +14 state 2 v_next +15 init 2 14 5 +16 state 2 v_my_place_P_0 +17 init 2 16 5 +18 state 2 v_my_place_P_1 +19 init 2 18 5 +20 state 2 v_my_place_P_2 +21 init 2 20 5 +22 state 2 v_my_place_P_3 +23 init 2 22 5 +24 zero 1 +25 state 1 a_NCS_P_0 +26 init 1 25 24 +27 state 1 a_p1_P_0 +28 init 1 27 24 +29 state 1 a_p2_P_0 +30 init 1 29 24 +31 state 1 a_p3_P_0 +32 init 1 31 24 +33 state 1 a_CS_P_0 +34 init 1 33 24 +35 state 1 a_NCS_P_1 +36 init 1 35 24 +37 state 1 a_p1_P_1 +38 init 1 37 24 +39 state 1 a_p2_P_1 +40 init 1 39 24 +41 state 1 a_p3_P_1 +42 init 1 41 24 +43 state 1 a_CS_P_1 +44 init 1 43 24 +45 state 1 a_NCS_P_2 +46 init 1 45 24 +47 state 1 a_p1_P_2 +48 init 1 47 24 +49 state 1 a_p2_P_2 +50 init 1 49 24 +51 state 1 a_p3_P_2 +52 init 1 51 24 +53 state 1 a_CS_P_2 +54 init 1 53 24 +55 state 1 a_NCS_P_3 +56 init 1 55 24 +57 state 1 a_p1_P_3 +58 init 1 57 24 +59 state 1 a_p2_P_3 +60 init 1 59 24 +61 state 1 a_p3_P_3 +62 init 1 61 24 +63 state 1 a_CS_P_3 +64 init 1 63 24 +65 state 1 dve_invalid +66 init 1 65 24 +67 constd 4 1 +68 constd 4 0 +69 ite 4 33 67 68 +70 ite 4 43 67 68 +71 add 4 69 70 +72 ite 4 53 67 68 +73 add 4 71 72 +74 ite 4 63 67 68 +75 add 4 73 74 +76 ulte 1 75 67 +77 and 1 -65 -76 +78 bad 77 +79 constd 2 1 +80 input 1 f23 +81 constd 3 0 +82 concat 4 81 22 +83 add 4 67 82 +84 constd 4 4 +85 srem 4 83 84 +86 eq 1 68 85 +87 and 1 80 86 +88 constd 2 0 +89 eq 1 88 22 +90 input 1 f22 +91 and 1 89 90 +92 input 1 f17 +93 concat 4 81 20 +94 add 4 67 93 +95 srem 4 94 84 +96 eq 1 68 95 +97 and 1 92 96 +98 eq 1 88 20 +99 input 1 f16 +100 and 1 98 99 +101 input 1 f11 +102 concat 4 81 18 +103 add 4 67 102 +104 srem 4 103 84 +105 eq 1 68 104 +106 and 1 101 105 +107 eq 1 88 18 +108 input 1 f10 +109 and 1 107 108 +110 input 1 f05 +111 concat 4 81 16 +112 add 4 67 111 +113 srem 4 112 84 +114 eq 1 68 113 +115 and 1 110 114 +116 eq 1 88 16 +117 input 1 f04 +118 and 1 116 117 +119 xor 2 79 6 +120 ite 2 118 88 119 +121 ite 2 115 79 120 +122 ite 2 109 88 121 +123 ite 2 106 79 122 +124 ite 2 100 88 123 +125 ite 2 97 79 124 +126 ite 2 91 88 125 +127 ite 2 87 79 126 +128 xor 2 79 127 +129 next 2 6 128 +130 eq 1 67 85 +131 and 1 80 130 +132 eq 1 79 22 +133 and 1 132 90 +134 eq 1 67 95 +135 and 1 92 134 +136 eq 1 79 20 +137 and 1 136 99 +138 eq 1 67 104 +139 and 1 101 138 +140 eq 1 79 18 +141 and 1 140 108 +142 eq 1 67 113 +143 and 1 110 142 +144 eq 1 79 16 +145 and 1 144 117 +146 ite 2 145 88 8 +147 ite 2 143 79 146 +148 ite 2 141 88 147 +149 ite 2 139 79 148 +150 ite 2 137 88 149 +151 ite 2 135 79 150 +152 ite 2 133 88 151 +153 ite 2 131 79 152 +154 next 2 8 153 +155 constd 4 2 +156 eq 1 155 85 +157 and 1 80 156 +158 constd 2 2 +159 eq 1 158 22 +160 and 1 159 90 +161 eq 1 155 95 +162 and 1 92 161 +163 eq 1 158 20 +164 and 1 163 99 +165 eq 1 155 104 +166 and 1 101 165 +167 eq 1 158 18 +168 and 1 167 108 +169 eq 1 155 113 +170 and 1 110 169 +171 eq 1 158 16 +172 and 1 171 117 +173 ite 2 172 88 10 +174 ite 2 170 79 173 +175 ite 2 168 88 174 +176 ite 2 166 79 175 +177 ite 2 164 88 176 +178 ite 2 162 79 177 +179 ite 2 160 88 178 +180 ite 2 157 79 179 +181 next 2 10 180 +182 constd 4 3 +183 eq 1 182 85 +184 and 1 80 183 +185 constd 2 3 +186 eq 1 185 22 +187 and 1 186 90 +188 eq 1 182 95 +189 and 1 92 188 +190 eq 1 185 20 +191 and 1 190 99 +192 eq 1 182 104 +193 and 1 101 192 +194 eq 1 185 18 +195 and 1 194 108 +196 eq 1 182 113 +197 and 1 110 196 +198 eq 1 185 16 +199 and 1 198 117 +200 ite 2 199 88 12 +201 ite 2 197 79 200 +202 ite 2 195 88 201 +203 ite 2 193 79 202 +204 ite 2 191 88 203 +205 ite 2 189 79 204 +206 ite 2 187 88 205 +207 ite 2 184 79 206 +208 next 2 12 207 +209 input 1 f19 +210 concat 4 81 14 +211 sub 4 210 84 +212 slice 2 211 7 0 +213 input 1 f18 +214 add 4 67 210 +215 slice 2 214 7 0 +216 input 1 f13 +217 input 1 f12 +218 input 1 f07 +219 input 1 f06 +220 input 1 f01 +221 input 1 f00 +222 ite 2 221 215 14 +223 ite 2 220 212 222 +224 ite 2 219 215 223 +225 ite 2 218 212 224 +226 ite 2 217 215 225 +227 ite 2 216 212 226 +228 ite 2 213 215 227 +229 ite 2 209 212 228 +230 next 2 14 229 +231 input 1 f02 +232 srem 4 111 84 +233 slice 2 232 7 0 +234 ite 2 221 14 16 +235 ite 2 231 233 234 +236 next 2 16 235 +237 input 1 f08 +238 srem 4 102 84 +239 slice 2 238 7 0 +240 ite 2 219 14 18 +241 ite 2 237 239 240 +242 next 2 18 241 +243 input 1 f14 +244 srem 4 93 84 +245 slice 2 244 7 0 +246 ite 2 217 14 20 +247 ite 2 243 245 246 +248 next 2 20 247 +249 input 1 f20 +250 srem 4 82 84 +251 slice 2 250 7 0 +252 ite 2 213 14 22 +253 ite 2 249 251 252 +254 next 2 22 253 +255 and 1 -25 -221 +256 or 1 255 110 +257 next 1 25 -256 +258 or 1 27 221 +259 and 1 258 -220 +260 and 1 259 -231 +261 next 1 27 260 +262 or 1 29 220 +263 or 1 262 231 +264 input 1 f03 +265 and 1 263 -264 +266 next 1 29 265 +267 or 1 31 264 +268 and 1 267 -117 +269 next 1 31 268 +270 or 1 33 117 +271 and 1 270 -110 +272 next 1 33 271 +273 and 1 -35 -219 +274 or 1 273 101 +275 next 1 35 -274 +276 or 1 37 219 +277 and 1 276 -218 +278 and 1 277 -237 +279 next 1 37 278 +280 or 1 39 218 +281 or 1 280 237 +282 input 1 f09 +283 and 1 281 -282 +284 next 1 39 283 +285 or 1 41 282 +286 and 1 285 -108 +287 next 1 41 286 +288 or 1 43 108 +289 and 1 288 -101 +290 next 1 43 289 +291 and 1 -45 -217 +292 or 1 291 92 +293 next 1 45 -292 +294 or 1 47 217 +295 and 1 294 -216 +296 and 1 295 -243 +297 next 1 47 296 +298 or 1 49 216 +299 or 1 298 243 +300 input 1 f15 +301 and 1 299 -300 +302 next 1 49 301 +303 or 1 51 300 +304 and 1 303 -99 +305 next 1 51 304 +306 or 1 53 99 +307 and 1 306 -92 +308 next 1 53 307 +309 and 1 -55 -213 +310 or 1 309 80 +311 next 1 55 -310 +312 or 1 57 213 +313 and 1 312 -209 +314 and 1 313 -249 +315 next 1 57 314 +316 or 1 59 209 +317 or 1 316 249 +318 input 1 f21 +319 and 1 317 -318 +320 next 1 59 319 +321 or 1 61 318 +322 and 1 321 -90 +323 next 1 61 322 +324 or 1 63 90 +325 and 1 324 -80 +326 next 1 63 325 +327 or 1 -25 -221 +328 and 1 27 198 +329 or 1 -220 328 +330 and 1 327 329 +331 and 1 27 -198 +332 or 1 -231 331 +333 and 1 330 332 +334 ite 2 171 10 12 +335 ite 2 144 8 334 +336 ite 2 116 119 335 +337 eq 1 79 336 +338 and 1 29 337 +339 or 1 -264 338 +340 and 1 333 339 +341 or 1 31 -117 +342 and 1 340 341 +343 or 1 33 -110 +344 and 1 342 343 +345 or 1 -35 -219 +346 and 1 344 345 +347 and 1 37 194 +348 or 1 -218 347 +349 and 1 346 348 +350 and 1 37 -194 +351 or 1 -237 350 +352 and 1 349 351 +353 ite 2 167 10 12 +354 ite 2 140 8 353 +355 ite 2 107 119 354 +356 eq 1 79 355 +357 and 1 39 356 +358 or 1 -282 357 +359 and 1 352 358 +360 or 1 41 -108 +361 and 1 359 360 +362 or 1 43 -101 +363 and 1 361 362 +364 or 1 -45 -217 +365 and 1 363 364 +366 and 1 47 190 +367 or 1 -216 366 +368 and 1 365 367 +369 and 1 47 -190 +370 or 1 -243 369 +371 and 1 368 370 +372 ite 2 163 10 12 +373 ite 2 136 8 372 +374 ite 2 98 119 373 +375 eq 1 79 374 +376 and 1 49 375 +377 or 1 -300 376 +378 and 1 371 377 +379 or 1 51 -99 +380 and 1 378 379 +381 or 1 53 -92 +382 and 1 380 381 +383 or 1 -55 -213 +384 and 1 382 383 +385 and 1 57 186 +386 or 1 -209 385 +387 and 1 384 386 +388 and 1 57 -186 +389 or 1 -249 388 +390 and 1 387 389 +391 ite 2 159 10 12 +392 ite 2 132 8 391 +393 ite 2 89 119 392 +394 eq 1 79 393 +395 and 1 59 394 +396 or 1 -318 395 +397 and 1 390 396 +398 or 1 61 -90 +399 and 1 397 398 +400 or 1 63 -80 +401 and 1 399 400 +402 or 1 221 220 +403 or 1 231 402 +404 or 1 264 403 +405 or 1 117 404 +406 or 1 110 405 +407 or 1 219 406 +408 or 1 218 407 +409 or 1 237 408 +410 or 1 282 409 +411 or 1 108 410 +412 or 1 101 411 +413 or 1 217 412 +414 or 1 216 413 +415 or 1 243 414 +416 or 1 300 415 +417 or 1 99 416 +418 or 1 92 417 +419 or 1 213 418 +420 or 1 209 419 +421 or 1 249 420 +422 or 1 318 421 +423 or 1 90 422 +424 or 1 80 423 +425 and 1 401 424 +426 and 1 221 220 +427 and 1 231 402 +428 or 1 426 427 +429 and 1 264 403 +430 or 1 428 429 +431 and 1 117 404 +432 or 1 430 431 +433 and 1 110 405 +434 or 1 432 433 +435 and 1 219 406 +436 or 1 434 435 +437 and 1 218 407 +438 or 1 436 437 +439 and 1 237 408 +440 or 1 438 439 +441 and 1 282 409 +442 or 1 440 441 +443 and 1 108 410 +444 or 1 442 443 +445 and 1 101 411 +446 or 1 444 445 +447 and 1 217 412 +448 or 1 446 447 +449 and 1 216 413 +450 or 1 448 449 +451 and 1 243 414 +452 or 1 450 451 +453 and 1 300 415 +454 or 1 452 453 +455 and 1 99 416 +456 or 1 454 455 +457 and 1 92 417 +458 or 1 456 457 +459 and 1 213 418 +460 or 1 458 459 +461 and 1 209 419 +462 or 1 460 461 +463 and 1 249 420 +464 or 1 462 463 +465 and 1 318 421 +466 or 1 464 465 +467 and 1 90 422 +468 or 1 466 467 +469 and 1 80 423 +470 or 1 468 469 +471 and 1 425 -470 +472 and 1 -25 27 +473 or 1 -25 27 +474 and 1 29 473 +475 or 1 472 474 +476 or 1 29 473 +477 and 1 31 476 +478 or 1 475 477 +479 or 1 31 476 +480 and 1 33 479 +481 or 1 478 480 +482 or 1 33 479 +483 and 1 -481 482 +484 and 1 -35 37 +485 or 1 -35 37 +486 and 1 39 485 +487 or 1 484 486 +488 or 1 39 485 +489 and 1 41 488 +490 or 1 487 489 +491 or 1 41 488 +492 and 1 43 491 +493 or 1 490 492 +494 and 1 483 -493 +495 or 1 43 491 +496 and 1 494 495 +497 and 1 -45 47 +498 or 1 -45 47 +499 and 1 49 498 +500 or 1 497 499 +501 or 1 49 498 +502 and 1 51 501 +503 or 1 500 502 +504 or 1 51 501 +505 and 1 53 504 +506 or 1 503 505 +507 and 1 496 -506 +508 or 1 53 504 +509 and 1 507 508 +510 and 1 -55 57 +511 or 1 -55 57 +512 and 1 59 511 +513 or 1 510 512 +514 or 1 59 511 +515 and 1 61 514 +516 or 1 513 515 +517 or 1 61 514 +518 and 1 63 517 +519 or 1 516 518 +520 and 1 509 -519 +521 or 1 63 517 +522 and 1 520 521 +523 and 1 471 522 +524 and 1 260 256 +525 or 1 260 256 +526 and 1 265 525 +527 or 1 524 526 +528 or 1 265 525 +529 and 1 268 528 +530 or 1 527 529 +531 or 1 268 528 +532 and 1 271 531 +533 or 1 530 532 +534 or 1 271 531 +535 and 1 -533 534 +536 and 1 278 274 +537 or 1 278 274 +538 and 1 283 537 +539 or 1 536 538 +540 or 1 283 537 +541 and 1 286 540 +542 or 1 539 541 +543 or 1 286 540 +544 and 1 289 543 +545 or 1 542 544 +546 and 1 535 -545 +547 or 1 289 543 +548 and 1 546 547 +549 and 1 296 292 +550 or 1 296 292 +551 and 1 301 550 +552 or 1 549 551 +553 or 1 301 550 +554 and 1 304 553 +555 or 1 552 554 +556 or 1 304 553 +557 and 1 307 556 +558 or 1 555 557 +559 and 1 548 -558 +560 or 1 307 556 +561 and 1 559 560 +562 and 1 314 310 +563 or 1 314 310 +564 and 1 319 563 +565 or 1 562 564 +566 or 1 319 563 +567 and 1 322 566 +568 or 1 565 567 +569 or 1 322 566 +570 and 1 325 569 +571 or 1 568 570 +572 and 1 561 -571 +573 or 1 325 569 +574 and 1 572 573 +575 and 1 523 574 +576 and 1 575 -65 +577 next 1 65 -576 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..d960b800be --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-back-serstep.btor2 @@ -0,0 +1,925 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_Slot_2 +11 init 2 10 5 +12 state 2 nextv_Slot_3 +13 init 2 12 5 +14 state 2 nextv_Slot_4 +15 init 2 14 5 +16 state 2 nextv_next +17 init 2 16 5 +18 state 2 nextv_my_place_P_0 +19 init 2 18 5 +20 state 2 nextv_my_place_P_1 +21 init 2 20 5 +22 state 2 nextv_my_place_P_2 +23 init 2 22 5 +24 state 2 nextv_my_place_P_3 +25 init 2 24 5 +26 state 2 nextv_my_place_P_4 +27 init 2 26 5 +28 zero 1 +29 state 1 nexta_NCS_P_0 +30 init 1 29 28 +31 state 1 nexta_p1_P_0 +32 init 1 31 28 +33 state 1 nexta_p2_P_0 +34 init 1 33 28 +35 state 1 nexta_p3_P_0 +36 init 1 35 28 +37 state 1 nexta_CS_P_0 +38 init 1 37 28 +39 state 1 nexta_NCS_P_1 +40 init 1 39 28 +41 state 1 nexta_p1_P_1 +42 init 1 41 28 +43 state 1 nexta_p2_P_1 +44 init 1 43 28 +45 state 1 nexta_p3_P_1 +46 init 1 45 28 +47 state 1 nexta_CS_P_1 +48 init 1 47 28 +49 state 1 nexta_NCS_P_2 +50 init 1 49 28 +51 state 1 nexta_p1_P_2 +52 init 1 51 28 +53 state 1 nexta_p2_P_2 +54 init 1 53 28 +55 state 1 nexta_p3_P_2 +56 init 1 55 28 +57 state 1 nexta_CS_P_2 +58 init 1 57 28 +59 state 1 nexta_NCS_P_3 +60 init 1 59 28 +61 state 1 nexta_p1_P_3 +62 init 1 61 28 +63 state 1 nexta_p2_P_3 +64 init 1 63 28 +65 state 1 nexta_p3_P_3 +66 init 1 65 28 +67 state 1 nexta_CS_P_3 +68 init 1 67 28 +69 state 1 nexta_NCS_P_4 +70 init 1 69 28 +71 state 1 nexta_p1_P_4 +72 init 1 71 28 +73 state 1 nexta_p2_P_4 +74 init 1 73 28 +75 state 1 nexta_p3_P_4 +76 init 1 75 28 +77 state 1 nexta_CS_P_4 +78 init 1 77 28 +79 state 1 dve_initialized +80 init 1 79 28 +81 state 1 dve_valid +82 init 1 81 28 +83 and 1 29 -31 +84 and 1 83 -33 +85 and 1 84 -35 +86 and 1 85 -37 +87 and 1 86 39 +88 and 1 87 -41 +89 and 1 88 -43 +90 and 1 89 -45 +91 and 1 90 -47 +92 and 1 91 49 +93 and 1 92 -51 +94 and 1 93 -53 +95 and 1 94 -55 +96 and 1 95 -57 +97 and 1 96 59 +98 and 1 97 -61 +99 and 1 98 -63 +100 and 1 99 -65 +101 and 1 100 -67 +102 and 1 101 69 +103 and 1 102 -71 +104 and 1 103 -73 +105 and 1 104 -75 +106 and 1 105 -77 +107 constd 2 1 +108 eq 1 107 6 +109 and 1 106 108 +110 constd 2 0 +111 eq 1 110 8 +112 and 1 109 111 +113 eq 1 110 10 +114 and 1 112 113 +115 eq 1 110 12 +116 and 1 114 115 +117 eq 1 110 14 +118 and 1 116 117 +119 eq 1 110 16 +120 and 1 118 119 +121 eq 1 110 18 +122 and 1 120 121 +123 eq 1 110 20 +124 and 1 122 123 +125 eq 1 110 22 +126 and 1 124 125 +127 eq 1 110 24 +128 and 1 126 127 +129 eq 1 110 26 +130 and 1 128 129 +131 and 1 81 130 +132 bad 131 +133 input 2 v_Slot_0 +134 next 2 6 133 +135 input 2 v_Slot_1 +136 next 2 8 135 +137 input 2 v_Slot_2 +138 next 2 10 137 +139 input 2 v_Slot_3 +140 next 2 12 139 +141 input 2 v_Slot_4 +142 next 2 14 141 +143 input 2 v_next +144 next 2 16 143 +145 input 2 v_my_place_P_0 +146 next 2 18 145 +147 input 2 v_my_place_P_1 +148 next 2 20 147 +149 input 2 v_my_place_P_2 +150 next 2 22 149 +151 input 2 v_my_place_P_3 +152 next 2 24 151 +153 input 2 v_my_place_P_4 +154 next 2 26 153 +155 input 1 a_NCS_P_0 +156 next 1 29 155 +157 input 1 a_p1_P_0 +158 next 1 31 157 +159 input 1 a_p2_P_0 +160 next 1 33 159 +161 input 1 a_p3_P_0 +162 next 1 35 161 +163 input 1 a_CS_P_0 +164 next 1 37 163 +165 input 1 a_NCS_P_1 +166 next 1 39 165 +167 input 1 a_p1_P_1 +168 next 1 41 167 +169 input 1 a_p2_P_1 +170 next 1 43 169 +171 input 1 a_p3_P_1 +172 next 1 45 171 +173 input 1 a_CS_P_1 +174 next 1 47 173 +175 input 1 a_NCS_P_2 +176 next 1 49 175 +177 input 1 a_p1_P_2 +178 next 1 51 177 +179 input 1 a_p2_P_2 +180 next 1 53 179 +181 input 1 a_p3_P_2 +182 next 1 55 181 +183 input 1 a_CS_P_2 +184 next 1 57 183 +185 input 1 a_NCS_P_3 +186 next 1 59 185 +187 input 1 a_p1_P_3 +188 next 1 61 187 +189 input 1 a_p2_P_3 +190 next 1 63 189 +191 input 1 a_p3_P_3 +192 next 1 65 191 +193 input 1 a_CS_P_3 +194 next 1 67 193 +195 input 1 a_NCS_P_4 +196 next 1 69 195 +197 input 1 a_p1_P_4 +198 next 1 71 197 +199 input 1 a_p2_P_4 +200 next 1 73 199 +201 input 1 a_p3_P_4 +202 next 1 75 201 +203 input 1 a_CS_P_4 +204 next 1 77 203 +205 const 1 1 +206 next 1 79 205 +207 input 1 f00 +208 or 1 155 -207 +209 input 1 f01 +210 or 1 157 207 +211 constd 2 4 +212 ite 2 207 143 145 +213 eq 1 211 212 +214 and 1 210 213 +215 or 1 -209 214 +216 and 1 208 215 +217 input 1 f02 +218 and 1 210 -209 +219 and 1 -213 218 +220 or 1 -217 219 +221 and 1 216 220 +222 input 1 f03 +223 or 1 159 209 +224 or 1 223 217 +225 constd 3 0 +226 concat 4 225 212 +227 constd 4 5 +228 srem 4 226 227 +229 slice 2 228 7 0 +230 ite 2 217 229 212 +231 eq 1 110 230 +232 eq 1 107 230 +233 constd 2 2 +234 eq 1 233 230 +235 constd 2 3 +236 eq 1 235 230 +237 ite 2 236 139 141 +238 ite 2 234 137 237 +239 ite 2 232 135 238 +240 ite 2 231 133 239 +241 eq 1 107 240 +242 and 1 224 241 +243 or 1 -222 242 +244 and 1 221 243 +245 or 1 161 222 +246 input 1 f04 +247 or 1 245 -246 +248 and 1 244 247 +249 or 1 163 246 +250 input 1 f05 +251 or 1 249 -250 +252 and 1 248 251 +253 input 1 f06 +254 or 1 165 -253 +255 and 1 252 254 +256 input 1 f07 +257 or 1 167 253 +258 constd 4 1 +259 concat 4 225 143 +260 add 4 258 259 +261 slice 2 260 7 0 +262 ite 2 207 261 143 +263 concat 4 225 262 +264 sub 4 263 227 +265 slice 2 264 7 0 +266 ite 2 209 265 262 +267 ite 2 253 266 147 +268 eq 1 211 267 +269 and 1 257 268 +270 or 1 -256 269 +271 and 1 255 270 +272 input 1 f08 +273 and 1 257 -256 +274 and 1 -268 273 +275 or 1 -272 274 +276 and 1 271 275 +277 input 1 f09 +278 or 1 169 256 +279 or 1 278 272 +280 concat 4 225 267 +281 srem 4 280 227 +282 slice 2 281 7 0 +283 ite 2 272 282 267 +284 eq 1 110 283 +285 constd 4 0 +286 concat 4 225 230 +287 add 4 258 286 +288 srem 4 287 227 +289 eq 1 285 288 +290 and 1 250 289 +291 add 4 227 286 +292 sub 4 291 258 +293 srem 4 292 227 +294 eq 1 285 293 +295 and 1 246 294 +296 ite 2 295 110 133 +297 ite 2 290 107 296 +298 eq 1 107 283 +299 eq 1 258 288 +300 and 1 250 299 +301 eq 1 258 293 +302 and 1 246 301 +303 ite 2 302 110 135 +304 ite 2 300 107 303 +305 eq 1 233 283 +306 constd 4 2 +307 eq 1 306 288 +308 and 1 250 307 +309 eq 1 306 293 +310 and 1 246 309 +311 ite 2 310 110 137 +312 ite 2 308 107 311 +313 eq 1 235 283 +314 constd 4 3 +315 eq 1 314 288 +316 and 1 250 315 +317 eq 1 314 293 +318 and 1 246 317 +319 ite 2 318 110 139 +320 ite 2 316 107 319 +321 constd 4 4 +322 eq 1 321 288 +323 and 1 250 322 +324 eq 1 321 293 +325 and 1 246 324 +326 ite 2 325 110 141 +327 ite 2 323 107 326 +328 ite 2 313 320 327 +329 ite 2 305 312 328 +330 ite 2 298 304 329 +331 ite 2 284 297 330 +332 eq 1 107 331 +333 and 1 279 332 +334 or 1 -277 333 +335 and 1 276 334 +336 or 1 171 277 +337 input 1 f10 +338 or 1 336 -337 +339 and 1 335 338 +340 or 1 173 337 +341 input 1 f11 +342 or 1 340 -341 +343 and 1 339 342 +344 input 1 f12 +345 or 1 175 -344 +346 and 1 343 345 +347 input 1 f13 +348 or 1 177 344 +349 concat 4 225 266 +350 add 4 258 349 +351 slice 2 350 7 0 +352 ite 2 253 351 266 +353 concat 4 225 352 +354 sub 4 353 227 +355 slice 2 354 7 0 +356 ite 2 256 355 352 +357 ite 2 344 356 149 +358 eq 1 211 357 +359 and 1 348 358 +360 or 1 -347 359 +361 and 1 346 360 +362 input 1 f14 +363 and 1 348 -347 +364 and 1 -358 363 +365 or 1 -362 364 +366 and 1 361 365 +367 input 1 f15 +368 or 1 179 347 +369 or 1 368 362 +370 concat 4 225 357 +371 srem 4 370 227 +372 slice 2 371 7 0 +373 ite 2 362 372 357 +374 eq 1 110 373 +375 concat 4 225 283 +376 add 4 258 375 +377 srem 4 376 227 +378 eq 1 285 377 +379 and 1 341 378 +380 add 4 227 375 +381 sub 4 380 258 +382 srem 4 381 227 +383 eq 1 285 382 +384 and 1 337 383 +385 ite 2 384 110 297 +386 ite 2 379 107 385 +387 eq 1 107 373 +388 eq 1 258 377 +389 and 1 341 388 +390 eq 1 258 382 +391 and 1 337 390 +392 ite 2 391 110 304 +393 ite 2 389 107 392 +394 eq 1 233 373 +395 eq 1 306 377 +396 and 1 341 395 +397 eq 1 306 382 +398 and 1 337 397 +399 ite 2 398 110 312 +400 ite 2 396 107 399 +401 eq 1 235 373 +402 eq 1 314 377 +403 and 1 341 402 +404 eq 1 314 382 +405 and 1 337 404 +406 ite 2 405 110 320 +407 ite 2 403 107 406 +408 eq 1 321 377 +409 and 1 341 408 +410 eq 1 321 382 +411 and 1 337 410 +412 ite 2 411 110 327 +413 ite 2 409 107 412 +414 ite 2 401 407 413 +415 ite 2 394 400 414 +416 ite 2 387 393 415 +417 ite 2 374 386 416 +418 eq 1 107 417 +419 and 1 369 418 +420 or 1 -367 419 +421 and 1 366 420 +422 or 1 181 367 +423 input 1 f16 +424 or 1 422 -423 +425 and 1 421 424 +426 or 1 183 423 +427 input 1 f17 +428 or 1 426 -427 +429 and 1 425 428 +430 input 1 f18 +431 or 1 185 -430 +432 and 1 429 431 +433 input 1 f19 +434 or 1 187 430 +435 concat 4 225 356 +436 add 4 258 435 +437 slice 2 436 7 0 +438 ite 2 344 437 356 +439 concat 4 225 438 +440 sub 4 439 227 +441 slice 2 440 7 0 +442 ite 2 347 441 438 +443 ite 2 430 442 151 +444 eq 1 211 443 +445 and 1 434 444 +446 or 1 -433 445 +447 and 1 432 446 +448 input 1 f20 +449 and 1 434 -433 +450 and 1 -444 449 +451 or 1 -448 450 +452 and 1 447 451 +453 input 1 f21 +454 or 1 189 433 +455 or 1 454 448 +456 concat 4 225 443 +457 srem 4 456 227 +458 slice 2 457 7 0 +459 ite 2 448 458 443 +460 eq 1 110 459 +461 concat 4 225 373 +462 add 4 258 461 +463 srem 4 462 227 +464 eq 1 285 463 +465 and 1 427 464 +466 add 4 227 461 +467 sub 4 466 258 +468 srem 4 467 227 +469 eq 1 285 468 +470 and 1 423 469 +471 ite 2 470 110 386 +472 ite 2 465 107 471 +473 eq 1 107 459 +474 eq 1 258 463 +475 and 1 427 474 +476 eq 1 258 468 +477 and 1 423 476 +478 ite 2 477 110 393 +479 ite 2 475 107 478 +480 eq 1 233 459 +481 eq 1 306 463 +482 and 1 427 481 +483 eq 1 306 468 +484 and 1 423 483 +485 ite 2 484 110 400 +486 ite 2 482 107 485 +487 eq 1 235 459 +488 eq 1 314 463 +489 and 1 427 488 +490 eq 1 314 468 +491 and 1 423 490 +492 ite 2 491 110 407 +493 ite 2 489 107 492 +494 eq 1 321 463 +495 and 1 427 494 +496 eq 1 321 468 +497 and 1 423 496 +498 ite 2 497 110 413 +499 ite 2 495 107 498 +500 ite 2 487 493 499 +501 ite 2 480 486 500 +502 ite 2 473 479 501 +503 ite 2 460 472 502 +504 eq 1 107 503 +505 and 1 455 504 +506 or 1 -453 505 +507 and 1 452 506 +508 or 1 191 453 +509 input 1 f22 +510 or 1 508 -509 +511 and 1 507 510 +512 or 1 193 509 +513 input 1 f23 +514 or 1 512 -513 +515 and 1 511 514 +516 input 1 f24 +517 or 1 195 -516 +518 and 1 515 517 +519 input 1 f25 +520 or 1 197 516 +521 concat 4 225 442 +522 add 4 258 521 +523 slice 2 522 7 0 +524 ite 2 430 523 442 +525 concat 4 225 524 +526 sub 4 525 227 +527 slice 2 526 7 0 +528 ite 2 433 527 524 +529 ite 2 516 528 153 +530 eq 1 211 529 +531 and 1 520 530 +532 or 1 -519 531 +533 and 1 518 532 +534 input 1 f26 +535 and 1 520 -519 +536 and 1 -530 535 +537 or 1 -534 536 +538 and 1 533 537 +539 input 1 f27 +540 or 1 199 519 +541 or 1 540 534 +542 concat 4 225 529 +543 srem 4 542 227 +544 slice 2 543 7 0 +545 ite 2 534 544 529 +546 eq 1 110 545 +547 concat 4 225 459 +548 add 4 258 547 +549 srem 4 548 227 +550 eq 1 285 549 +551 and 1 513 550 +552 add 4 227 547 +553 sub 4 552 258 +554 srem 4 553 227 +555 eq 1 285 554 +556 and 1 509 555 +557 ite 2 556 110 472 +558 ite 2 551 107 557 +559 eq 1 107 545 +560 eq 1 258 549 +561 and 1 513 560 +562 eq 1 258 554 +563 and 1 509 562 +564 ite 2 563 110 479 +565 ite 2 561 107 564 +566 eq 1 233 545 +567 eq 1 306 549 +568 and 1 513 567 +569 eq 1 306 554 +570 and 1 509 569 +571 ite 2 570 110 486 +572 ite 2 568 107 571 +573 eq 1 235 545 +574 eq 1 314 549 +575 and 1 513 574 +576 eq 1 314 554 +577 and 1 509 576 +578 ite 2 577 110 493 +579 ite 2 575 107 578 +580 eq 1 321 549 +581 and 1 513 580 +582 eq 1 321 554 +583 and 1 509 582 +584 ite 2 583 110 499 +585 ite 2 581 107 584 +586 ite 2 573 579 585 +587 ite 2 566 572 586 +588 ite 2 559 565 587 +589 ite 2 546 558 588 +590 eq 1 107 589 +591 and 1 541 590 +592 or 1 -539 591 +593 and 1 538 592 +594 or 1 201 539 +595 input 1 f28 +596 or 1 594 -595 +597 and 1 593 596 +598 or 1 203 595 +599 input 1 f29 +600 or 1 598 -599 +601 and 1 597 600 +602 or 1 207 209 +603 or 1 217 602 +604 or 1 222 603 +605 or 1 246 604 +606 or 1 250 605 +607 or 1 253 606 +608 or 1 256 607 +609 or 1 272 608 +610 or 1 277 609 +611 or 1 337 610 +612 or 1 341 611 +613 or 1 344 612 +614 or 1 347 613 +615 or 1 362 614 +616 or 1 367 615 +617 or 1 423 616 +618 or 1 427 617 +619 or 1 430 618 +620 or 1 433 619 +621 or 1 448 620 +622 or 1 453 621 +623 or 1 509 622 +624 or 1 513 623 +625 or 1 516 624 +626 or 1 519 625 +627 or 1 534 626 +628 or 1 539 627 +629 or 1 595 628 +630 or 1 599 629 +631 and 1 601 630 +632 and 1 155 157 +633 or 1 155 157 +634 and 1 159 633 +635 or 1 632 634 +636 or 1 159 633 +637 and 1 161 636 +638 or 1 635 637 +639 or 1 161 636 +640 and 1 163 639 +641 or 1 638 640 +642 or 1 163 639 +643 and 1 -641 642 +644 and 1 165 167 +645 or 1 165 167 +646 and 1 169 645 +647 or 1 644 646 +648 or 1 169 645 +649 and 1 171 648 +650 or 1 647 649 +651 or 1 171 648 +652 and 1 173 651 +653 or 1 650 652 +654 and 1 643 -653 +655 or 1 173 651 +656 and 1 654 655 +657 and 1 175 177 +658 or 1 175 177 +659 and 1 179 658 +660 or 1 657 659 +661 or 1 179 658 +662 and 1 181 661 +663 or 1 660 662 +664 or 1 181 661 +665 and 1 183 664 +666 or 1 663 665 +667 and 1 656 -666 +668 or 1 183 664 +669 and 1 667 668 +670 and 1 185 187 +671 or 1 185 187 +672 and 1 189 671 +673 or 1 670 672 +674 or 1 189 671 +675 and 1 191 674 +676 or 1 673 675 +677 or 1 191 674 +678 and 1 193 677 +679 or 1 676 678 +680 and 1 669 -679 +681 or 1 193 677 +682 and 1 680 681 +683 and 1 195 197 +684 or 1 195 197 +685 and 1 199 684 +686 or 1 683 685 +687 or 1 199 684 +688 and 1 201 687 +689 or 1 686 688 +690 or 1 201 687 +691 and 1 203 690 +692 or 1 689 691 +693 and 1 682 -692 +694 or 1 203 690 +695 and 1 693 694 +696 and 1 631 695 +697 and 1 218 -217 +698 and 1 155 -207 +699 or 1 698 250 +700 and 1 697 699 +701 and 1 224 -222 +702 or 1 697 699 +703 and 1 701 702 +704 or 1 700 703 +705 and 1 245 -246 +706 or 1 701 702 +707 and 1 705 706 +708 or 1 704 707 +709 and 1 249 -250 +710 or 1 705 706 +711 and 1 709 710 +712 or 1 708 711 +713 or 1 709 710 +714 and 1 -712 713 +715 and 1 273 -272 +716 and 1 165 -253 +717 or 1 716 341 +718 and 1 715 717 +719 and 1 279 -277 +720 or 1 715 717 +721 and 1 719 720 +722 or 1 718 721 +723 and 1 336 -337 +724 or 1 719 720 +725 and 1 723 724 +726 or 1 722 725 +727 and 1 340 -341 +728 or 1 723 724 +729 and 1 727 728 +730 or 1 726 729 +731 and 1 714 -730 +732 or 1 727 728 +733 and 1 731 732 +734 and 1 363 -362 +735 and 1 175 -344 +736 or 1 735 427 +737 and 1 734 736 +738 and 1 369 -367 +739 or 1 734 736 +740 and 1 738 739 +741 or 1 737 740 +742 and 1 422 -423 +743 or 1 738 739 +744 and 1 742 743 +745 or 1 741 744 +746 and 1 426 -427 +747 or 1 742 743 +748 and 1 746 747 +749 or 1 745 748 +750 and 1 733 -749 +751 or 1 746 747 +752 and 1 750 751 +753 and 1 449 -448 +754 and 1 185 -430 +755 or 1 754 513 +756 and 1 753 755 +757 and 1 455 -453 +758 or 1 753 755 +759 and 1 757 758 +760 or 1 756 759 +761 and 1 508 -509 +762 or 1 757 758 +763 and 1 761 762 +764 or 1 760 763 +765 and 1 512 -513 +766 or 1 761 762 +767 and 1 765 766 +768 or 1 764 767 +769 and 1 752 -768 +770 or 1 765 766 +771 and 1 769 770 +772 and 1 535 -534 +773 and 1 195 -516 +774 or 1 773 599 +775 and 1 772 774 +776 and 1 541 -539 +777 or 1 772 774 +778 and 1 776 777 +779 or 1 775 778 +780 and 1 594 -595 +781 or 1 776 777 +782 and 1 780 781 +783 or 1 779 782 +784 and 1 598 -599 +785 or 1 780 781 +786 and 1 784 785 +787 or 1 783 786 +788 and 1 771 -787 +789 or 1 784 785 +790 and 1 788 789 +791 and 1 696 790 +792 concat 4 225 545 +793 add 4 258 792 +794 srem 4 793 227 +795 eq 1 285 794 +796 and 1 599 795 +797 add 4 227 792 +798 sub 4 797 258 +799 srem 4 798 227 +800 eq 1 285 799 +801 and 1 595 800 +802 ite 2 801 110 558 +803 ite 2 796 107 802 +804 eq 1 803 6 +805 and 1 791 804 +806 eq 1 258 794 +807 and 1 599 806 +808 eq 1 258 799 +809 and 1 595 808 +810 ite 2 809 110 565 +811 ite 2 807 107 810 +812 eq 1 811 8 +813 and 1 805 812 +814 eq 1 306 794 +815 and 1 599 814 +816 eq 1 306 799 +817 and 1 595 816 +818 ite 2 817 110 572 +819 ite 2 815 107 818 +820 eq 1 819 10 +821 and 1 813 820 +822 eq 1 314 794 +823 and 1 599 822 +824 eq 1 314 799 +825 and 1 595 824 +826 ite 2 825 110 579 +827 ite 2 823 107 826 +828 eq 1 827 12 +829 and 1 821 828 +830 eq 1 321 794 +831 and 1 599 830 +832 eq 1 321 799 +833 and 1 595 832 +834 ite 2 833 110 585 +835 ite 2 831 107 834 +836 eq 1 835 14 +837 and 1 829 836 +838 concat 4 225 528 +839 add 4 258 838 +840 slice 2 839 7 0 +841 ite 2 516 840 528 +842 concat 4 225 841 +843 sub 4 842 227 +844 slice 2 843 7 0 +845 ite 2 519 844 841 +846 eq 1 845 16 +847 and 1 837 846 +848 eq 1 230 18 +849 and 1 847 848 +850 eq 1 283 20 +851 and 1 849 850 +852 eq 1 373 22 +853 and 1 851 852 +854 eq 1 459 24 +855 and 1 853 854 +856 eq 1 545 26 +857 and 1 855 856 +858 eq 1 699 29 +859 and 1 857 858 +860 eq 1 697 31 +861 and 1 859 860 +862 eq 1 701 33 +863 and 1 861 862 +864 eq 1 705 35 +865 and 1 863 864 +866 eq 1 709 37 +867 and 1 865 866 +868 eq 1 717 39 +869 and 1 867 868 +870 eq 1 715 41 +871 and 1 869 870 +872 eq 1 719 43 +873 and 1 871 872 +874 eq 1 723 45 +875 and 1 873 874 +876 eq 1 727 47 +877 and 1 875 876 +878 eq 1 736 49 +879 and 1 877 878 +880 eq 1 734 51 +881 and 1 879 880 +882 eq 1 738 53 +883 and 1 881 882 +884 eq 1 742 55 +885 and 1 883 884 +886 eq 1 746 57 +887 and 1 885 886 +888 eq 1 755 59 +889 and 1 887 888 +890 eq 1 753 61 +891 and 1 889 890 +892 eq 1 757 63 +893 and 1 891 892 +894 eq 1 761 65 +895 and 1 893 894 +896 eq 1 765 67 +897 and 1 895 896 +898 eq 1 774 69 +899 and 1 897 898 +900 eq 1 772 71 +901 and 1 899 900 +902 eq 1 776 73 +903 and 1 901 902 +904 eq 1 780 75 +905 and 1 903 904 +906 eq 1 784 77 +907 and 1 905 906 +908 and 1 907 81 +909 ite 4 163 258 285 +910 ite 4 173 258 285 +911 add 4 909 910 +912 ite 4 183 258 285 +913 add 4 911 912 +914 ite 4 193 258 285 +915 add 4 913 914 +916 ite 4 203 258 285 +917 add 4 915 916 +918 ulte 1 917 258 +919 ite 1 79 908 -918 +920 next 1 81 919 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-func-interl.btor2 new file mode 100644 index 0000000000..5d24d22e87 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-func-interl.btor2 @@ -0,0 +1,796 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_Slot_0 +7 init 2 6 5 +8 state 2 v_Slot_1 +9 init 2 8 5 +10 state 2 v_Slot_2 +11 init 2 10 5 +12 state 2 v_Slot_3 +13 init 2 12 5 +14 state 2 v_Slot_4 +15 init 2 14 5 +16 state 2 v_next +17 init 2 16 5 +18 state 2 v_my_place_P_0 +19 init 2 18 5 +20 state 2 v_my_place_P_1 +21 init 2 20 5 +22 state 2 v_my_place_P_2 +23 init 2 22 5 +24 state 2 v_my_place_P_3 +25 init 2 24 5 +26 state 2 v_my_place_P_4 +27 init 2 26 5 +28 zero 1 +29 state 1 a_NCS_P_0 +30 init 1 29 28 +31 state 1 a_p1_P_0 +32 init 1 31 28 +33 state 1 a_p2_P_0 +34 init 1 33 28 +35 state 1 a_p3_P_0 +36 init 1 35 28 +37 state 1 a_CS_P_0 +38 init 1 37 28 +39 state 1 a_NCS_P_1 +40 init 1 39 28 +41 state 1 a_p1_P_1 +42 init 1 41 28 +43 state 1 a_p2_P_1 +44 init 1 43 28 +45 state 1 a_p3_P_1 +46 init 1 45 28 +47 state 1 a_CS_P_1 +48 init 1 47 28 +49 state 1 a_NCS_P_2 +50 init 1 49 28 +51 state 1 a_p1_P_2 +52 init 1 51 28 +53 state 1 a_p2_P_2 +54 init 1 53 28 +55 state 1 a_p3_P_2 +56 init 1 55 28 +57 state 1 a_CS_P_2 +58 init 1 57 28 +59 state 1 a_NCS_P_3 +60 init 1 59 28 +61 state 1 a_p1_P_3 +62 init 1 61 28 +63 state 1 a_p2_P_3 +64 init 1 63 28 +65 state 1 a_p3_P_3 +66 init 1 65 28 +67 state 1 a_CS_P_3 +68 init 1 67 28 +69 state 1 a_NCS_P_4 +70 init 1 69 28 +71 state 1 a_p1_P_4 +72 init 1 71 28 +73 state 1 a_p2_P_4 +74 init 1 73 28 +75 state 1 a_p3_P_4 +76 init 1 75 28 +77 state 1 a_CS_P_4 +78 init 1 77 28 +79 state 1 dve_invalid +80 init 1 79 28 +81 constd 4 1 +82 constd 4 0 +83 ite 4 37 81 82 +84 ite 4 47 81 82 +85 add 4 83 84 +86 ite 4 57 81 82 +87 add 4 85 86 +88 ite 4 67 81 82 +89 add 4 87 88 +90 ite 4 77 81 82 +91 add 4 89 90 +92 ulte 1 91 81 +93 and 1 -79 -92 +94 bad 93 +95 constd 2 1 +96 input 1 f29 +97 constd 3 0 +98 concat 4 97 26 +99 add 4 81 98 +100 constd 4 5 +101 srem 4 99 100 +102 eq 1 82 101 +103 and 1 96 102 +104 input 1 f28 +105 add 4 100 98 +106 sub 4 105 81 +107 srem 4 106 100 +108 eq 1 82 107 +109 and 1 104 108 +110 constd 2 0 +111 input 1 f23 +112 concat 4 97 24 +113 add 4 81 112 +114 srem 4 113 100 +115 eq 1 82 114 +116 and 1 111 115 +117 input 1 f22 +118 add 4 100 112 +119 sub 4 118 81 +120 srem 4 119 100 +121 eq 1 82 120 +122 and 1 117 121 +123 input 1 f17 +124 concat 4 97 22 +125 add 4 81 124 +126 srem 4 125 100 +127 eq 1 82 126 +128 and 1 123 127 +129 input 1 f16 +130 add 4 100 124 +131 sub 4 130 81 +132 srem 4 131 100 +133 eq 1 82 132 +134 and 1 129 133 +135 input 1 f11 +136 concat 4 97 20 +137 add 4 81 136 +138 srem 4 137 100 +139 eq 1 82 138 +140 and 1 135 139 +141 input 1 f10 +142 add 4 100 136 +143 sub 4 142 81 +144 srem 4 143 100 +145 eq 1 82 144 +146 and 1 141 145 +147 input 1 f05 +148 concat 4 97 18 +149 add 4 81 148 +150 srem 4 149 100 +151 eq 1 82 150 +152 and 1 147 151 +153 input 1 f04 +154 add 4 100 148 +155 sub 4 154 81 +156 srem 4 155 100 +157 eq 1 82 156 +158 and 1 153 157 +159 xor 2 95 6 +160 ite 2 158 110 159 +161 ite 2 152 95 160 +162 ite 2 146 110 161 +163 ite 2 140 95 162 +164 ite 2 134 110 163 +165 ite 2 128 95 164 +166 ite 2 122 110 165 +167 ite 2 116 95 166 +168 ite 2 109 110 167 +169 ite 2 103 95 168 +170 xor 2 95 169 +171 next 2 6 170 +172 eq 1 81 101 +173 and 1 96 172 +174 eq 1 81 107 +175 and 1 104 174 +176 eq 1 81 114 +177 and 1 111 176 +178 eq 1 81 120 +179 and 1 117 178 +180 eq 1 81 126 +181 and 1 123 180 +182 eq 1 81 132 +183 and 1 129 182 +184 eq 1 81 138 +185 and 1 135 184 +186 eq 1 81 144 +187 and 1 141 186 +188 eq 1 81 150 +189 and 1 147 188 +190 eq 1 81 156 +191 and 1 153 190 +192 ite 2 191 110 8 +193 ite 2 189 95 192 +194 ite 2 187 110 193 +195 ite 2 185 95 194 +196 ite 2 183 110 195 +197 ite 2 181 95 196 +198 ite 2 179 110 197 +199 ite 2 177 95 198 +200 ite 2 175 110 199 +201 ite 2 173 95 200 +202 next 2 8 201 +203 constd 4 2 +204 eq 1 203 101 +205 and 1 96 204 +206 eq 1 203 107 +207 and 1 104 206 +208 eq 1 203 114 +209 and 1 111 208 +210 eq 1 203 120 +211 and 1 117 210 +212 eq 1 203 126 +213 and 1 123 212 +214 eq 1 203 132 +215 and 1 129 214 +216 eq 1 203 138 +217 and 1 135 216 +218 eq 1 203 144 +219 and 1 141 218 +220 eq 1 203 150 +221 and 1 147 220 +222 eq 1 203 156 +223 and 1 153 222 +224 ite 2 223 110 10 +225 ite 2 221 95 224 +226 ite 2 219 110 225 +227 ite 2 217 95 226 +228 ite 2 215 110 227 +229 ite 2 213 95 228 +230 ite 2 211 110 229 +231 ite 2 209 95 230 +232 ite 2 207 110 231 +233 ite 2 205 95 232 +234 next 2 10 233 +235 constd 4 3 +236 eq 1 235 101 +237 and 1 96 236 +238 eq 1 235 107 +239 and 1 104 238 +240 eq 1 235 114 +241 and 1 111 240 +242 eq 1 235 120 +243 and 1 117 242 +244 eq 1 235 126 +245 and 1 123 244 +246 eq 1 235 132 +247 and 1 129 246 +248 eq 1 235 138 +249 and 1 135 248 +250 eq 1 235 144 +251 and 1 141 250 +252 eq 1 235 150 +253 and 1 147 252 +254 eq 1 235 156 +255 and 1 153 254 +256 ite 2 255 110 12 +257 ite 2 253 95 256 +258 ite 2 251 110 257 +259 ite 2 249 95 258 +260 ite 2 247 110 259 +261 ite 2 245 95 260 +262 ite 2 243 110 261 +263 ite 2 241 95 262 +264 ite 2 239 110 263 +265 ite 2 237 95 264 +266 next 2 12 265 +267 constd 4 4 +268 eq 1 267 101 +269 and 1 96 268 +270 eq 1 267 107 +271 and 1 104 270 +272 eq 1 267 114 +273 and 1 111 272 +274 eq 1 267 120 +275 and 1 117 274 +276 eq 1 267 126 +277 and 1 123 276 +278 eq 1 267 132 +279 and 1 129 278 +280 eq 1 267 138 +281 and 1 135 280 +282 eq 1 267 144 +283 and 1 141 282 +284 eq 1 267 150 +285 and 1 147 284 +286 eq 1 267 156 +287 and 1 153 286 +288 ite 2 287 110 14 +289 ite 2 285 95 288 +290 ite 2 283 110 289 +291 ite 2 281 95 290 +292 ite 2 279 110 291 +293 ite 2 277 95 292 +294 ite 2 275 110 293 +295 ite 2 273 95 294 +296 ite 2 271 110 295 +297 ite 2 269 95 296 +298 next 2 14 297 +299 input 1 f25 +300 concat 4 97 16 +301 sub 4 300 100 +302 slice 2 301 7 0 +303 input 1 f24 +304 add 4 81 300 +305 slice 2 304 7 0 +306 input 1 f19 +307 input 1 f18 +308 input 1 f13 +309 input 1 f12 +310 input 1 f07 +311 input 1 f06 +312 input 1 f01 +313 input 1 f00 +314 ite 2 313 305 16 +315 ite 2 312 302 314 +316 ite 2 311 305 315 +317 ite 2 310 302 316 +318 ite 2 309 305 317 +319 ite 2 308 302 318 +320 ite 2 307 305 319 +321 ite 2 306 302 320 +322 ite 2 303 305 321 +323 ite 2 299 302 322 +324 next 2 16 323 +325 input 1 f02 +326 srem 4 148 100 +327 slice 2 326 7 0 +328 ite 2 313 16 18 +329 ite 2 325 327 328 +330 next 2 18 329 +331 input 1 f08 +332 srem 4 136 100 +333 slice 2 332 7 0 +334 ite 2 311 16 20 +335 ite 2 331 333 334 +336 next 2 20 335 +337 input 1 f14 +338 srem 4 124 100 +339 slice 2 338 7 0 +340 ite 2 309 16 22 +341 ite 2 337 339 340 +342 next 2 22 341 +343 input 1 f20 +344 srem 4 112 100 +345 slice 2 344 7 0 +346 ite 2 307 16 24 +347 ite 2 343 345 346 +348 next 2 24 347 +349 input 1 f26 +350 srem 4 98 100 +351 slice 2 350 7 0 +352 ite 2 303 16 26 +353 ite 2 349 351 352 +354 next 2 26 353 +355 and 1 -29 -313 +356 or 1 355 147 +357 next 1 29 -356 +358 or 1 31 313 +359 and 1 358 -312 +360 and 1 359 -325 +361 next 1 31 360 +362 or 1 33 312 +363 or 1 362 325 +364 input 1 f03 +365 and 1 363 -364 +366 next 1 33 365 +367 or 1 35 364 +368 and 1 367 -153 +369 next 1 35 368 +370 or 1 37 153 +371 and 1 370 -147 +372 next 1 37 371 +373 and 1 -39 -311 +374 or 1 373 135 +375 next 1 39 -374 +376 or 1 41 311 +377 and 1 376 -310 +378 and 1 377 -331 +379 next 1 41 378 +380 or 1 43 310 +381 or 1 380 331 +382 input 1 f09 +383 and 1 381 -382 +384 next 1 43 383 +385 or 1 45 382 +386 and 1 385 -141 +387 next 1 45 386 +388 or 1 47 141 +389 and 1 388 -135 +390 next 1 47 389 +391 and 1 -49 -309 +392 or 1 391 123 +393 next 1 49 -392 +394 or 1 51 309 +395 and 1 394 -308 +396 and 1 395 -337 +397 next 1 51 396 +398 or 1 53 308 +399 or 1 398 337 +400 input 1 f15 +401 and 1 399 -400 +402 next 1 53 401 +403 or 1 55 400 +404 and 1 403 -129 +405 next 1 55 404 +406 or 1 57 129 +407 and 1 406 -123 +408 next 1 57 407 +409 and 1 -59 -307 +410 or 1 409 111 +411 next 1 59 -410 +412 or 1 61 307 +413 and 1 412 -306 +414 and 1 413 -343 +415 next 1 61 414 +416 or 1 63 306 +417 or 1 416 343 +418 input 1 f21 +419 and 1 417 -418 +420 next 1 63 419 +421 or 1 65 418 +422 and 1 421 -117 +423 next 1 65 422 +424 or 1 67 117 +425 and 1 424 -111 +426 next 1 67 425 +427 and 1 -69 -303 +428 or 1 427 96 +429 next 1 69 -428 +430 or 1 71 303 +431 and 1 430 -299 +432 and 1 431 -349 +433 next 1 71 432 +434 or 1 73 299 +435 or 1 434 349 +436 input 1 f27 +437 and 1 435 -436 +438 next 1 73 437 +439 or 1 75 436 +440 and 1 439 -104 +441 next 1 75 440 +442 or 1 77 104 +443 and 1 442 -96 +444 next 1 77 443 +445 or 1 -29 -313 +446 constd 2 4 +447 eq 1 446 18 +448 and 1 31 447 +449 or 1 -312 448 +450 and 1 445 449 +451 and 1 31 -447 +452 or 1 -325 451 +453 and 1 450 452 +454 eq 1 110 18 +455 eq 1 95 18 +456 constd 2 2 +457 eq 1 456 18 +458 constd 2 3 +459 eq 1 458 18 +460 ite 2 459 12 14 +461 ite 2 457 10 460 +462 ite 2 455 8 461 +463 ite 2 454 159 462 +464 eq 1 95 463 +465 and 1 33 464 +466 or 1 -364 465 +467 and 1 453 466 +468 or 1 35 -153 +469 and 1 467 468 +470 or 1 37 -147 +471 and 1 469 470 +472 or 1 -39 -311 +473 and 1 471 472 +474 eq 1 446 20 +475 and 1 41 474 +476 or 1 -310 475 +477 and 1 473 476 +478 and 1 41 -474 +479 or 1 -331 478 +480 and 1 477 479 +481 eq 1 110 20 +482 eq 1 95 20 +483 eq 1 456 20 +484 eq 1 458 20 +485 ite 2 484 12 14 +486 ite 2 483 10 485 +487 ite 2 482 8 486 +488 ite 2 481 159 487 +489 eq 1 95 488 +490 and 1 43 489 +491 or 1 -382 490 +492 and 1 480 491 +493 or 1 45 -141 +494 and 1 492 493 +495 or 1 47 -135 +496 and 1 494 495 +497 or 1 -49 -309 +498 and 1 496 497 +499 eq 1 446 22 +500 and 1 51 499 +501 or 1 -308 500 +502 and 1 498 501 +503 and 1 51 -499 +504 or 1 -337 503 +505 and 1 502 504 +506 eq 1 110 22 +507 eq 1 95 22 +508 eq 1 456 22 +509 eq 1 458 22 +510 ite 2 509 12 14 +511 ite 2 508 10 510 +512 ite 2 507 8 511 +513 ite 2 506 159 512 +514 eq 1 95 513 +515 and 1 53 514 +516 or 1 -400 515 +517 and 1 505 516 +518 or 1 55 -129 +519 and 1 517 518 +520 or 1 57 -123 +521 and 1 519 520 +522 or 1 -59 -307 +523 and 1 521 522 +524 eq 1 446 24 +525 and 1 61 524 +526 or 1 -306 525 +527 and 1 523 526 +528 and 1 61 -524 +529 or 1 -343 528 +530 and 1 527 529 +531 eq 1 110 24 +532 eq 1 95 24 +533 eq 1 456 24 +534 eq 1 458 24 +535 ite 2 534 12 14 +536 ite 2 533 10 535 +537 ite 2 532 8 536 +538 ite 2 531 159 537 +539 eq 1 95 538 +540 and 1 63 539 +541 or 1 -418 540 +542 and 1 530 541 +543 or 1 65 -117 +544 and 1 542 543 +545 or 1 67 -111 +546 and 1 544 545 +547 or 1 -69 -303 +548 and 1 546 547 +549 eq 1 446 26 +550 and 1 71 549 +551 or 1 -299 550 +552 and 1 548 551 +553 and 1 71 -549 +554 or 1 -349 553 +555 and 1 552 554 +556 eq 1 110 26 +557 eq 1 95 26 +558 eq 1 456 26 +559 eq 1 458 26 +560 ite 2 559 12 14 +561 ite 2 558 10 560 +562 ite 2 557 8 561 +563 ite 2 556 159 562 +564 eq 1 95 563 +565 and 1 73 564 +566 or 1 -436 565 +567 and 1 555 566 +568 or 1 75 -104 +569 and 1 567 568 +570 or 1 77 -96 +571 and 1 569 570 +572 or 1 313 312 +573 or 1 325 572 +574 or 1 364 573 +575 or 1 153 574 +576 or 1 147 575 +577 or 1 311 576 +578 or 1 310 577 +579 or 1 331 578 +580 or 1 382 579 +581 or 1 141 580 +582 or 1 135 581 +583 or 1 309 582 +584 or 1 308 583 +585 or 1 337 584 +586 or 1 400 585 +587 or 1 129 586 +588 or 1 123 587 +589 or 1 307 588 +590 or 1 306 589 +591 or 1 343 590 +592 or 1 418 591 +593 or 1 117 592 +594 or 1 111 593 +595 or 1 303 594 +596 or 1 299 595 +597 or 1 349 596 +598 or 1 436 597 +599 or 1 104 598 +600 or 1 96 599 +601 and 1 571 600 +602 and 1 313 312 +603 and 1 325 572 +604 or 1 602 603 +605 and 1 364 573 +606 or 1 604 605 +607 and 1 153 574 +608 or 1 606 607 +609 and 1 147 575 +610 or 1 608 609 +611 and 1 311 576 +612 or 1 610 611 +613 and 1 310 577 +614 or 1 612 613 +615 and 1 331 578 +616 or 1 614 615 +617 and 1 382 579 +618 or 1 616 617 +619 and 1 141 580 +620 or 1 618 619 +621 and 1 135 581 +622 or 1 620 621 +623 and 1 309 582 +624 or 1 622 623 +625 and 1 308 583 +626 or 1 624 625 +627 and 1 337 584 +628 or 1 626 627 +629 and 1 400 585 +630 or 1 628 629 +631 and 1 129 586 +632 or 1 630 631 +633 and 1 123 587 +634 or 1 632 633 +635 and 1 307 588 +636 or 1 634 635 +637 and 1 306 589 +638 or 1 636 637 +639 and 1 343 590 +640 or 1 638 639 +641 and 1 418 591 +642 or 1 640 641 +643 and 1 117 592 +644 or 1 642 643 +645 and 1 111 593 +646 or 1 644 645 +647 and 1 303 594 +648 or 1 646 647 +649 and 1 299 595 +650 or 1 648 649 +651 and 1 349 596 +652 or 1 650 651 +653 and 1 436 597 +654 or 1 652 653 +655 and 1 104 598 +656 or 1 654 655 +657 and 1 96 599 +658 or 1 656 657 +659 and 1 601 -658 +660 and 1 -29 31 +661 or 1 -29 31 +662 and 1 33 661 +663 or 1 660 662 +664 or 1 33 661 +665 and 1 35 664 +666 or 1 663 665 +667 or 1 35 664 +668 and 1 37 667 +669 or 1 666 668 +670 or 1 37 667 +671 and 1 -669 670 +672 and 1 -39 41 +673 or 1 -39 41 +674 and 1 43 673 +675 or 1 672 674 +676 or 1 43 673 +677 and 1 45 676 +678 or 1 675 677 +679 or 1 45 676 +680 and 1 47 679 +681 or 1 678 680 +682 and 1 671 -681 +683 or 1 47 679 +684 and 1 682 683 +685 and 1 -49 51 +686 or 1 -49 51 +687 and 1 53 686 +688 or 1 685 687 +689 or 1 53 686 +690 and 1 55 689 +691 or 1 688 690 +692 or 1 55 689 +693 and 1 57 692 +694 or 1 691 693 +695 and 1 684 -694 +696 or 1 57 692 +697 and 1 695 696 +698 and 1 -59 61 +699 or 1 -59 61 +700 and 1 63 699 +701 or 1 698 700 +702 or 1 63 699 +703 and 1 65 702 +704 or 1 701 703 +705 or 1 65 702 +706 and 1 67 705 +707 or 1 704 706 +708 and 1 697 -707 +709 or 1 67 705 +710 and 1 708 709 +711 and 1 -69 71 +712 or 1 -69 71 +713 and 1 73 712 +714 or 1 711 713 +715 or 1 73 712 +716 and 1 75 715 +717 or 1 714 716 +718 or 1 75 715 +719 and 1 77 718 +720 or 1 717 719 +721 and 1 710 -720 +722 or 1 77 718 +723 and 1 721 722 +724 and 1 659 723 +725 and 1 360 356 +726 or 1 360 356 +727 and 1 365 726 +728 or 1 725 727 +729 or 1 365 726 +730 and 1 368 729 +731 or 1 728 730 +732 or 1 368 729 +733 and 1 371 732 +734 or 1 731 733 +735 or 1 371 732 +736 and 1 -734 735 +737 and 1 378 374 +738 or 1 378 374 +739 and 1 383 738 +740 or 1 737 739 +741 or 1 383 738 +742 and 1 386 741 +743 or 1 740 742 +744 or 1 386 741 +745 and 1 389 744 +746 or 1 743 745 +747 and 1 736 -746 +748 or 1 389 744 +749 and 1 747 748 +750 and 1 396 392 +751 or 1 396 392 +752 and 1 401 751 +753 or 1 750 752 +754 or 1 401 751 +755 and 1 404 754 +756 or 1 753 755 +757 or 1 404 754 +758 and 1 407 757 +759 or 1 756 758 +760 and 1 749 -759 +761 or 1 407 757 +762 and 1 760 761 +763 and 1 414 410 +764 or 1 414 410 +765 and 1 419 764 +766 or 1 763 765 +767 or 1 419 764 +768 and 1 422 767 +769 or 1 766 768 +770 or 1 422 767 +771 and 1 425 770 +772 or 1 769 771 +773 and 1 762 -772 +774 or 1 425 770 +775 and 1 773 774 +776 and 1 432 428 +777 or 1 432 428 +778 and 1 437 777 +779 or 1 776 778 +780 or 1 437 777 +781 and 1 440 780 +782 or 1 779 781 +783 or 1 440 780 +784 and 1 443 783 +785 or 1 782 784 +786 and 1 775 -785 +787 or 1 443 783 +788 and 1 786 787 +789 and 1 724 788 +790 and 1 789 -79 +791 next 1 79 -790 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..34e066cf4d --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-back-serstep.btor2 @@ -0,0 +1,1104 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_Slot_2 +11 init 2 10 5 +12 state 2 nextv_Slot_3 +13 init 2 12 5 +14 state 2 nextv_Slot_4 +15 init 2 14 5 +16 state 2 nextv_Slot_5 +17 init 2 16 5 +18 state 2 nextv_next +19 init 2 18 5 +20 state 2 nextv_my_place_P_0 +21 init 2 20 5 +22 state 2 nextv_my_place_P_1 +23 init 2 22 5 +24 state 2 nextv_my_place_P_2 +25 init 2 24 5 +26 state 2 nextv_my_place_P_3 +27 init 2 26 5 +28 state 2 nextv_my_place_P_4 +29 init 2 28 5 +30 state 2 nextv_my_place_P_5 +31 init 2 30 5 +32 zero 1 +33 state 1 nexta_NCS_P_0 +34 init 1 33 32 +35 state 1 nexta_p1_P_0 +36 init 1 35 32 +37 state 1 nexta_p2_P_0 +38 init 1 37 32 +39 state 1 nexta_p3_P_0 +40 init 1 39 32 +41 state 1 nexta_CS_P_0 +42 init 1 41 32 +43 state 1 nexta_NCS_P_1 +44 init 1 43 32 +45 state 1 nexta_p1_P_1 +46 init 1 45 32 +47 state 1 nexta_p2_P_1 +48 init 1 47 32 +49 state 1 nexta_p3_P_1 +50 init 1 49 32 +51 state 1 nexta_CS_P_1 +52 init 1 51 32 +53 state 1 nexta_NCS_P_2 +54 init 1 53 32 +55 state 1 nexta_p1_P_2 +56 init 1 55 32 +57 state 1 nexta_p2_P_2 +58 init 1 57 32 +59 state 1 nexta_p3_P_2 +60 init 1 59 32 +61 state 1 nexta_CS_P_2 +62 init 1 61 32 +63 state 1 nexta_NCS_P_3 +64 init 1 63 32 +65 state 1 nexta_p1_P_3 +66 init 1 65 32 +67 state 1 nexta_p2_P_3 +68 init 1 67 32 +69 state 1 nexta_p3_P_3 +70 init 1 69 32 +71 state 1 nexta_CS_P_3 +72 init 1 71 32 +73 state 1 nexta_NCS_P_4 +74 init 1 73 32 +75 state 1 nexta_p1_P_4 +76 init 1 75 32 +77 state 1 nexta_p2_P_4 +78 init 1 77 32 +79 state 1 nexta_p3_P_4 +80 init 1 79 32 +81 state 1 nexta_CS_P_4 +82 init 1 81 32 +83 state 1 nexta_NCS_P_5 +84 init 1 83 32 +85 state 1 nexta_p1_P_5 +86 init 1 85 32 +87 state 1 nexta_p2_P_5 +88 init 1 87 32 +89 state 1 nexta_p3_P_5 +90 init 1 89 32 +91 state 1 nexta_CS_P_5 +92 init 1 91 32 +93 state 1 dve_initialized +94 init 1 93 32 +95 state 1 dve_valid +96 init 1 95 32 +97 and 1 33 -35 +98 and 1 97 -37 +99 and 1 98 -39 +100 and 1 99 -41 +101 and 1 100 43 +102 and 1 101 -45 +103 and 1 102 -47 +104 and 1 103 -49 +105 and 1 104 -51 +106 and 1 105 53 +107 and 1 106 -55 +108 and 1 107 -57 +109 and 1 108 -59 +110 and 1 109 -61 +111 and 1 110 63 +112 and 1 111 -65 +113 and 1 112 -67 +114 and 1 113 -69 +115 and 1 114 -71 +116 and 1 115 73 +117 and 1 116 -75 +118 and 1 117 -77 +119 and 1 118 -79 +120 and 1 119 -81 +121 and 1 120 83 +122 and 1 121 -85 +123 and 1 122 -87 +124 and 1 123 -89 +125 and 1 124 -91 +126 constd 2 1 +127 eq 1 126 6 +128 and 1 125 127 +129 constd 2 0 +130 eq 1 129 8 +131 and 1 128 130 +132 eq 1 129 10 +133 and 1 131 132 +134 eq 1 129 12 +135 and 1 133 134 +136 eq 1 129 14 +137 and 1 135 136 +138 eq 1 129 16 +139 and 1 137 138 +140 eq 1 129 18 +141 and 1 139 140 +142 eq 1 129 20 +143 and 1 141 142 +144 eq 1 129 22 +145 and 1 143 144 +146 eq 1 129 24 +147 and 1 145 146 +148 eq 1 129 26 +149 and 1 147 148 +150 eq 1 129 28 +151 and 1 149 150 +152 eq 1 129 30 +153 and 1 151 152 +154 and 1 95 153 +155 bad 154 +156 input 2 v_Slot_0 +157 next 2 6 156 +158 input 2 v_Slot_1 +159 next 2 8 158 +160 input 2 v_Slot_2 +161 next 2 10 160 +162 input 2 v_Slot_3 +163 next 2 12 162 +164 input 2 v_Slot_4 +165 next 2 14 164 +166 input 2 v_Slot_5 +167 next 2 16 166 +168 input 2 v_next +169 next 2 18 168 +170 input 2 v_my_place_P_0 +171 next 2 20 170 +172 input 2 v_my_place_P_1 +173 next 2 22 172 +174 input 2 v_my_place_P_2 +175 next 2 24 174 +176 input 2 v_my_place_P_3 +177 next 2 26 176 +178 input 2 v_my_place_P_4 +179 next 2 28 178 +180 input 2 v_my_place_P_5 +181 next 2 30 180 +182 input 1 a_NCS_P_0 +183 next 1 33 182 +184 input 1 a_p1_P_0 +185 next 1 35 184 +186 input 1 a_p2_P_0 +187 next 1 37 186 +188 input 1 a_p3_P_0 +189 next 1 39 188 +190 input 1 a_CS_P_0 +191 next 1 41 190 +192 input 1 a_NCS_P_1 +193 next 1 43 192 +194 input 1 a_p1_P_1 +195 next 1 45 194 +196 input 1 a_p2_P_1 +197 next 1 47 196 +198 input 1 a_p3_P_1 +199 next 1 49 198 +200 input 1 a_CS_P_1 +201 next 1 51 200 +202 input 1 a_NCS_P_2 +203 next 1 53 202 +204 input 1 a_p1_P_2 +205 next 1 55 204 +206 input 1 a_p2_P_2 +207 next 1 57 206 +208 input 1 a_p3_P_2 +209 next 1 59 208 +210 input 1 a_CS_P_2 +211 next 1 61 210 +212 input 1 a_NCS_P_3 +213 next 1 63 212 +214 input 1 a_p1_P_3 +215 next 1 65 214 +216 input 1 a_p2_P_3 +217 next 1 67 216 +218 input 1 a_p3_P_3 +219 next 1 69 218 +220 input 1 a_CS_P_3 +221 next 1 71 220 +222 input 1 a_NCS_P_4 +223 next 1 73 222 +224 input 1 a_p1_P_4 +225 next 1 75 224 +226 input 1 a_p2_P_4 +227 next 1 77 226 +228 input 1 a_p3_P_4 +229 next 1 79 228 +230 input 1 a_CS_P_4 +231 next 1 81 230 +232 input 1 a_NCS_P_5 +233 next 1 83 232 +234 input 1 a_p1_P_5 +235 next 1 85 234 +236 input 1 a_p2_P_5 +237 next 1 87 236 +238 input 1 a_p3_P_5 +239 next 1 89 238 +240 input 1 a_CS_P_5 +241 next 1 91 240 +242 const 1 1 +243 next 1 93 242 +244 input 1 f00 +245 or 1 182 -244 +246 input 1 f01 +247 or 1 184 244 +248 constd 2 5 +249 ite 2 244 168 170 +250 eq 1 248 249 +251 and 1 247 250 +252 or 1 -246 251 +253 and 1 245 252 +254 input 1 f02 +255 and 1 247 -246 +256 and 1 -250 255 +257 or 1 -254 256 +258 and 1 253 257 +259 input 1 f03 +260 or 1 186 246 +261 or 1 260 254 +262 constd 3 0 +263 concat 4 262 249 +264 constd 4 6 +265 srem 4 263 264 +266 slice 2 265 7 0 +267 ite 2 254 266 249 +268 eq 1 129 267 +269 eq 1 126 267 +270 constd 2 2 +271 eq 1 270 267 +272 constd 2 3 +273 eq 1 272 267 +274 constd 2 4 +275 eq 1 274 267 +276 ite 2 275 164 166 +277 ite 2 273 162 276 +278 ite 2 271 160 277 +279 ite 2 269 158 278 +280 ite 2 268 156 279 +281 eq 1 126 280 +282 and 1 261 281 +283 or 1 -259 282 +284 and 1 258 283 +285 or 1 188 259 +286 input 1 f04 +287 or 1 285 -286 +288 and 1 284 287 +289 or 1 190 286 +290 input 1 f05 +291 or 1 289 -290 +292 and 1 288 291 +293 input 1 f06 +294 or 1 192 -293 +295 and 1 292 294 +296 input 1 f07 +297 or 1 194 293 +298 constd 4 1 +299 concat 4 262 168 +300 add 4 298 299 +301 slice 2 300 7 0 +302 ite 2 244 301 168 +303 concat 4 262 302 +304 sub 4 303 264 +305 slice 2 304 7 0 +306 ite 2 246 305 302 +307 ite 2 293 306 172 +308 eq 1 248 307 +309 and 1 297 308 +310 or 1 -296 309 +311 and 1 295 310 +312 input 1 f08 +313 and 1 297 -296 +314 and 1 -308 313 +315 or 1 -312 314 +316 and 1 311 315 +317 input 1 f09 +318 or 1 196 296 +319 or 1 318 312 +320 concat 4 262 307 +321 srem 4 320 264 +322 slice 2 321 7 0 +323 ite 2 312 322 307 +324 eq 1 129 323 +325 constd 4 0 +326 concat 4 262 267 +327 add 4 298 326 +328 srem 4 327 264 +329 eq 1 325 328 +330 and 1 290 329 +331 and 1 268 286 +332 ite 2 331 129 156 +333 ite 2 330 126 332 +334 eq 1 126 323 +335 eq 1 298 328 +336 and 1 290 335 +337 and 1 269 286 +338 ite 2 337 129 158 +339 ite 2 336 126 338 +340 eq 1 270 323 +341 constd 4 2 +342 eq 1 341 328 +343 and 1 290 342 +344 and 1 271 286 +345 ite 2 344 129 160 +346 ite 2 343 126 345 +347 eq 1 272 323 +348 constd 4 3 +349 eq 1 348 328 +350 and 1 290 349 +351 and 1 273 286 +352 ite 2 351 129 162 +353 ite 2 350 126 352 +354 eq 1 274 323 +355 constd 4 4 +356 eq 1 355 328 +357 and 1 290 356 +358 and 1 275 286 +359 ite 2 358 129 164 +360 ite 2 357 126 359 +361 constd 4 5 +362 eq 1 361 328 +363 and 1 290 362 +364 eq 1 248 267 +365 and 1 364 286 +366 ite 2 365 129 166 +367 ite 2 363 126 366 +368 ite 2 354 360 367 +369 ite 2 347 353 368 +370 ite 2 340 346 369 +371 ite 2 334 339 370 +372 ite 2 324 333 371 +373 eq 1 126 372 +374 and 1 319 373 +375 or 1 -317 374 +376 and 1 316 375 +377 or 1 198 317 +378 input 1 f10 +379 or 1 377 -378 +380 and 1 376 379 +381 or 1 200 378 +382 input 1 f11 +383 or 1 381 -382 +384 and 1 380 383 +385 input 1 f12 +386 or 1 202 -385 +387 and 1 384 386 +388 input 1 f13 +389 or 1 204 385 +390 concat 4 262 306 +391 add 4 298 390 +392 slice 2 391 7 0 +393 ite 2 293 392 306 +394 concat 4 262 393 +395 sub 4 394 264 +396 slice 2 395 7 0 +397 ite 2 296 396 393 +398 ite 2 385 397 174 +399 eq 1 248 398 +400 and 1 389 399 +401 or 1 -388 400 +402 and 1 387 401 +403 input 1 f14 +404 and 1 389 -388 +405 and 1 -399 404 +406 or 1 -403 405 +407 and 1 402 406 +408 input 1 f15 +409 or 1 206 388 +410 or 1 409 403 +411 concat 4 262 398 +412 srem 4 411 264 +413 slice 2 412 7 0 +414 ite 2 403 413 398 +415 eq 1 129 414 +416 concat 4 262 323 +417 add 4 298 416 +418 srem 4 417 264 +419 eq 1 325 418 +420 and 1 382 419 +421 and 1 324 378 +422 ite 2 421 129 333 +423 ite 2 420 126 422 +424 eq 1 126 414 +425 eq 1 298 418 +426 and 1 382 425 +427 and 1 334 378 +428 ite 2 427 129 339 +429 ite 2 426 126 428 +430 eq 1 270 414 +431 eq 1 341 418 +432 and 1 382 431 +433 and 1 340 378 +434 ite 2 433 129 346 +435 ite 2 432 126 434 +436 eq 1 272 414 +437 eq 1 348 418 +438 and 1 382 437 +439 and 1 347 378 +440 ite 2 439 129 353 +441 ite 2 438 126 440 +442 eq 1 274 414 +443 eq 1 355 418 +444 and 1 382 443 +445 and 1 354 378 +446 ite 2 445 129 360 +447 ite 2 444 126 446 +448 eq 1 361 418 +449 and 1 382 448 +450 eq 1 248 323 +451 and 1 450 378 +452 ite 2 451 129 367 +453 ite 2 449 126 452 +454 ite 2 442 447 453 +455 ite 2 436 441 454 +456 ite 2 430 435 455 +457 ite 2 424 429 456 +458 ite 2 415 423 457 +459 eq 1 126 458 +460 and 1 410 459 +461 or 1 -408 460 +462 and 1 407 461 +463 or 1 208 408 +464 input 1 f16 +465 or 1 463 -464 +466 and 1 462 465 +467 or 1 210 464 +468 input 1 f17 +469 or 1 467 -468 +470 and 1 466 469 +471 input 1 f18 +472 or 1 212 -471 +473 and 1 470 472 +474 input 1 f19 +475 or 1 214 471 +476 concat 4 262 397 +477 add 4 298 476 +478 slice 2 477 7 0 +479 ite 2 385 478 397 +480 concat 4 262 479 +481 sub 4 480 264 +482 slice 2 481 7 0 +483 ite 2 388 482 479 +484 ite 2 471 483 176 +485 eq 1 248 484 +486 and 1 475 485 +487 or 1 -474 486 +488 and 1 473 487 +489 input 1 f20 +490 and 1 475 -474 +491 and 1 -485 490 +492 or 1 -489 491 +493 and 1 488 492 +494 input 1 f21 +495 or 1 216 474 +496 or 1 495 489 +497 concat 4 262 484 +498 srem 4 497 264 +499 slice 2 498 7 0 +500 ite 2 489 499 484 +501 eq 1 129 500 +502 concat 4 262 414 +503 add 4 298 502 +504 srem 4 503 264 +505 eq 1 325 504 +506 and 1 468 505 +507 and 1 415 464 +508 ite 2 507 129 423 +509 ite 2 506 126 508 +510 eq 1 126 500 +511 eq 1 298 504 +512 and 1 468 511 +513 and 1 424 464 +514 ite 2 513 129 429 +515 ite 2 512 126 514 +516 eq 1 270 500 +517 eq 1 341 504 +518 and 1 468 517 +519 and 1 430 464 +520 ite 2 519 129 435 +521 ite 2 518 126 520 +522 eq 1 272 500 +523 eq 1 348 504 +524 and 1 468 523 +525 and 1 436 464 +526 ite 2 525 129 441 +527 ite 2 524 126 526 +528 eq 1 274 500 +529 eq 1 355 504 +530 and 1 468 529 +531 and 1 442 464 +532 ite 2 531 129 447 +533 ite 2 530 126 532 +534 eq 1 361 504 +535 and 1 468 534 +536 eq 1 248 414 +537 and 1 536 464 +538 ite 2 537 129 453 +539 ite 2 535 126 538 +540 ite 2 528 533 539 +541 ite 2 522 527 540 +542 ite 2 516 521 541 +543 ite 2 510 515 542 +544 ite 2 501 509 543 +545 eq 1 126 544 +546 and 1 496 545 +547 or 1 -494 546 +548 and 1 493 547 +549 or 1 218 494 +550 input 1 f22 +551 or 1 549 -550 +552 and 1 548 551 +553 or 1 220 550 +554 input 1 f23 +555 or 1 553 -554 +556 and 1 552 555 +557 input 1 f24 +558 or 1 222 -557 +559 and 1 556 558 +560 input 1 f25 +561 or 1 224 557 +562 concat 4 262 483 +563 add 4 298 562 +564 slice 2 563 7 0 +565 ite 2 471 564 483 +566 concat 4 262 565 +567 sub 4 566 264 +568 slice 2 567 7 0 +569 ite 2 474 568 565 +570 ite 2 557 569 178 +571 eq 1 248 570 +572 and 1 561 571 +573 or 1 -560 572 +574 and 1 559 573 +575 input 1 f26 +576 and 1 561 -560 +577 and 1 -571 576 +578 or 1 -575 577 +579 and 1 574 578 +580 input 1 f27 +581 or 1 226 560 +582 or 1 581 575 +583 concat 4 262 570 +584 srem 4 583 264 +585 slice 2 584 7 0 +586 ite 2 575 585 570 +587 eq 1 129 586 +588 concat 4 262 500 +589 add 4 298 588 +590 srem 4 589 264 +591 eq 1 325 590 +592 and 1 554 591 +593 and 1 501 550 +594 ite 2 593 129 509 +595 ite 2 592 126 594 +596 eq 1 126 586 +597 eq 1 298 590 +598 and 1 554 597 +599 and 1 510 550 +600 ite 2 599 129 515 +601 ite 2 598 126 600 +602 eq 1 270 586 +603 eq 1 341 590 +604 and 1 554 603 +605 and 1 516 550 +606 ite 2 605 129 521 +607 ite 2 604 126 606 +608 eq 1 272 586 +609 eq 1 348 590 +610 and 1 554 609 +611 and 1 522 550 +612 ite 2 611 129 527 +613 ite 2 610 126 612 +614 eq 1 274 586 +615 eq 1 355 590 +616 and 1 554 615 +617 and 1 528 550 +618 ite 2 617 129 533 +619 ite 2 616 126 618 +620 eq 1 361 590 +621 and 1 554 620 +622 eq 1 248 500 +623 and 1 622 550 +624 ite 2 623 129 539 +625 ite 2 621 126 624 +626 ite 2 614 619 625 +627 ite 2 608 613 626 +628 ite 2 602 607 627 +629 ite 2 596 601 628 +630 ite 2 587 595 629 +631 eq 1 126 630 +632 and 1 582 631 +633 or 1 -580 632 +634 and 1 579 633 +635 or 1 228 580 +636 input 1 f28 +637 or 1 635 -636 +638 and 1 634 637 +639 or 1 230 636 +640 input 1 f29 +641 or 1 639 -640 +642 and 1 638 641 +643 input 1 f30 +644 or 1 232 -643 +645 and 1 642 644 +646 input 1 f31 +647 or 1 234 643 +648 concat 4 262 569 +649 add 4 298 648 +650 slice 2 649 7 0 +651 ite 2 557 650 569 +652 concat 4 262 651 +653 sub 4 652 264 +654 slice 2 653 7 0 +655 ite 2 560 654 651 +656 ite 2 643 655 180 +657 eq 1 248 656 +658 and 1 647 657 +659 or 1 -646 658 +660 and 1 645 659 +661 input 1 f32 +662 and 1 647 -646 +663 and 1 -657 662 +664 or 1 -661 663 +665 and 1 660 664 +666 input 1 f33 +667 or 1 236 646 +668 or 1 667 661 +669 concat 4 262 656 +670 srem 4 669 264 +671 slice 2 670 7 0 +672 ite 2 661 671 656 +673 eq 1 129 672 +674 concat 4 262 586 +675 add 4 298 674 +676 srem 4 675 264 +677 eq 1 325 676 +678 and 1 640 677 +679 and 1 587 636 +680 ite 2 679 129 595 +681 ite 2 678 126 680 +682 eq 1 126 672 +683 eq 1 298 676 +684 and 1 640 683 +685 and 1 596 636 +686 ite 2 685 129 601 +687 ite 2 684 126 686 +688 eq 1 270 672 +689 eq 1 341 676 +690 and 1 640 689 +691 and 1 602 636 +692 ite 2 691 129 607 +693 ite 2 690 126 692 +694 eq 1 272 672 +695 eq 1 348 676 +696 and 1 640 695 +697 and 1 608 636 +698 ite 2 697 129 613 +699 ite 2 696 126 698 +700 eq 1 274 672 +701 eq 1 355 676 +702 and 1 640 701 +703 and 1 614 636 +704 ite 2 703 129 619 +705 ite 2 702 126 704 +706 eq 1 361 676 +707 and 1 640 706 +708 eq 1 248 586 +709 and 1 708 636 +710 ite 2 709 129 625 +711 ite 2 707 126 710 +712 ite 2 700 705 711 +713 ite 2 694 699 712 +714 ite 2 688 693 713 +715 ite 2 682 687 714 +716 ite 2 673 681 715 +717 eq 1 126 716 +718 and 1 668 717 +719 or 1 -666 718 +720 and 1 665 719 +721 or 1 238 666 +722 input 1 f34 +723 or 1 721 -722 +724 and 1 720 723 +725 or 1 240 722 +726 input 1 f35 +727 or 1 725 -726 +728 and 1 724 727 +729 or 1 244 246 +730 or 1 254 729 +731 or 1 259 730 +732 or 1 286 731 +733 or 1 290 732 +734 or 1 293 733 +735 or 1 296 734 +736 or 1 312 735 +737 or 1 317 736 +738 or 1 378 737 +739 or 1 382 738 +740 or 1 385 739 +741 or 1 388 740 +742 or 1 403 741 +743 or 1 408 742 +744 or 1 464 743 +745 or 1 468 744 +746 or 1 471 745 +747 or 1 474 746 +748 or 1 489 747 +749 or 1 494 748 +750 or 1 550 749 +751 or 1 554 750 +752 or 1 557 751 +753 or 1 560 752 +754 or 1 575 753 +755 or 1 580 754 +756 or 1 636 755 +757 or 1 640 756 +758 or 1 643 757 +759 or 1 646 758 +760 or 1 661 759 +761 or 1 666 760 +762 or 1 722 761 +763 or 1 726 762 +764 and 1 728 763 +765 and 1 182 184 +766 or 1 182 184 +767 and 1 186 766 +768 or 1 765 767 +769 or 1 186 766 +770 and 1 188 769 +771 or 1 768 770 +772 or 1 188 769 +773 and 1 190 772 +774 or 1 771 773 +775 or 1 190 772 +776 and 1 -774 775 +777 and 1 192 194 +778 or 1 192 194 +779 and 1 196 778 +780 or 1 777 779 +781 or 1 196 778 +782 and 1 198 781 +783 or 1 780 782 +784 or 1 198 781 +785 and 1 200 784 +786 or 1 783 785 +787 and 1 776 -786 +788 or 1 200 784 +789 and 1 787 788 +790 and 1 202 204 +791 or 1 202 204 +792 and 1 206 791 +793 or 1 790 792 +794 or 1 206 791 +795 and 1 208 794 +796 or 1 793 795 +797 or 1 208 794 +798 and 1 210 797 +799 or 1 796 798 +800 and 1 789 -799 +801 or 1 210 797 +802 and 1 800 801 +803 and 1 212 214 +804 or 1 212 214 +805 and 1 216 804 +806 or 1 803 805 +807 or 1 216 804 +808 and 1 218 807 +809 or 1 806 808 +810 or 1 218 807 +811 and 1 220 810 +812 or 1 809 811 +813 and 1 802 -812 +814 or 1 220 810 +815 and 1 813 814 +816 and 1 222 224 +817 or 1 222 224 +818 and 1 226 817 +819 or 1 816 818 +820 or 1 226 817 +821 and 1 228 820 +822 or 1 819 821 +823 or 1 228 820 +824 and 1 230 823 +825 or 1 822 824 +826 and 1 815 -825 +827 or 1 230 823 +828 and 1 826 827 +829 and 1 232 234 +830 or 1 232 234 +831 and 1 236 830 +832 or 1 829 831 +833 or 1 236 830 +834 and 1 238 833 +835 or 1 832 834 +836 or 1 238 833 +837 and 1 240 836 +838 or 1 835 837 +839 and 1 828 -838 +840 or 1 240 836 +841 and 1 839 840 +842 and 1 764 841 +843 and 1 255 -254 +844 and 1 182 -244 +845 or 1 844 290 +846 and 1 843 845 +847 and 1 261 -259 +848 or 1 843 845 +849 and 1 847 848 +850 or 1 846 849 +851 and 1 285 -286 +852 or 1 847 848 +853 and 1 851 852 +854 or 1 850 853 +855 and 1 289 -290 +856 or 1 851 852 +857 and 1 855 856 +858 or 1 854 857 +859 or 1 855 856 +860 and 1 -858 859 +861 and 1 313 -312 +862 and 1 192 -293 +863 or 1 862 382 +864 and 1 861 863 +865 and 1 319 -317 +866 or 1 861 863 +867 and 1 865 866 +868 or 1 864 867 +869 and 1 377 -378 +870 or 1 865 866 +871 and 1 869 870 +872 or 1 868 871 +873 and 1 381 -382 +874 or 1 869 870 +875 and 1 873 874 +876 or 1 872 875 +877 and 1 860 -876 +878 or 1 873 874 +879 and 1 877 878 +880 and 1 404 -403 +881 and 1 202 -385 +882 or 1 881 468 +883 and 1 880 882 +884 and 1 410 -408 +885 or 1 880 882 +886 and 1 884 885 +887 or 1 883 886 +888 and 1 463 -464 +889 or 1 884 885 +890 and 1 888 889 +891 or 1 887 890 +892 and 1 467 -468 +893 or 1 888 889 +894 and 1 892 893 +895 or 1 891 894 +896 and 1 879 -895 +897 or 1 892 893 +898 and 1 896 897 +899 and 1 490 -489 +900 and 1 212 -471 +901 or 1 900 554 +902 and 1 899 901 +903 and 1 496 -494 +904 or 1 899 901 +905 and 1 903 904 +906 or 1 902 905 +907 and 1 549 -550 +908 or 1 903 904 +909 and 1 907 908 +910 or 1 906 909 +911 and 1 553 -554 +912 or 1 907 908 +913 and 1 911 912 +914 or 1 910 913 +915 and 1 898 -914 +916 or 1 911 912 +917 and 1 915 916 +918 and 1 576 -575 +919 and 1 222 -557 +920 or 1 919 640 +921 and 1 918 920 +922 and 1 582 -580 +923 or 1 918 920 +924 and 1 922 923 +925 or 1 921 924 +926 and 1 635 -636 +927 or 1 922 923 +928 and 1 926 927 +929 or 1 925 928 +930 and 1 639 -640 +931 or 1 926 927 +932 and 1 930 931 +933 or 1 929 932 +934 and 1 917 -933 +935 or 1 930 931 +936 and 1 934 935 +937 and 1 662 -661 +938 and 1 232 -643 +939 or 1 938 726 +940 and 1 937 939 +941 and 1 668 -666 +942 or 1 937 939 +943 and 1 941 942 +944 or 1 940 943 +945 and 1 721 -722 +946 or 1 941 942 +947 and 1 945 946 +948 or 1 944 947 +949 and 1 725 -726 +950 or 1 945 946 +951 and 1 949 950 +952 or 1 948 951 +953 and 1 936 -952 +954 or 1 949 950 +955 and 1 953 954 +956 and 1 842 955 +957 concat 4 262 672 +958 add 4 298 957 +959 srem 4 958 264 +960 eq 1 325 959 +961 and 1 726 960 +962 and 1 673 722 +963 ite 2 962 129 681 +964 ite 2 961 126 963 +965 eq 1 964 6 +966 and 1 956 965 +967 eq 1 298 959 +968 and 1 726 967 +969 and 1 682 722 +970 ite 2 969 129 687 +971 ite 2 968 126 970 +972 eq 1 971 8 +973 and 1 966 972 +974 eq 1 341 959 +975 and 1 726 974 +976 and 1 688 722 +977 ite 2 976 129 693 +978 ite 2 975 126 977 +979 eq 1 978 10 +980 and 1 973 979 +981 eq 1 348 959 +982 and 1 726 981 +983 and 1 694 722 +984 ite 2 983 129 699 +985 ite 2 982 126 984 +986 eq 1 985 12 +987 and 1 980 986 +988 eq 1 355 959 +989 and 1 726 988 +990 and 1 700 722 +991 ite 2 990 129 705 +992 ite 2 989 126 991 +993 eq 1 992 14 +994 and 1 987 993 +995 eq 1 361 959 +996 and 1 726 995 +997 eq 1 248 672 +998 and 1 997 722 +999 ite 2 998 129 711 +1000 ite 2 996 126 999 +1001 eq 1 1000 16 +1002 and 1 994 1001 +1003 concat 4 262 655 +1004 add 4 298 1003 +1005 slice 2 1004 7 0 +1006 ite 2 643 1005 655 +1007 concat 4 262 1006 +1008 sub 4 1007 264 +1009 slice 2 1008 7 0 +1010 ite 2 646 1009 1006 +1011 eq 1 1010 18 +1012 and 1 1002 1011 +1013 eq 1 267 20 +1014 and 1 1012 1013 +1015 eq 1 323 22 +1016 and 1 1014 1015 +1017 eq 1 414 24 +1018 and 1 1016 1017 +1019 eq 1 500 26 +1020 and 1 1018 1019 +1021 eq 1 586 28 +1022 and 1 1020 1021 +1023 eq 1 672 30 +1024 and 1 1022 1023 +1025 eq 1 845 33 +1026 and 1 1024 1025 +1027 eq 1 843 35 +1028 and 1 1026 1027 +1029 eq 1 847 37 +1030 and 1 1028 1029 +1031 eq 1 851 39 +1032 and 1 1030 1031 +1033 eq 1 855 41 +1034 and 1 1032 1033 +1035 eq 1 863 43 +1036 and 1 1034 1035 +1037 eq 1 861 45 +1038 and 1 1036 1037 +1039 eq 1 865 47 +1040 and 1 1038 1039 +1041 eq 1 869 49 +1042 and 1 1040 1041 +1043 eq 1 873 51 +1044 and 1 1042 1043 +1045 eq 1 882 53 +1046 and 1 1044 1045 +1047 eq 1 880 55 +1048 and 1 1046 1047 +1049 eq 1 884 57 +1050 and 1 1048 1049 +1051 eq 1 888 59 +1052 and 1 1050 1051 +1053 eq 1 892 61 +1054 and 1 1052 1053 +1055 eq 1 901 63 +1056 and 1 1054 1055 +1057 eq 1 899 65 +1058 and 1 1056 1057 +1059 eq 1 903 67 +1060 and 1 1058 1059 +1061 eq 1 907 69 +1062 and 1 1060 1061 +1063 eq 1 911 71 +1064 and 1 1062 1063 +1065 eq 1 920 73 +1066 and 1 1064 1065 +1067 eq 1 918 75 +1068 and 1 1066 1067 +1069 eq 1 922 77 +1070 and 1 1068 1069 +1071 eq 1 926 79 +1072 and 1 1070 1071 +1073 eq 1 930 81 +1074 and 1 1072 1073 +1075 eq 1 939 83 +1076 and 1 1074 1075 +1077 eq 1 937 85 +1078 and 1 1076 1077 +1079 eq 1 941 87 +1080 and 1 1078 1079 +1081 eq 1 945 89 +1082 and 1 1080 1081 +1083 eq 1 949 91 +1084 and 1 1082 1083 +1085 and 1 1084 95 +1086 ite 4 190 298 325 +1087 ite 4 200 298 325 +1088 add 4 1086 1087 +1089 ite 4 210 298 325 +1090 add 4 1088 1089 +1091 ite 4 220 298 325 +1092 add 4 1090 1091 +1093 ite 4 230 298 325 +1094 add 4 1092 1093 +1095 ite 4 240 298 325 +1096 add 4 1094 1095 +1097 ulte 1 1096 298 +1098 ite 1 93 1085 -1097 +1099 next 1 95 1098 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-func-interl.btor2 new file mode 100644 index 0000000000..2e0fc6e2bd --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-func-interl.btor2 @@ -0,0 +1,944 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_Slot_0 +7 init 2 6 5 +8 state 2 v_Slot_1 +9 init 2 8 5 +10 state 2 v_Slot_2 +11 init 2 10 5 +12 state 2 v_Slot_3 +13 init 2 12 5 +14 state 2 v_Slot_4 +15 init 2 14 5 +16 state 2 v_Slot_5 +17 init 2 16 5 +18 state 2 v_next +19 init 2 18 5 +20 state 2 v_my_place_P_0 +21 init 2 20 5 +22 state 2 v_my_place_P_1 +23 init 2 22 5 +24 state 2 v_my_place_P_2 +25 init 2 24 5 +26 state 2 v_my_place_P_3 +27 init 2 26 5 +28 state 2 v_my_place_P_4 +29 init 2 28 5 +30 state 2 v_my_place_P_5 +31 init 2 30 5 +32 zero 1 +33 state 1 a_NCS_P_0 +34 init 1 33 32 +35 state 1 a_p1_P_0 +36 init 1 35 32 +37 state 1 a_p2_P_0 +38 init 1 37 32 +39 state 1 a_p3_P_0 +40 init 1 39 32 +41 state 1 a_CS_P_0 +42 init 1 41 32 +43 state 1 a_NCS_P_1 +44 init 1 43 32 +45 state 1 a_p1_P_1 +46 init 1 45 32 +47 state 1 a_p2_P_1 +48 init 1 47 32 +49 state 1 a_p3_P_1 +50 init 1 49 32 +51 state 1 a_CS_P_1 +52 init 1 51 32 +53 state 1 a_NCS_P_2 +54 init 1 53 32 +55 state 1 a_p1_P_2 +56 init 1 55 32 +57 state 1 a_p2_P_2 +58 init 1 57 32 +59 state 1 a_p3_P_2 +60 init 1 59 32 +61 state 1 a_CS_P_2 +62 init 1 61 32 +63 state 1 a_NCS_P_3 +64 init 1 63 32 +65 state 1 a_p1_P_3 +66 init 1 65 32 +67 state 1 a_p2_P_3 +68 init 1 67 32 +69 state 1 a_p3_P_3 +70 init 1 69 32 +71 state 1 a_CS_P_3 +72 init 1 71 32 +73 state 1 a_NCS_P_4 +74 init 1 73 32 +75 state 1 a_p1_P_4 +76 init 1 75 32 +77 state 1 a_p2_P_4 +78 init 1 77 32 +79 state 1 a_p3_P_4 +80 init 1 79 32 +81 state 1 a_CS_P_4 +82 init 1 81 32 +83 state 1 a_NCS_P_5 +84 init 1 83 32 +85 state 1 a_p1_P_5 +86 init 1 85 32 +87 state 1 a_p2_P_5 +88 init 1 87 32 +89 state 1 a_p3_P_5 +90 init 1 89 32 +91 state 1 a_CS_P_5 +92 init 1 91 32 +93 state 1 dve_invalid +94 init 1 93 32 +95 constd 4 1 +96 constd 4 0 +97 ite 4 41 95 96 +98 ite 4 51 95 96 +99 add 4 97 98 +100 ite 4 61 95 96 +101 add 4 99 100 +102 ite 4 71 95 96 +103 add 4 101 102 +104 ite 4 81 95 96 +105 add 4 103 104 +106 ite 4 91 95 96 +107 add 4 105 106 +108 ulte 1 107 95 +109 and 1 -93 -108 +110 bad 109 +111 constd 2 1 +112 input 1 f35 +113 constd 3 0 +114 concat 4 113 30 +115 add 4 95 114 +116 constd 4 6 +117 srem 4 115 116 +118 eq 1 96 117 +119 and 1 112 118 +120 constd 2 0 +121 eq 1 120 30 +122 input 1 f34 +123 and 1 121 122 +124 input 1 f29 +125 concat 4 113 28 +126 add 4 95 125 +127 srem 4 126 116 +128 eq 1 96 127 +129 and 1 124 128 +130 eq 1 120 28 +131 input 1 f28 +132 and 1 130 131 +133 input 1 f23 +134 concat 4 113 26 +135 add 4 95 134 +136 srem 4 135 116 +137 eq 1 96 136 +138 and 1 133 137 +139 eq 1 120 26 +140 input 1 f22 +141 and 1 139 140 +142 input 1 f17 +143 concat 4 113 24 +144 add 4 95 143 +145 srem 4 144 116 +146 eq 1 96 145 +147 and 1 142 146 +148 eq 1 120 24 +149 input 1 f16 +150 and 1 148 149 +151 input 1 f11 +152 concat 4 113 22 +153 add 4 95 152 +154 srem 4 153 116 +155 eq 1 96 154 +156 and 1 151 155 +157 eq 1 120 22 +158 input 1 f10 +159 and 1 157 158 +160 input 1 f05 +161 concat 4 113 20 +162 add 4 95 161 +163 srem 4 162 116 +164 eq 1 96 163 +165 and 1 160 164 +166 eq 1 120 20 +167 input 1 f04 +168 and 1 166 167 +169 xor 2 111 6 +170 ite 2 168 120 169 +171 ite 2 165 111 170 +172 ite 2 159 120 171 +173 ite 2 156 111 172 +174 ite 2 150 120 173 +175 ite 2 147 111 174 +176 ite 2 141 120 175 +177 ite 2 138 111 176 +178 ite 2 132 120 177 +179 ite 2 129 111 178 +180 ite 2 123 120 179 +181 ite 2 119 111 180 +182 xor 2 111 181 +183 next 2 6 182 +184 eq 1 95 117 +185 and 1 112 184 +186 eq 1 111 30 +187 and 1 186 122 +188 eq 1 95 127 +189 and 1 124 188 +190 eq 1 111 28 +191 and 1 190 131 +192 eq 1 95 136 +193 and 1 133 192 +194 eq 1 111 26 +195 and 1 194 140 +196 eq 1 95 145 +197 and 1 142 196 +198 eq 1 111 24 +199 and 1 198 149 +200 eq 1 95 154 +201 and 1 151 200 +202 eq 1 111 22 +203 and 1 202 158 +204 eq 1 95 163 +205 and 1 160 204 +206 eq 1 111 20 +207 and 1 206 167 +208 ite 2 207 120 8 +209 ite 2 205 111 208 +210 ite 2 203 120 209 +211 ite 2 201 111 210 +212 ite 2 199 120 211 +213 ite 2 197 111 212 +214 ite 2 195 120 213 +215 ite 2 193 111 214 +216 ite 2 191 120 215 +217 ite 2 189 111 216 +218 ite 2 187 120 217 +219 ite 2 185 111 218 +220 next 2 8 219 +221 constd 4 2 +222 eq 1 221 117 +223 and 1 112 222 +224 constd 2 2 +225 eq 1 224 30 +226 and 1 225 122 +227 eq 1 221 127 +228 and 1 124 227 +229 eq 1 224 28 +230 and 1 229 131 +231 eq 1 221 136 +232 and 1 133 231 +233 eq 1 224 26 +234 and 1 233 140 +235 eq 1 221 145 +236 and 1 142 235 +237 eq 1 224 24 +238 and 1 237 149 +239 eq 1 221 154 +240 and 1 151 239 +241 eq 1 224 22 +242 and 1 241 158 +243 eq 1 221 163 +244 and 1 160 243 +245 eq 1 224 20 +246 and 1 245 167 +247 ite 2 246 120 10 +248 ite 2 244 111 247 +249 ite 2 242 120 248 +250 ite 2 240 111 249 +251 ite 2 238 120 250 +252 ite 2 236 111 251 +253 ite 2 234 120 252 +254 ite 2 232 111 253 +255 ite 2 230 120 254 +256 ite 2 228 111 255 +257 ite 2 226 120 256 +258 ite 2 223 111 257 +259 next 2 10 258 +260 constd 4 3 +261 eq 1 260 117 +262 and 1 112 261 +263 constd 2 3 +264 eq 1 263 30 +265 and 1 264 122 +266 eq 1 260 127 +267 and 1 124 266 +268 eq 1 263 28 +269 and 1 268 131 +270 eq 1 260 136 +271 and 1 133 270 +272 eq 1 263 26 +273 and 1 272 140 +274 eq 1 260 145 +275 and 1 142 274 +276 eq 1 263 24 +277 and 1 276 149 +278 eq 1 260 154 +279 and 1 151 278 +280 eq 1 263 22 +281 and 1 280 158 +282 eq 1 260 163 +283 and 1 160 282 +284 eq 1 263 20 +285 and 1 284 167 +286 ite 2 285 120 12 +287 ite 2 283 111 286 +288 ite 2 281 120 287 +289 ite 2 279 111 288 +290 ite 2 277 120 289 +291 ite 2 275 111 290 +292 ite 2 273 120 291 +293 ite 2 271 111 292 +294 ite 2 269 120 293 +295 ite 2 267 111 294 +296 ite 2 265 120 295 +297 ite 2 262 111 296 +298 next 2 12 297 +299 constd 4 4 +300 eq 1 299 117 +301 and 1 112 300 +302 constd 2 4 +303 eq 1 302 30 +304 and 1 303 122 +305 eq 1 299 127 +306 and 1 124 305 +307 eq 1 302 28 +308 and 1 307 131 +309 eq 1 299 136 +310 and 1 133 309 +311 eq 1 302 26 +312 and 1 311 140 +313 eq 1 299 145 +314 and 1 142 313 +315 eq 1 302 24 +316 and 1 315 149 +317 eq 1 299 154 +318 and 1 151 317 +319 eq 1 302 22 +320 and 1 319 158 +321 eq 1 299 163 +322 and 1 160 321 +323 eq 1 302 20 +324 and 1 323 167 +325 ite 2 324 120 14 +326 ite 2 322 111 325 +327 ite 2 320 120 326 +328 ite 2 318 111 327 +329 ite 2 316 120 328 +330 ite 2 314 111 329 +331 ite 2 312 120 330 +332 ite 2 310 111 331 +333 ite 2 308 120 332 +334 ite 2 306 111 333 +335 ite 2 304 120 334 +336 ite 2 301 111 335 +337 next 2 14 336 +338 constd 4 5 +339 eq 1 338 117 +340 and 1 112 339 +341 constd 2 5 +342 eq 1 341 30 +343 and 1 342 122 +344 eq 1 338 127 +345 and 1 124 344 +346 eq 1 341 28 +347 and 1 346 131 +348 eq 1 338 136 +349 and 1 133 348 +350 eq 1 341 26 +351 and 1 350 140 +352 eq 1 338 145 +353 and 1 142 352 +354 eq 1 341 24 +355 and 1 354 149 +356 eq 1 338 154 +357 and 1 151 356 +358 eq 1 341 22 +359 and 1 358 158 +360 eq 1 338 163 +361 and 1 160 360 +362 eq 1 341 20 +363 and 1 362 167 +364 ite 2 363 120 16 +365 ite 2 361 111 364 +366 ite 2 359 120 365 +367 ite 2 357 111 366 +368 ite 2 355 120 367 +369 ite 2 353 111 368 +370 ite 2 351 120 369 +371 ite 2 349 111 370 +372 ite 2 347 120 371 +373 ite 2 345 111 372 +374 ite 2 343 120 373 +375 ite 2 340 111 374 +376 next 2 16 375 +377 input 1 f31 +378 concat 4 113 18 +379 sub 4 378 116 +380 slice 2 379 7 0 +381 input 1 f30 +382 add 4 95 378 +383 slice 2 382 7 0 +384 input 1 f25 +385 input 1 f24 +386 input 1 f19 +387 input 1 f18 +388 input 1 f13 +389 input 1 f12 +390 input 1 f07 +391 input 1 f06 +392 input 1 f01 +393 input 1 f00 +394 ite 2 393 383 18 +395 ite 2 392 380 394 +396 ite 2 391 383 395 +397 ite 2 390 380 396 +398 ite 2 389 383 397 +399 ite 2 388 380 398 +400 ite 2 387 383 399 +401 ite 2 386 380 400 +402 ite 2 385 383 401 +403 ite 2 384 380 402 +404 ite 2 381 383 403 +405 ite 2 377 380 404 +406 next 2 18 405 +407 input 1 f02 +408 srem 4 161 116 +409 slice 2 408 7 0 +410 ite 2 393 18 20 +411 ite 2 407 409 410 +412 next 2 20 411 +413 input 1 f08 +414 srem 4 152 116 +415 slice 2 414 7 0 +416 ite 2 391 18 22 +417 ite 2 413 415 416 +418 next 2 22 417 +419 input 1 f14 +420 srem 4 143 116 +421 slice 2 420 7 0 +422 ite 2 389 18 24 +423 ite 2 419 421 422 +424 next 2 24 423 +425 input 1 f20 +426 srem 4 134 116 +427 slice 2 426 7 0 +428 ite 2 387 18 26 +429 ite 2 425 427 428 +430 next 2 26 429 +431 input 1 f26 +432 srem 4 125 116 +433 slice 2 432 7 0 +434 ite 2 385 18 28 +435 ite 2 431 433 434 +436 next 2 28 435 +437 input 1 f32 +438 srem 4 114 116 +439 slice 2 438 7 0 +440 ite 2 381 18 30 +441 ite 2 437 439 440 +442 next 2 30 441 +443 and 1 -33 -393 +444 or 1 443 160 +445 next 1 33 -444 +446 or 1 35 393 +447 and 1 446 -392 +448 and 1 447 -407 +449 next 1 35 448 +450 or 1 37 392 +451 or 1 450 407 +452 input 1 f03 +453 and 1 451 -452 +454 next 1 37 453 +455 or 1 39 452 +456 and 1 455 -167 +457 next 1 39 456 +458 or 1 41 167 +459 and 1 458 -160 +460 next 1 41 459 +461 and 1 -43 -391 +462 or 1 461 151 +463 next 1 43 -462 +464 or 1 45 391 +465 and 1 464 -390 +466 and 1 465 -413 +467 next 1 45 466 +468 or 1 47 390 +469 or 1 468 413 +470 input 1 f09 +471 and 1 469 -470 +472 next 1 47 471 +473 or 1 49 470 +474 and 1 473 -158 +475 next 1 49 474 +476 or 1 51 158 +477 and 1 476 -151 +478 next 1 51 477 +479 and 1 -53 -389 +480 or 1 479 142 +481 next 1 53 -480 +482 or 1 55 389 +483 and 1 482 -388 +484 and 1 483 -419 +485 next 1 55 484 +486 or 1 57 388 +487 or 1 486 419 +488 input 1 f15 +489 and 1 487 -488 +490 next 1 57 489 +491 or 1 59 488 +492 and 1 491 -149 +493 next 1 59 492 +494 or 1 61 149 +495 and 1 494 -142 +496 next 1 61 495 +497 and 1 -63 -387 +498 or 1 497 133 +499 next 1 63 -498 +500 or 1 65 387 +501 and 1 500 -386 +502 and 1 501 -425 +503 next 1 65 502 +504 or 1 67 386 +505 or 1 504 425 +506 input 1 f21 +507 and 1 505 -506 +508 next 1 67 507 +509 or 1 69 506 +510 and 1 509 -140 +511 next 1 69 510 +512 or 1 71 140 +513 and 1 512 -133 +514 next 1 71 513 +515 and 1 -73 -385 +516 or 1 515 124 +517 next 1 73 -516 +518 or 1 75 385 +519 and 1 518 -384 +520 and 1 519 -431 +521 next 1 75 520 +522 or 1 77 384 +523 or 1 522 431 +524 input 1 f27 +525 and 1 523 -524 +526 next 1 77 525 +527 or 1 79 524 +528 and 1 527 -131 +529 next 1 79 528 +530 or 1 81 131 +531 and 1 530 -124 +532 next 1 81 531 +533 and 1 -83 -381 +534 or 1 533 112 +535 next 1 83 -534 +536 or 1 85 381 +537 and 1 536 -377 +538 and 1 537 -437 +539 next 1 85 538 +540 or 1 87 377 +541 or 1 540 437 +542 input 1 f33 +543 and 1 541 -542 +544 next 1 87 543 +545 or 1 89 542 +546 and 1 545 -122 +547 next 1 89 546 +548 or 1 91 122 +549 and 1 548 -112 +550 next 1 91 549 +551 or 1 -33 -393 +552 and 1 35 362 +553 or 1 -392 552 +554 and 1 551 553 +555 and 1 35 -362 +556 or 1 -407 555 +557 and 1 554 556 +558 ite 2 323 14 16 +559 ite 2 284 12 558 +560 ite 2 245 10 559 +561 ite 2 206 8 560 +562 ite 2 166 169 561 +563 eq 1 111 562 +564 and 1 37 563 +565 or 1 -452 564 +566 and 1 557 565 +567 or 1 39 -167 +568 and 1 566 567 +569 or 1 41 -160 +570 and 1 568 569 +571 or 1 -43 -391 +572 and 1 570 571 +573 and 1 45 358 +574 or 1 -390 573 +575 and 1 572 574 +576 and 1 45 -358 +577 or 1 -413 576 +578 and 1 575 577 +579 ite 2 319 14 16 +580 ite 2 280 12 579 +581 ite 2 241 10 580 +582 ite 2 202 8 581 +583 ite 2 157 169 582 +584 eq 1 111 583 +585 and 1 47 584 +586 or 1 -470 585 +587 and 1 578 586 +588 or 1 49 -158 +589 and 1 587 588 +590 or 1 51 -151 +591 and 1 589 590 +592 or 1 -53 -389 +593 and 1 591 592 +594 and 1 55 354 +595 or 1 -388 594 +596 and 1 593 595 +597 and 1 55 -354 +598 or 1 -419 597 +599 and 1 596 598 +600 ite 2 315 14 16 +601 ite 2 276 12 600 +602 ite 2 237 10 601 +603 ite 2 198 8 602 +604 ite 2 148 169 603 +605 eq 1 111 604 +606 and 1 57 605 +607 or 1 -488 606 +608 and 1 599 607 +609 or 1 59 -149 +610 and 1 608 609 +611 or 1 61 -142 +612 and 1 610 611 +613 or 1 -63 -387 +614 and 1 612 613 +615 and 1 65 350 +616 or 1 -386 615 +617 and 1 614 616 +618 and 1 65 -350 +619 or 1 -425 618 +620 and 1 617 619 +621 ite 2 311 14 16 +622 ite 2 272 12 621 +623 ite 2 233 10 622 +624 ite 2 194 8 623 +625 ite 2 139 169 624 +626 eq 1 111 625 +627 and 1 67 626 +628 or 1 -506 627 +629 and 1 620 628 +630 or 1 69 -140 +631 and 1 629 630 +632 or 1 71 -133 +633 and 1 631 632 +634 or 1 -73 -385 +635 and 1 633 634 +636 and 1 75 346 +637 or 1 -384 636 +638 and 1 635 637 +639 and 1 75 -346 +640 or 1 -431 639 +641 and 1 638 640 +642 ite 2 307 14 16 +643 ite 2 268 12 642 +644 ite 2 229 10 643 +645 ite 2 190 8 644 +646 ite 2 130 169 645 +647 eq 1 111 646 +648 and 1 77 647 +649 or 1 -524 648 +650 and 1 641 649 +651 or 1 79 -131 +652 and 1 650 651 +653 or 1 81 -124 +654 and 1 652 653 +655 or 1 -83 -381 +656 and 1 654 655 +657 and 1 85 342 +658 or 1 -377 657 +659 and 1 656 658 +660 and 1 85 -342 +661 or 1 -437 660 +662 and 1 659 661 +663 ite 2 303 14 16 +664 ite 2 264 12 663 +665 ite 2 225 10 664 +666 ite 2 186 8 665 +667 ite 2 121 169 666 +668 eq 1 111 667 +669 and 1 87 668 +670 or 1 -542 669 +671 and 1 662 670 +672 or 1 89 -122 +673 and 1 671 672 +674 or 1 91 -112 +675 and 1 673 674 +676 or 1 393 392 +677 or 1 407 676 +678 or 1 452 677 +679 or 1 167 678 +680 or 1 160 679 +681 or 1 391 680 +682 or 1 390 681 +683 or 1 413 682 +684 or 1 470 683 +685 or 1 158 684 +686 or 1 151 685 +687 or 1 389 686 +688 or 1 388 687 +689 or 1 419 688 +690 or 1 488 689 +691 or 1 149 690 +692 or 1 142 691 +693 or 1 387 692 +694 or 1 386 693 +695 or 1 425 694 +696 or 1 506 695 +697 or 1 140 696 +698 or 1 133 697 +699 or 1 385 698 +700 or 1 384 699 +701 or 1 431 700 +702 or 1 524 701 +703 or 1 131 702 +704 or 1 124 703 +705 or 1 381 704 +706 or 1 377 705 +707 or 1 437 706 +708 or 1 542 707 +709 or 1 122 708 +710 or 1 112 709 +711 and 1 675 710 +712 and 1 393 392 +713 and 1 407 676 +714 or 1 712 713 +715 and 1 452 677 +716 or 1 714 715 +717 and 1 167 678 +718 or 1 716 717 +719 and 1 160 679 +720 or 1 718 719 +721 and 1 391 680 +722 or 1 720 721 +723 and 1 390 681 +724 or 1 722 723 +725 and 1 413 682 +726 or 1 724 725 +727 and 1 470 683 +728 or 1 726 727 +729 and 1 158 684 +730 or 1 728 729 +731 and 1 151 685 +732 or 1 730 731 +733 and 1 389 686 +734 or 1 732 733 +735 and 1 388 687 +736 or 1 734 735 +737 and 1 419 688 +738 or 1 736 737 +739 and 1 488 689 +740 or 1 738 739 +741 and 1 149 690 +742 or 1 740 741 +743 and 1 142 691 +744 or 1 742 743 +745 and 1 387 692 +746 or 1 744 745 +747 and 1 386 693 +748 or 1 746 747 +749 and 1 425 694 +750 or 1 748 749 +751 and 1 506 695 +752 or 1 750 751 +753 and 1 140 696 +754 or 1 752 753 +755 and 1 133 697 +756 or 1 754 755 +757 and 1 385 698 +758 or 1 756 757 +759 and 1 384 699 +760 or 1 758 759 +761 and 1 431 700 +762 or 1 760 761 +763 and 1 524 701 +764 or 1 762 763 +765 and 1 131 702 +766 or 1 764 765 +767 and 1 124 703 +768 or 1 766 767 +769 and 1 381 704 +770 or 1 768 769 +771 and 1 377 705 +772 or 1 770 771 +773 and 1 437 706 +774 or 1 772 773 +775 and 1 542 707 +776 or 1 774 775 +777 and 1 122 708 +778 or 1 776 777 +779 and 1 112 709 +780 or 1 778 779 +781 and 1 711 -780 +782 and 1 -33 35 +783 or 1 -33 35 +784 and 1 37 783 +785 or 1 782 784 +786 or 1 37 783 +787 and 1 39 786 +788 or 1 785 787 +789 or 1 39 786 +790 and 1 41 789 +791 or 1 788 790 +792 or 1 41 789 +793 and 1 -791 792 +794 and 1 -43 45 +795 or 1 -43 45 +796 and 1 47 795 +797 or 1 794 796 +798 or 1 47 795 +799 and 1 49 798 +800 or 1 797 799 +801 or 1 49 798 +802 and 1 51 801 +803 or 1 800 802 +804 and 1 793 -803 +805 or 1 51 801 +806 and 1 804 805 +807 and 1 -53 55 +808 or 1 -53 55 +809 and 1 57 808 +810 or 1 807 809 +811 or 1 57 808 +812 and 1 59 811 +813 or 1 810 812 +814 or 1 59 811 +815 and 1 61 814 +816 or 1 813 815 +817 and 1 806 -816 +818 or 1 61 814 +819 and 1 817 818 +820 and 1 -63 65 +821 or 1 -63 65 +822 and 1 67 821 +823 or 1 820 822 +824 or 1 67 821 +825 and 1 69 824 +826 or 1 823 825 +827 or 1 69 824 +828 and 1 71 827 +829 or 1 826 828 +830 and 1 819 -829 +831 or 1 71 827 +832 and 1 830 831 +833 and 1 -73 75 +834 or 1 -73 75 +835 and 1 77 834 +836 or 1 833 835 +837 or 1 77 834 +838 and 1 79 837 +839 or 1 836 838 +840 or 1 79 837 +841 and 1 81 840 +842 or 1 839 841 +843 and 1 832 -842 +844 or 1 81 840 +845 and 1 843 844 +846 and 1 -83 85 +847 or 1 -83 85 +848 and 1 87 847 +849 or 1 846 848 +850 or 1 87 847 +851 and 1 89 850 +852 or 1 849 851 +853 or 1 89 850 +854 and 1 91 853 +855 or 1 852 854 +856 and 1 845 -855 +857 or 1 91 853 +858 and 1 856 857 +859 and 1 781 858 +860 and 1 448 444 +861 or 1 448 444 +862 and 1 453 861 +863 or 1 860 862 +864 or 1 453 861 +865 and 1 456 864 +866 or 1 863 865 +867 or 1 456 864 +868 and 1 459 867 +869 or 1 866 868 +870 or 1 459 867 +871 and 1 -869 870 +872 and 1 466 462 +873 or 1 466 462 +874 and 1 471 873 +875 or 1 872 874 +876 or 1 471 873 +877 and 1 474 876 +878 or 1 875 877 +879 or 1 474 876 +880 and 1 477 879 +881 or 1 878 880 +882 and 1 871 -881 +883 or 1 477 879 +884 and 1 882 883 +885 and 1 484 480 +886 or 1 484 480 +887 and 1 489 886 +888 or 1 885 887 +889 or 1 489 886 +890 and 1 492 889 +891 or 1 888 890 +892 or 1 492 889 +893 and 1 495 892 +894 or 1 891 893 +895 and 1 884 -894 +896 or 1 495 892 +897 and 1 895 896 +898 and 1 502 498 +899 or 1 502 498 +900 and 1 507 899 +901 or 1 898 900 +902 or 1 507 899 +903 and 1 510 902 +904 or 1 901 903 +905 or 1 510 902 +906 and 1 513 905 +907 or 1 904 906 +908 and 1 897 -907 +909 or 1 513 905 +910 and 1 908 909 +911 and 1 520 516 +912 or 1 520 516 +913 and 1 525 912 +914 or 1 911 913 +915 or 1 525 912 +916 and 1 528 915 +917 or 1 914 916 +918 or 1 528 915 +919 and 1 531 918 +920 or 1 917 919 +921 and 1 910 -920 +922 or 1 531 918 +923 and 1 921 922 +924 and 1 538 534 +925 or 1 538 534 +926 and 1 543 925 +927 or 1 924 926 +928 or 1 543 925 +929 and 1 546 928 +930 or 1 927 929 +931 or 1 546 928 +932 and 1 549 931 +933 or 1 930 932 +934 and 1 923 -933 +935 or 1 549 931 +936 and 1 934 935 +937 and 1 859 936 +938 and 1 937 -93 +939 next 1 93 -938 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..5c199bdd3a --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-back-serstep.btor2 @@ -0,0 +1,1152 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_Slot_2 +11 init 2 10 5 +12 state 2 nextv_Slot_3 +13 init 2 12 5 +14 state 2 nextv_Slot_4 +15 init 2 14 5 +16 state 2 nextv_Slot_5 +17 init 2 16 5 +18 state 2 nextv_next +19 init 2 18 5 +20 state 2 nextv_my_place_P_0 +21 init 2 20 5 +22 state 2 nextv_my_place_P_1 +23 init 2 22 5 +24 state 2 nextv_my_place_P_2 +25 init 2 24 5 +26 state 2 nextv_my_place_P_3 +27 init 2 26 5 +28 state 2 nextv_my_place_P_4 +29 init 2 28 5 +30 state 2 nextv_my_place_P_5 +31 init 2 30 5 +32 zero 1 +33 state 1 nexta_NCS_P_0 +34 init 1 33 32 +35 state 1 nexta_p1_P_0 +36 init 1 35 32 +37 state 1 nexta_p2_P_0 +38 init 1 37 32 +39 state 1 nexta_p3_P_0 +40 init 1 39 32 +41 state 1 nexta_CS_P_0 +42 init 1 41 32 +43 state 1 nexta_NCS_P_1 +44 init 1 43 32 +45 state 1 nexta_p1_P_1 +46 init 1 45 32 +47 state 1 nexta_p2_P_1 +48 init 1 47 32 +49 state 1 nexta_p3_P_1 +50 init 1 49 32 +51 state 1 nexta_CS_P_1 +52 init 1 51 32 +53 state 1 nexta_NCS_P_2 +54 init 1 53 32 +55 state 1 nexta_p1_P_2 +56 init 1 55 32 +57 state 1 nexta_p2_P_2 +58 init 1 57 32 +59 state 1 nexta_p3_P_2 +60 init 1 59 32 +61 state 1 nexta_CS_P_2 +62 init 1 61 32 +63 state 1 nexta_NCS_P_3 +64 init 1 63 32 +65 state 1 nexta_p1_P_3 +66 init 1 65 32 +67 state 1 nexta_p2_P_3 +68 init 1 67 32 +69 state 1 nexta_p3_P_3 +70 init 1 69 32 +71 state 1 nexta_CS_P_3 +72 init 1 71 32 +73 state 1 nexta_NCS_P_4 +74 init 1 73 32 +75 state 1 nexta_p1_P_4 +76 init 1 75 32 +77 state 1 nexta_p2_P_4 +78 init 1 77 32 +79 state 1 nexta_p3_P_4 +80 init 1 79 32 +81 state 1 nexta_CS_P_4 +82 init 1 81 32 +83 state 1 nexta_NCS_P_5 +84 init 1 83 32 +85 state 1 nexta_p1_P_5 +86 init 1 85 32 +87 state 1 nexta_p2_P_5 +88 init 1 87 32 +89 state 1 nexta_p3_P_5 +90 init 1 89 32 +91 state 1 nexta_CS_P_5 +92 init 1 91 32 +93 state 1 dve_initialized +94 init 1 93 32 +95 state 1 dve_valid +96 init 1 95 32 +97 and 1 33 -35 +98 and 1 97 -37 +99 and 1 98 -39 +100 and 1 99 -41 +101 and 1 100 43 +102 and 1 101 -45 +103 and 1 102 -47 +104 and 1 103 -49 +105 and 1 104 -51 +106 and 1 105 53 +107 and 1 106 -55 +108 and 1 107 -57 +109 and 1 108 -59 +110 and 1 109 -61 +111 and 1 110 63 +112 and 1 111 -65 +113 and 1 112 -67 +114 and 1 113 -69 +115 and 1 114 -71 +116 and 1 115 73 +117 and 1 116 -75 +118 and 1 117 -77 +119 and 1 118 -79 +120 and 1 119 -81 +121 and 1 120 83 +122 and 1 121 -85 +123 and 1 122 -87 +124 and 1 123 -89 +125 and 1 124 -91 +126 constd 2 1 +127 eq 1 126 6 +128 and 1 125 127 +129 constd 2 0 +130 eq 1 129 8 +131 and 1 128 130 +132 eq 1 129 10 +133 and 1 131 132 +134 eq 1 129 12 +135 and 1 133 134 +136 eq 1 129 14 +137 and 1 135 136 +138 eq 1 129 16 +139 and 1 137 138 +140 eq 1 129 18 +141 and 1 139 140 +142 eq 1 129 20 +143 and 1 141 142 +144 eq 1 129 22 +145 and 1 143 144 +146 eq 1 129 24 +147 and 1 145 146 +148 eq 1 129 26 +149 and 1 147 148 +150 eq 1 129 28 +151 and 1 149 150 +152 eq 1 129 30 +153 and 1 151 152 +154 and 1 95 153 +155 bad 154 +156 input 2 v_Slot_0 +157 next 2 6 156 +158 input 2 v_Slot_1 +159 next 2 8 158 +160 input 2 v_Slot_2 +161 next 2 10 160 +162 input 2 v_Slot_3 +163 next 2 12 162 +164 input 2 v_Slot_4 +165 next 2 14 164 +166 input 2 v_Slot_5 +167 next 2 16 166 +168 input 2 v_next +169 next 2 18 168 +170 input 2 v_my_place_P_0 +171 next 2 20 170 +172 input 2 v_my_place_P_1 +173 next 2 22 172 +174 input 2 v_my_place_P_2 +175 next 2 24 174 +176 input 2 v_my_place_P_3 +177 next 2 26 176 +178 input 2 v_my_place_P_4 +179 next 2 28 178 +180 input 2 v_my_place_P_5 +181 next 2 30 180 +182 input 1 a_NCS_P_0 +183 next 1 33 182 +184 input 1 a_p1_P_0 +185 next 1 35 184 +186 input 1 a_p2_P_0 +187 next 1 37 186 +188 input 1 a_p3_P_0 +189 next 1 39 188 +190 input 1 a_CS_P_0 +191 next 1 41 190 +192 input 1 a_NCS_P_1 +193 next 1 43 192 +194 input 1 a_p1_P_1 +195 next 1 45 194 +196 input 1 a_p2_P_1 +197 next 1 47 196 +198 input 1 a_p3_P_1 +199 next 1 49 198 +200 input 1 a_CS_P_1 +201 next 1 51 200 +202 input 1 a_NCS_P_2 +203 next 1 53 202 +204 input 1 a_p1_P_2 +205 next 1 55 204 +206 input 1 a_p2_P_2 +207 next 1 57 206 +208 input 1 a_p3_P_2 +209 next 1 59 208 +210 input 1 a_CS_P_2 +211 next 1 61 210 +212 input 1 a_NCS_P_3 +213 next 1 63 212 +214 input 1 a_p1_P_3 +215 next 1 65 214 +216 input 1 a_p2_P_3 +217 next 1 67 216 +218 input 1 a_p3_P_3 +219 next 1 69 218 +220 input 1 a_CS_P_3 +221 next 1 71 220 +222 input 1 a_NCS_P_4 +223 next 1 73 222 +224 input 1 a_p1_P_4 +225 next 1 75 224 +226 input 1 a_p2_P_4 +227 next 1 77 226 +228 input 1 a_p3_P_4 +229 next 1 79 228 +230 input 1 a_CS_P_4 +231 next 1 81 230 +232 input 1 a_NCS_P_5 +233 next 1 83 232 +234 input 1 a_p1_P_5 +235 next 1 85 234 +236 input 1 a_p2_P_5 +237 next 1 87 236 +238 input 1 a_p3_P_5 +239 next 1 89 238 +240 input 1 a_CS_P_5 +241 next 1 91 240 +242 const 1 1 +243 next 1 93 242 +244 input 1 f00 +245 or 1 182 -244 +246 input 1 f01 +247 or 1 184 244 +248 constd 2 5 +249 ite 2 244 168 170 +250 eq 1 248 249 +251 and 1 247 250 +252 or 1 -246 251 +253 and 1 245 252 +254 input 1 f02 +255 and 1 247 -246 +256 and 1 -250 255 +257 or 1 -254 256 +258 and 1 253 257 +259 input 1 f03 +260 or 1 186 246 +261 or 1 260 254 +262 constd 3 0 +263 concat 4 262 249 +264 constd 4 6 +265 srem 4 263 264 +266 slice 2 265 7 0 +267 ite 2 254 266 249 +268 eq 1 129 267 +269 eq 1 126 267 +270 constd 2 2 +271 eq 1 270 267 +272 constd 2 3 +273 eq 1 272 267 +274 constd 2 4 +275 eq 1 274 267 +276 ite 2 275 164 166 +277 ite 2 273 162 276 +278 ite 2 271 160 277 +279 ite 2 269 158 278 +280 ite 2 268 156 279 +281 eq 1 126 280 +282 and 1 261 281 +283 or 1 -259 282 +284 and 1 258 283 +285 or 1 188 259 +286 input 1 f04 +287 or 1 285 -286 +288 and 1 284 287 +289 or 1 190 286 +290 input 1 f05 +291 or 1 289 -290 +292 and 1 288 291 +293 input 1 f06 +294 or 1 192 -293 +295 and 1 292 294 +296 input 1 f07 +297 or 1 194 293 +298 constd 4 1 +299 concat 4 262 168 +300 add 4 298 299 +301 slice 2 300 7 0 +302 ite 2 244 301 168 +303 concat 4 262 302 +304 sub 4 303 264 +305 slice 2 304 7 0 +306 ite 2 246 305 302 +307 ite 2 293 306 172 +308 eq 1 248 307 +309 and 1 297 308 +310 or 1 -296 309 +311 and 1 295 310 +312 input 1 f08 +313 and 1 297 -296 +314 and 1 -308 313 +315 or 1 -312 314 +316 and 1 311 315 +317 input 1 f09 +318 or 1 196 296 +319 or 1 318 312 +320 concat 4 262 307 +321 srem 4 320 264 +322 slice 2 321 7 0 +323 ite 2 312 322 307 +324 eq 1 129 323 +325 constd 4 0 +326 concat 4 262 267 +327 add 4 298 326 +328 srem 4 327 264 +329 eq 1 325 328 +330 and 1 290 329 +331 add 4 264 326 +332 sub 4 331 298 +333 srem 4 332 264 +334 eq 1 325 333 +335 and 1 286 334 +336 ite 2 335 129 156 +337 ite 2 330 126 336 +338 eq 1 126 323 +339 eq 1 298 328 +340 and 1 290 339 +341 eq 1 298 333 +342 and 1 286 341 +343 ite 2 342 129 158 +344 ite 2 340 126 343 +345 eq 1 270 323 +346 constd 4 2 +347 eq 1 346 328 +348 and 1 290 347 +349 eq 1 346 333 +350 and 1 286 349 +351 ite 2 350 129 160 +352 ite 2 348 126 351 +353 eq 1 272 323 +354 constd 4 3 +355 eq 1 354 328 +356 and 1 290 355 +357 eq 1 354 333 +358 and 1 286 357 +359 ite 2 358 129 162 +360 ite 2 356 126 359 +361 eq 1 274 323 +362 constd 4 4 +363 eq 1 362 328 +364 and 1 290 363 +365 eq 1 362 333 +366 and 1 286 365 +367 ite 2 366 129 164 +368 ite 2 364 126 367 +369 constd 4 5 +370 eq 1 369 328 +371 and 1 290 370 +372 eq 1 369 333 +373 and 1 286 372 +374 ite 2 373 129 166 +375 ite 2 371 126 374 +376 ite 2 361 368 375 +377 ite 2 353 360 376 +378 ite 2 345 352 377 +379 ite 2 338 344 378 +380 ite 2 324 337 379 +381 eq 1 126 380 +382 and 1 319 381 +383 or 1 -317 382 +384 and 1 316 383 +385 or 1 198 317 +386 input 1 f10 +387 or 1 385 -386 +388 and 1 384 387 +389 or 1 200 386 +390 input 1 f11 +391 or 1 389 -390 +392 and 1 388 391 +393 input 1 f12 +394 or 1 202 -393 +395 and 1 392 394 +396 input 1 f13 +397 or 1 204 393 +398 concat 4 262 306 +399 add 4 298 398 +400 slice 2 399 7 0 +401 ite 2 293 400 306 +402 concat 4 262 401 +403 sub 4 402 264 +404 slice 2 403 7 0 +405 ite 2 296 404 401 +406 ite 2 393 405 174 +407 eq 1 248 406 +408 and 1 397 407 +409 or 1 -396 408 +410 and 1 395 409 +411 input 1 f14 +412 and 1 397 -396 +413 and 1 -407 412 +414 or 1 -411 413 +415 and 1 410 414 +416 input 1 f15 +417 or 1 206 396 +418 or 1 417 411 +419 concat 4 262 406 +420 srem 4 419 264 +421 slice 2 420 7 0 +422 ite 2 411 421 406 +423 eq 1 129 422 +424 concat 4 262 323 +425 add 4 298 424 +426 srem 4 425 264 +427 eq 1 325 426 +428 and 1 390 427 +429 add 4 264 424 +430 sub 4 429 298 +431 srem 4 430 264 +432 eq 1 325 431 +433 and 1 386 432 +434 ite 2 433 129 337 +435 ite 2 428 126 434 +436 eq 1 126 422 +437 eq 1 298 426 +438 and 1 390 437 +439 eq 1 298 431 +440 and 1 386 439 +441 ite 2 440 129 344 +442 ite 2 438 126 441 +443 eq 1 270 422 +444 eq 1 346 426 +445 and 1 390 444 +446 eq 1 346 431 +447 and 1 386 446 +448 ite 2 447 129 352 +449 ite 2 445 126 448 +450 eq 1 272 422 +451 eq 1 354 426 +452 and 1 390 451 +453 eq 1 354 431 +454 and 1 386 453 +455 ite 2 454 129 360 +456 ite 2 452 126 455 +457 eq 1 274 422 +458 eq 1 362 426 +459 and 1 390 458 +460 eq 1 362 431 +461 and 1 386 460 +462 ite 2 461 129 368 +463 ite 2 459 126 462 +464 eq 1 369 426 +465 and 1 390 464 +466 eq 1 369 431 +467 and 1 386 466 +468 ite 2 467 129 375 +469 ite 2 465 126 468 +470 ite 2 457 463 469 +471 ite 2 450 456 470 +472 ite 2 443 449 471 +473 ite 2 436 442 472 +474 ite 2 423 435 473 +475 eq 1 126 474 +476 and 1 418 475 +477 or 1 -416 476 +478 and 1 415 477 +479 or 1 208 416 +480 input 1 f16 +481 or 1 479 -480 +482 and 1 478 481 +483 or 1 210 480 +484 input 1 f17 +485 or 1 483 -484 +486 and 1 482 485 +487 input 1 f18 +488 or 1 212 -487 +489 and 1 486 488 +490 input 1 f19 +491 or 1 214 487 +492 concat 4 262 405 +493 add 4 298 492 +494 slice 2 493 7 0 +495 ite 2 393 494 405 +496 concat 4 262 495 +497 sub 4 496 264 +498 slice 2 497 7 0 +499 ite 2 396 498 495 +500 ite 2 487 499 176 +501 eq 1 248 500 +502 and 1 491 501 +503 or 1 -490 502 +504 and 1 489 503 +505 input 1 f20 +506 and 1 491 -490 +507 and 1 -501 506 +508 or 1 -505 507 +509 and 1 504 508 +510 input 1 f21 +511 or 1 216 490 +512 or 1 511 505 +513 concat 4 262 500 +514 srem 4 513 264 +515 slice 2 514 7 0 +516 ite 2 505 515 500 +517 eq 1 129 516 +518 concat 4 262 422 +519 add 4 298 518 +520 srem 4 519 264 +521 eq 1 325 520 +522 and 1 484 521 +523 add 4 264 518 +524 sub 4 523 298 +525 srem 4 524 264 +526 eq 1 325 525 +527 and 1 480 526 +528 ite 2 527 129 435 +529 ite 2 522 126 528 +530 eq 1 126 516 +531 eq 1 298 520 +532 and 1 484 531 +533 eq 1 298 525 +534 and 1 480 533 +535 ite 2 534 129 442 +536 ite 2 532 126 535 +537 eq 1 270 516 +538 eq 1 346 520 +539 and 1 484 538 +540 eq 1 346 525 +541 and 1 480 540 +542 ite 2 541 129 449 +543 ite 2 539 126 542 +544 eq 1 272 516 +545 eq 1 354 520 +546 and 1 484 545 +547 eq 1 354 525 +548 and 1 480 547 +549 ite 2 548 129 456 +550 ite 2 546 126 549 +551 eq 1 274 516 +552 eq 1 362 520 +553 and 1 484 552 +554 eq 1 362 525 +555 and 1 480 554 +556 ite 2 555 129 463 +557 ite 2 553 126 556 +558 eq 1 369 520 +559 and 1 484 558 +560 eq 1 369 525 +561 and 1 480 560 +562 ite 2 561 129 469 +563 ite 2 559 126 562 +564 ite 2 551 557 563 +565 ite 2 544 550 564 +566 ite 2 537 543 565 +567 ite 2 530 536 566 +568 ite 2 517 529 567 +569 eq 1 126 568 +570 and 1 512 569 +571 or 1 -510 570 +572 and 1 509 571 +573 or 1 218 510 +574 input 1 f22 +575 or 1 573 -574 +576 and 1 572 575 +577 or 1 220 574 +578 input 1 f23 +579 or 1 577 -578 +580 and 1 576 579 +581 input 1 f24 +582 or 1 222 -581 +583 and 1 580 582 +584 input 1 f25 +585 or 1 224 581 +586 concat 4 262 499 +587 add 4 298 586 +588 slice 2 587 7 0 +589 ite 2 487 588 499 +590 concat 4 262 589 +591 sub 4 590 264 +592 slice 2 591 7 0 +593 ite 2 490 592 589 +594 ite 2 581 593 178 +595 eq 1 248 594 +596 and 1 585 595 +597 or 1 -584 596 +598 and 1 583 597 +599 input 1 f26 +600 and 1 585 -584 +601 and 1 -595 600 +602 or 1 -599 601 +603 and 1 598 602 +604 input 1 f27 +605 or 1 226 584 +606 or 1 605 599 +607 concat 4 262 594 +608 srem 4 607 264 +609 slice 2 608 7 0 +610 ite 2 599 609 594 +611 eq 1 129 610 +612 concat 4 262 516 +613 add 4 298 612 +614 srem 4 613 264 +615 eq 1 325 614 +616 and 1 578 615 +617 add 4 264 612 +618 sub 4 617 298 +619 srem 4 618 264 +620 eq 1 325 619 +621 and 1 574 620 +622 ite 2 621 129 529 +623 ite 2 616 126 622 +624 eq 1 126 610 +625 eq 1 298 614 +626 and 1 578 625 +627 eq 1 298 619 +628 and 1 574 627 +629 ite 2 628 129 536 +630 ite 2 626 126 629 +631 eq 1 270 610 +632 eq 1 346 614 +633 and 1 578 632 +634 eq 1 346 619 +635 and 1 574 634 +636 ite 2 635 129 543 +637 ite 2 633 126 636 +638 eq 1 272 610 +639 eq 1 354 614 +640 and 1 578 639 +641 eq 1 354 619 +642 and 1 574 641 +643 ite 2 642 129 550 +644 ite 2 640 126 643 +645 eq 1 274 610 +646 eq 1 362 614 +647 and 1 578 646 +648 eq 1 362 619 +649 and 1 574 648 +650 ite 2 649 129 557 +651 ite 2 647 126 650 +652 eq 1 369 614 +653 and 1 578 652 +654 eq 1 369 619 +655 and 1 574 654 +656 ite 2 655 129 563 +657 ite 2 653 126 656 +658 ite 2 645 651 657 +659 ite 2 638 644 658 +660 ite 2 631 637 659 +661 ite 2 624 630 660 +662 ite 2 611 623 661 +663 eq 1 126 662 +664 and 1 606 663 +665 or 1 -604 664 +666 and 1 603 665 +667 or 1 228 604 +668 input 1 f28 +669 or 1 667 -668 +670 and 1 666 669 +671 or 1 230 668 +672 input 1 f29 +673 or 1 671 -672 +674 and 1 670 673 +675 input 1 f30 +676 or 1 232 -675 +677 and 1 674 676 +678 input 1 f31 +679 or 1 234 675 +680 concat 4 262 593 +681 add 4 298 680 +682 slice 2 681 7 0 +683 ite 2 581 682 593 +684 concat 4 262 683 +685 sub 4 684 264 +686 slice 2 685 7 0 +687 ite 2 584 686 683 +688 ite 2 675 687 180 +689 eq 1 248 688 +690 and 1 679 689 +691 or 1 -678 690 +692 and 1 677 691 +693 input 1 f32 +694 and 1 679 -678 +695 and 1 -689 694 +696 or 1 -693 695 +697 and 1 692 696 +698 input 1 f33 +699 or 1 236 678 +700 or 1 699 693 +701 concat 4 262 688 +702 srem 4 701 264 +703 slice 2 702 7 0 +704 ite 2 693 703 688 +705 eq 1 129 704 +706 concat 4 262 610 +707 add 4 298 706 +708 srem 4 707 264 +709 eq 1 325 708 +710 and 1 672 709 +711 add 4 264 706 +712 sub 4 711 298 +713 srem 4 712 264 +714 eq 1 325 713 +715 and 1 668 714 +716 ite 2 715 129 623 +717 ite 2 710 126 716 +718 eq 1 126 704 +719 eq 1 298 708 +720 and 1 672 719 +721 eq 1 298 713 +722 and 1 668 721 +723 ite 2 722 129 630 +724 ite 2 720 126 723 +725 eq 1 270 704 +726 eq 1 346 708 +727 and 1 672 726 +728 eq 1 346 713 +729 and 1 668 728 +730 ite 2 729 129 637 +731 ite 2 727 126 730 +732 eq 1 272 704 +733 eq 1 354 708 +734 and 1 672 733 +735 eq 1 354 713 +736 and 1 668 735 +737 ite 2 736 129 644 +738 ite 2 734 126 737 +739 eq 1 274 704 +740 eq 1 362 708 +741 and 1 672 740 +742 eq 1 362 713 +743 and 1 668 742 +744 ite 2 743 129 651 +745 ite 2 741 126 744 +746 eq 1 369 708 +747 and 1 672 746 +748 eq 1 369 713 +749 and 1 668 748 +750 ite 2 749 129 657 +751 ite 2 747 126 750 +752 ite 2 739 745 751 +753 ite 2 732 738 752 +754 ite 2 725 731 753 +755 ite 2 718 724 754 +756 ite 2 705 717 755 +757 eq 1 126 756 +758 and 1 700 757 +759 or 1 -698 758 +760 and 1 697 759 +761 or 1 238 698 +762 input 1 f34 +763 or 1 761 -762 +764 and 1 760 763 +765 or 1 240 762 +766 input 1 f35 +767 or 1 765 -766 +768 and 1 764 767 +769 or 1 244 246 +770 or 1 254 769 +771 or 1 259 770 +772 or 1 286 771 +773 or 1 290 772 +774 or 1 293 773 +775 or 1 296 774 +776 or 1 312 775 +777 or 1 317 776 +778 or 1 386 777 +779 or 1 390 778 +780 or 1 393 779 +781 or 1 396 780 +782 or 1 411 781 +783 or 1 416 782 +784 or 1 480 783 +785 or 1 484 784 +786 or 1 487 785 +787 or 1 490 786 +788 or 1 505 787 +789 or 1 510 788 +790 or 1 574 789 +791 or 1 578 790 +792 or 1 581 791 +793 or 1 584 792 +794 or 1 599 793 +795 or 1 604 794 +796 or 1 668 795 +797 or 1 672 796 +798 or 1 675 797 +799 or 1 678 798 +800 or 1 693 799 +801 or 1 698 800 +802 or 1 762 801 +803 or 1 766 802 +804 and 1 768 803 +805 and 1 182 184 +806 or 1 182 184 +807 and 1 186 806 +808 or 1 805 807 +809 or 1 186 806 +810 and 1 188 809 +811 or 1 808 810 +812 or 1 188 809 +813 and 1 190 812 +814 or 1 811 813 +815 or 1 190 812 +816 and 1 -814 815 +817 and 1 192 194 +818 or 1 192 194 +819 and 1 196 818 +820 or 1 817 819 +821 or 1 196 818 +822 and 1 198 821 +823 or 1 820 822 +824 or 1 198 821 +825 and 1 200 824 +826 or 1 823 825 +827 and 1 816 -826 +828 or 1 200 824 +829 and 1 827 828 +830 and 1 202 204 +831 or 1 202 204 +832 and 1 206 831 +833 or 1 830 832 +834 or 1 206 831 +835 and 1 208 834 +836 or 1 833 835 +837 or 1 208 834 +838 and 1 210 837 +839 or 1 836 838 +840 and 1 829 -839 +841 or 1 210 837 +842 and 1 840 841 +843 and 1 212 214 +844 or 1 212 214 +845 and 1 216 844 +846 or 1 843 845 +847 or 1 216 844 +848 and 1 218 847 +849 or 1 846 848 +850 or 1 218 847 +851 and 1 220 850 +852 or 1 849 851 +853 and 1 842 -852 +854 or 1 220 850 +855 and 1 853 854 +856 and 1 222 224 +857 or 1 222 224 +858 and 1 226 857 +859 or 1 856 858 +860 or 1 226 857 +861 and 1 228 860 +862 or 1 859 861 +863 or 1 228 860 +864 and 1 230 863 +865 or 1 862 864 +866 and 1 855 -865 +867 or 1 230 863 +868 and 1 866 867 +869 and 1 232 234 +870 or 1 232 234 +871 and 1 236 870 +872 or 1 869 871 +873 or 1 236 870 +874 and 1 238 873 +875 or 1 872 874 +876 or 1 238 873 +877 and 1 240 876 +878 or 1 875 877 +879 and 1 868 -878 +880 or 1 240 876 +881 and 1 879 880 +882 and 1 804 881 +883 and 1 255 -254 +884 and 1 182 -244 +885 or 1 884 290 +886 and 1 883 885 +887 and 1 261 -259 +888 or 1 883 885 +889 and 1 887 888 +890 or 1 886 889 +891 and 1 285 -286 +892 or 1 887 888 +893 and 1 891 892 +894 or 1 890 893 +895 and 1 289 -290 +896 or 1 891 892 +897 and 1 895 896 +898 or 1 894 897 +899 or 1 895 896 +900 and 1 -898 899 +901 and 1 313 -312 +902 and 1 192 -293 +903 or 1 902 390 +904 and 1 901 903 +905 and 1 319 -317 +906 or 1 901 903 +907 and 1 905 906 +908 or 1 904 907 +909 and 1 385 -386 +910 or 1 905 906 +911 and 1 909 910 +912 or 1 908 911 +913 and 1 389 -390 +914 or 1 909 910 +915 and 1 913 914 +916 or 1 912 915 +917 and 1 900 -916 +918 or 1 913 914 +919 and 1 917 918 +920 and 1 412 -411 +921 and 1 202 -393 +922 or 1 921 484 +923 and 1 920 922 +924 and 1 418 -416 +925 or 1 920 922 +926 and 1 924 925 +927 or 1 923 926 +928 and 1 479 -480 +929 or 1 924 925 +930 and 1 928 929 +931 or 1 927 930 +932 and 1 483 -484 +933 or 1 928 929 +934 and 1 932 933 +935 or 1 931 934 +936 and 1 919 -935 +937 or 1 932 933 +938 and 1 936 937 +939 and 1 506 -505 +940 and 1 212 -487 +941 or 1 940 578 +942 and 1 939 941 +943 and 1 512 -510 +944 or 1 939 941 +945 and 1 943 944 +946 or 1 942 945 +947 and 1 573 -574 +948 or 1 943 944 +949 and 1 947 948 +950 or 1 946 949 +951 and 1 577 -578 +952 or 1 947 948 +953 and 1 951 952 +954 or 1 950 953 +955 and 1 938 -954 +956 or 1 951 952 +957 and 1 955 956 +958 and 1 600 -599 +959 and 1 222 -581 +960 or 1 959 672 +961 and 1 958 960 +962 and 1 606 -604 +963 or 1 958 960 +964 and 1 962 963 +965 or 1 961 964 +966 and 1 667 -668 +967 or 1 962 963 +968 and 1 966 967 +969 or 1 965 968 +970 and 1 671 -672 +971 or 1 966 967 +972 and 1 970 971 +973 or 1 969 972 +974 and 1 957 -973 +975 or 1 970 971 +976 and 1 974 975 +977 and 1 694 -693 +978 and 1 232 -675 +979 or 1 978 766 +980 and 1 977 979 +981 and 1 700 -698 +982 or 1 977 979 +983 and 1 981 982 +984 or 1 980 983 +985 and 1 761 -762 +986 or 1 981 982 +987 and 1 985 986 +988 or 1 984 987 +989 and 1 765 -766 +990 or 1 985 986 +991 and 1 989 990 +992 or 1 988 991 +993 and 1 976 -992 +994 or 1 989 990 +995 and 1 993 994 +996 and 1 882 995 +997 concat 4 262 704 +998 add 4 298 997 +999 srem 4 998 264 +1000 eq 1 325 999 +1001 and 1 766 1000 +1002 add 4 264 997 +1003 sub 4 1002 298 +1004 srem 4 1003 264 +1005 eq 1 325 1004 +1006 and 1 762 1005 +1007 ite 2 1006 129 717 +1008 ite 2 1001 126 1007 +1009 eq 1 1008 6 +1010 and 1 996 1009 +1011 eq 1 298 999 +1012 and 1 766 1011 +1013 eq 1 298 1004 +1014 and 1 762 1013 +1015 ite 2 1014 129 724 +1016 ite 2 1012 126 1015 +1017 eq 1 1016 8 +1018 and 1 1010 1017 +1019 eq 1 346 999 +1020 and 1 766 1019 +1021 eq 1 346 1004 +1022 and 1 762 1021 +1023 ite 2 1022 129 731 +1024 ite 2 1020 126 1023 +1025 eq 1 1024 10 +1026 and 1 1018 1025 +1027 eq 1 354 999 +1028 and 1 766 1027 +1029 eq 1 354 1004 +1030 and 1 762 1029 +1031 ite 2 1030 129 738 +1032 ite 2 1028 126 1031 +1033 eq 1 1032 12 +1034 and 1 1026 1033 +1035 eq 1 362 999 +1036 and 1 766 1035 +1037 eq 1 362 1004 +1038 and 1 762 1037 +1039 ite 2 1038 129 745 +1040 ite 2 1036 126 1039 +1041 eq 1 1040 14 +1042 and 1 1034 1041 +1043 eq 1 369 999 +1044 and 1 766 1043 +1045 eq 1 369 1004 +1046 and 1 762 1045 +1047 ite 2 1046 129 751 +1048 ite 2 1044 126 1047 +1049 eq 1 1048 16 +1050 and 1 1042 1049 +1051 concat 4 262 687 +1052 add 4 298 1051 +1053 slice 2 1052 7 0 +1054 ite 2 675 1053 687 +1055 concat 4 262 1054 +1056 sub 4 1055 264 +1057 slice 2 1056 7 0 +1058 ite 2 678 1057 1054 +1059 eq 1 1058 18 +1060 and 1 1050 1059 +1061 eq 1 267 20 +1062 and 1 1060 1061 +1063 eq 1 323 22 +1064 and 1 1062 1063 +1065 eq 1 422 24 +1066 and 1 1064 1065 +1067 eq 1 516 26 +1068 and 1 1066 1067 +1069 eq 1 610 28 +1070 and 1 1068 1069 +1071 eq 1 704 30 +1072 and 1 1070 1071 +1073 eq 1 885 33 +1074 and 1 1072 1073 +1075 eq 1 883 35 +1076 and 1 1074 1075 +1077 eq 1 887 37 +1078 and 1 1076 1077 +1079 eq 1 891 39 +1080 and 1 1078 1079 +1081 eq 1 895 41 +1082 and 1 1080 1081 +1083 eq 1 903 43 +1084 and 1 1082 1083 +1085 eq 1 901 45 +1086 and 1 1084 1085 +1087 eq 1 905 47 +1088 and 1 1086 1087 +1089 eq 1 909 49 +1090 and 1 1088 1089 +1091 eq 1 913 51 +1092 and 1 1090 1091 +1093 eq 1 922 53 +1094 and 1 1092 1093 +1095 eq 1 920 55 +1096 and 1 1094 1095 +1097 eq 1 924 57 +1098 and 1 1096 1097 +1099 eq 1 928 59 +1100 and 1 1098 1099 +1101 eq 1 932 61 +1102 and 1 1100 1101 +1103 eq 1 941 63 +1104 and 1 1102 1103 +1105 eq 1 939 65 +1106 and 1 1104 1105 +1107 eq 1 943 67 +1108 and 1 1106 1107 +1109 eq 1 947 69 +1110 and 1 1108 1109 +1111 eq 1 951 71 +1112 and 1 1110 1111 +1113 eq 1 960 73 +1114 and 1 1112 1113 +1115 eq 1 958 75 +1116 and 1 1114 1115 +1117 eq 1 962 77 +1118 and 1 1116 1117 +1119 eq 1 966 79 +1120 and 1 1118 1119 +1121 eq 1 970 81 +1122 and 1 1120 1121 +1123 eq 1 979 83 +1124 and 1 1122 1123 +1125 eq 1 977 85 +1126 and 1 1124 1125 +1127 eq 1 981 87 +1128 and 1 1126 1127 +1129 eq 1 985 89 +1130 and 1 1128 1129 +1131 eq 1 989 91 +1132 and 1 1130 1131 +1133 and 1 1132 95 +1134 ite 4 190 298 325 +1135 ite 4 200 298 325 +1136 add 4 1134 1135 +1137 ite 4 210 298 325 +1138 add 4 1136 1137 +1139 ite 4 220 298 325 +1140 add 4 1138 1139 +1141 ite 4 230 298 325 +1142 add 4 1140 1141 +1143 ite 4 240 298 325 +1144 add 4 1142 1143 +1145 ulte 1 1144 298 +1146 ite 1 93 1133 -1145 +1147 next 1 95 1146 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-func-interl.btor2 new file mode 100644 index 0000000000..f0c8fd000f --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-func-interl.btor2 @@ -0,0 +1,998 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_Slot_0 +7 init 2 6 5 +8 state 2 v_Slot_1 +9 init 2 8 5 +10 state 2 v_Slot_2 +11 init 2 10 5 +12 state 2 v_Slot_3 +13 init 2 12 5 +14 state 2 v_Slot_4 +15 init 2 14 5 +16 state 2 v_Slot_5 +17 init 2 16 5 +18 state 2 v_next +19 init 2 18 5 +20 state 2 v_my_place_P_0 +21 init 2 20 5 +22 state 2 v_my_place_P_1 +23 init 2 22 5 +24 state 2 v_my_place_P_2 +25 init 2 24 5 +26 state 2 v_my_place_P_3 +27 init 2 26 5 +28 state 2 v_my_place_P_4 +29 init 2 28 5 +30 state 2 v_my_place_P_5 +31 init 2 30 5 +32 zero 1 +33 state 1 a_NCS_P_0 +34 init 1 33 32 +35 state 1 a_p1_P_0 +36 init 1 35 32 +37 state 1 a_p2_P_0 +38 init 1 37 32 +39 state 1 a_p3_P_0 +40 init 1 39 32 +41 state 1 a_CS_P_0 +42 init 1 41 32 +43 state 1 a_NCS_P_1 +44 init 1 43 32 +45 state 1 a_p1_P_1 +46 init 1 45 32 +47 state 1 a_p2_P_1 +48 init 1 47 32 +49 state 1 a_p3_P_1 +50 init 1 49 32 +51 state 1 a_CS_P_1 +52 init 1 51 32 +53 state 1 a_NCS_P_2 +54 init 1 53 32 +55 state 1 a_p1_P_2 +56 init 1 55 32 +57 state 1 a_p2_P_2 +58 init 1 57 32 +59 state 1 a_p3_P_2 +60 init 1 59 32 +61 state 1 a_CS_P_2 +62 init 1 61 32 +63 state 1 a_NCS_P_3 +64 init 1 63 32 +65 state 1 a_p1_P_3 +66 init 1 65 32 +67 state 1 a_p2_P_3 +68 init 1 67 32 +69 state 1 a_p3_P_3 +70 init 1 69 32 +71 state 1 a_CS_P_3 +72 init 1 71 32 +73 state 1 a_NCS_P_4 +74 init 1 73 32 +75 state 1 a_p1_P_4 +76 init 1 75 32 +77 state 1 a_p2_P_4 +78 init 1 77 32 +79 state 1 a_p3_P_4 +80 init 1 79 32 +81 state 1 a_CS_P_4 +82 init 1 81 32 +83 state 1 a_NCS_P_5 +84 init 1 83 32 +85 state 1 a_p1_P_5 +86 init 1 85 32 +87 state 1 a_p2_P_5 +88 init 1 87 32 +89 state 1 a_p3_P_5 +90 init 1 89 32 +91 state 1 a_CS_P_5 +92 init 1 91 32 +93 state 1 dve_invalid +94 init 1 93 32 +95 constd 4 1 +96 constd 4 0 +97 ite 4 41 95 96 +98 ite 4 51 95 96 +99 add 4 97 98 +100 ite 4 61 95 96 +101 add 4 99 100 +102 ite 4 71 95 96 +103 add 4 101 102 +104 ite 4 81 95 96 +105 add 4 103 104 +106 ite 4 91 95 96 +107 add 4 105 106 +108 ulte 1 107 95 +109 and 1 -93 -108 +110 bad 109 +111 constd 2 1 +112 input 1 f35 +113 constd 3 0 +114 concat 4 113 30 +115 add 4 95 114 +116 constd 4 6 +117 srem 4 115 116 +118 eq 1 96 117 +119 and 1 112 118 +120 input 1 f34 +121 add 4 116 114 +122 sub 4 121 95 +123 srem 4 122 116 +124 eq 1 96 123 +125 and 1 120 124 +126 constd 2 0 +127 input 1 f29 +128 concat 4 113 28 +129 add 4 95 128 +130 srem 4 129 116 +131 eq 1 96 130 +132 and 1 127 131 +133 input 1 f28 +134 add 4 116 128 +135 sub 4 134 95 +136 srem 4 135 116 +137 eq 1 96 136 +138 and 1 133 137 +139 input 1 f23 +140 concat 4 113 26 +141 add 4 95 140 +142 srem 4 141 116 +143 eq 1 96 142 +144 and 1 139 143 +145 input 1 f22 +146 add 4 116 140 +147 sub 4 146 95 +148 srem 4 147 116 +149 eq 1 96 148 +150 and 1 145 149 +151 input 1 f17 +152 concat 4 113 24 +153 add 4 95 152 +154 srem 4 153 116 +155 eq 1 96 154 +156 and 1 151 155 +157 input 1 f16 +158 add 4 116 152 +159 sub 4 158 95 +160 srem 4 159 116 +161 eq 1 96 160 +162 and 1 157 161 +163 input 1 f11 +164 concat 4 113 22 +165 add 4 95 164 +166 srem 4 165 116 +167 eq 1 96 166 +168 and 1 163 167 +169 input 1 f10 +170 add 4 116 164 +171 sub 4 170 95 +172 srem 4 171 116 +173 eq 1 96 172 +174 and 1 169 173 +175 input 1 f05 +176 concat 4 113 20 +177 add 4 95 176 +178 srem 4 177 116 +179 eq 1 96 178 +180 and 1 175 179 +181 input 1 f04 +182 add 4 116 176 +183 sub 4 182 95 +184 srem 4 183 116 +185 eq 1 96 184 +186 and 1 181 185 +187 xor 2 111 6 +188 ite 2 186 126 187 +189 ite 2 180 111 188 +190 ite 2 174 126 189 +191 ite 2 168 111 190 +192 ite 2 162 126 191 +193 ite 2 156 111 192 +194 ite 2 150 126 193 +195 ite 2 144 111 194 +196 ite 2 138 126 195 +197 ite 2 132 111 196 +198 ite 2 125 126 197 +199 ite 2 119 111 198 +200 xor 2 111 199 +201 next 2 6 200 +202 eq 1 95 117 +203 and 1 112 202 +204 eq 1 95 123 +205 and 1 120 204 +206 eq 1 95 130 +207 and 1 127 206 +208 eq 1 95 136 +209 and 1 133 208 +210 eq 1 95 142 +211 and 1 139 210 +212 eq 1 95 148 +213 and 1 145 212 +214 eq 1 95 154 +215 and 1 151 214 +216 eq 1 95 160 +217 and 1 157 216 +218 eq 1 95 166 +219 and 1 163 218 +220 eq 1 95 172 +221 and 1 169 220 +222 eq 1 95 178 +223 and 1 175 222 +224 eq 1 95 184 +225 and 1 181 224 +226 ite 2 225 126 8 +227 ite 2 223 111 226 +228 ite 2 221 126 227 +229 ite 2 219 111 228 +230 ite 2 217 126 229 +231 ite 2 215 111 230 +232 ite 2 213 126 231 +233 ite 2 211 111 232 +234 ite 2 209 126 233 +235 ite 2 207 111 234 +236 ite 2 205 126 235 +237 ite 2 203 111 236 +238 next 2 8 237 +239 constd 4 2 +240 eq 1 239 117 +241 and 1 112 240 +242 eq 1 239 123 +243 and 1 120 242 +244 eq 1 239 130 +245 and 1 127 244 +246 eq 1 239 136 +247 and 1 133 246 +248 eq 1 239 142 +249 and 1 139 248 +250 eq 1 239 148 +251 and 1 145 250 +252 eq 1 239 154 +253 and 1 151 252 +254 eq 1 239 160 +255 and 1 157 254 +256 eq 1 239 166 +257 and 1 163 256 +258 eq 1 239 172 +259 and 1 169 258 +260 eq 1 239 178 +261 and 1 175 260 +262 eq 1 239 184 +263 and 1 181 262 +264 ite 2 263 126 10 +265 ite 2 261 111 264 +266 ite 2 259 126 265 +267 ite 2 257 111 266 +268 ite 2 255 126 267 +269 ite 2 253 111 268 +270 ite 2 251 126 269 +271 ite 2 249 111 270 +272 ite 2 247 126 271 +273 ite 2 245 111 272 +274 ite 2 243 126 273 +275 ite 2 241 111 274 +276 next 2 10 275 +277 constd 4 3 +278 eq 1 277 117 +279 and 1 112 278 +280 eq 1 277 123 +281 and 1 120 280 +282 eq 1 277 130 +283 and 1 127 282 +284 eq 1 277 136 +285 and 1 133 284 +286 eq 1 277 142 +287 and 1 139 286 +288 eq 1 277 148 +289 and 1 145 288 +290 eq 1 277 154 +291 and 1 151 290 +292 eq 1 277 160 +293 and 1 157 292 +294 eq 1 277 166 +295 and 1 163 294 +296 eq 1 277 172 +297 and 1 169 296 +298 eq 1 277 178 +299 and 1 175 298 +300 eq 1 277 184 +301 and 1 181 300 +302 ite 2 301 126 12 +303 ite 2 299 111 302 +304 ite 2 297 126 303 +305 ite 2 295 111 304 +306 ite 2 293 126 305 +307 ite 2 291 111 306 +308 ite 2 289 126 307 +309 ite 2 287 111 308 +310 ite 2 285 126 309 +311 ite 2 283 111 310 +312 ite 2 281 126 311 +313 ite 2 279 111 312 +314 next 2 12 313 +315 constd 4 4 +316 eq 1 315 117 +317 and 1 112 316 +318 eq 1 315 123 +319 and 1 120 318 +320 eq 1 315 130 +321 and 1 127 320 +322 eq 1 315 136 +323 and 1 133 322 +324 eq 1 315 142 +325 and 1 139 324 +326 eq 1 315 148 +327 and 1 145 326 +328 eq 1 315 154 +329 and 1 151 328 +330 eq 1 315 160 +331 and 1 157 330 +332 eq 1 315 166 +333 and 1 163 332 +334 eq 1 315 172 +335 and 1 169 334 +336 eq 1 315 178 +337 and 1 175 336 +338 eq 1 315 184 +339 and 1 181 338 +340 ite 2 339 126 14 +341 ite 2 337 111 340 +342 ite 2 335 126 341 +343 ite 2 333 111 342 +344 ite 2 331 126 343 +345 ite 2 329 111 344 +346 ite 2 327 126 345 +347 ite 2 325 111 346 +348 ite 2 323 126 347 +349 ite 2 321 111 348 +350 ite 2 319 126 349 +351 ite 2 317 111 350 +352 next 2 14 351 +353 constd 4 5 +354 eq 1 353 117 +355 and 1 112 354 +356 eq 1 353 123 +357 and 1 120 356 +358 eq 1 353 130 +359 and 1 127 358 +360 eq 1 353 136 +361 and 1 133 360 +362 eq 1 353 142 +363 and 1 139 362 +364 eq 1 353 148 +365 and 1 145 364 +366 eq 1 353 154 +367 and 1 151 366 +368 eq 1 353 160 +369 and 1 157 368 +370 eq 1 353 166 +371 and 1 163 370 +372 eq 1 353 172 +373 and 1 169 372 +374 eq 1 353 178 +375 and 1 175 374 +376 eq 1 353 184 +377 and 1 181 376 +378 ite 2 377 126 16 +379 ite 2 375 111 378 +380 ite 2 373 126 379 +381 ite 2 371 111 380 +382 ite 2 369 126 381 +383 ite 2 367 111 382 +384 ite 2 365 126 383 +385 ite 2 363 111 384 +386 ite 2 361 126 385 +387 ite 2 359 111 386 +388 ite 2 357 126 387 +389 ite 2 355 111 388 +390 next 2 16 389 +391 input 1 f31 +392 concat 4 113 18 +393 sub 4 392 116 +394 slice 2 393 7 0 +395 input 1 f30 +396 add 4 95 392 +397 slice 2 396 7 0 +398 input 1 f25 +399 input 1 f24 +400 input 1 f19 +401 input 1 f18 +402 input 1 f13 +403 input 1 f12 +404 input 1 f07 +405 input 1 f06 +406 input 1 f01 +407 input 1 f00 +408 ite 2 407 397 18 +409 ite 2 406 394 408 +410 ite 2 405 397 409 +411 ite 2 404 394 410 +412 ite 2 403 397 411 +413 ite 2 402 394 412 +414 ite 2 401 397 413 +415 ite 2 400 394 414 +416 ite 2 399 397 415 +417 ite 2 398 394 416 +418 ite 2 395 397 417 +419 ite 2 391 394 418 +420 next 2 18 419 +421 input 1 f02 +422 srem 4 176 116 +423 slice 2 422 7 0 +424 ite 2 407 18 20 +425 ite 2 421 423 424 +426 next 2 20 425 +427 input 1 f08 +428 srem 4 164 116 +429 slice 2 428 7 0 +430 ite 2 405 18 22 +431 ite 2 427 429 430 +432 next 2 22 431 +433 input 1 f14 +434 srem 4 152 116 +435 slice 2 434 7 0 +436 ite 2 403 18 24 +437 ite 2 433 435 436 +438 next 2 24 437 +439 input 1 f20 +440 srem 4 140 116 +441 slice 2 440 7 0 +442 ite 2 401 18 26 +443 ite 2 439 441 442 +444 next 2 26 443 +445 input 1 f26 +446 srem 4 128 116 +447 slice 2 446 7 0 +448 ite 2 399 18 28 +449 ite 2 445 447 448 +450 next 2 28 449 +451 input 1 f32 +452 srem 4 114 116 +453 slice 2 452 7 0 +454 ite 2 395 18 30 +455 ite 2 451 453 454 +456 next 2 30 455 +457 and 1 -33 -407 +458 or 1 457 175 +459 next 1 33 -458 +460 or 1 35 407 +461 and 1 460 -406 +462 and 1 461 -421 +463 next 1 35 462 +464 or 1 37 406 +465 or 1 464 421 +466 input 1 f03 +467 and 1 465 -466 +468 next 1 37 467 +469 or 1 39 466 +470 and 1 469 -181 +471 next 1 39 470 +472 or 1 41 181 +473 and 1 472 -175 +474 next 1 41 473 +475 and 1 -43 -405 +476 or 1 475 163 +477 next 1 43 -476 +478 or 1 45 405 +479 and 1 478 -404 +480 and 1 479 -427 +481 next 1 45 480 +482 or 1 47 404 +483 or 1 482 427 +484 input 1 f09 +485 and 1 483 -484 +486 next 1 47 485 +487 or 1 49 484 +488 and 1 487 -169 +489 next 1 49 488 +490 or 1 51 169 +491 and 1 490 -163 +492 next 1 51 491 +493 and 1 -53 -403 +494 or 1 493 151 +495 next 1 53 -494 +496 or 1 55 403 +497 and 1 496 -402 +498 and 1 497 -433 +499 next 1 55 498 +500 or 1 57 402 +501 or 1 500 433 +502 input 1 f15 +503 and 1 501 -502 +504 next 1 57 503 +505 or 1 59 502 +506 and 1 505 -157 +507 next 1 59 506 +508 or 1 61 157 +509 and 1 508 -151 +510 next 1 61 509 +511 and 1 -63 -401 +512 or 1 511 139 +513 next 1 63 -512 +514 or 1 65 401 +515 and 1 514 -400 +516 and 1 515 -439 +517 next 1 65 516 +518 or 1 67 400 +519 or 1 518 439 +520 input 1 f21 +521 and 1 519 -520 +522 next 1 67 521 +523 or 1 69 520 +524 and 1 523 -145 +525 next 1 69 524 +526 or 1 71 145 +527 and 1 526 -139 +528 next 1 71 527 +529 and 1 -73 -399 +530 or 1 529 127 +531 next 1 73 -530 +532 or 1 75 399 +533 and 1 532 -398 +534 and 1 533 -445 +535 next 1 75 534 +536 or 1 77 398 +537 or 1 536 445 +538 input 1 f27 +539 and 1 537 -538 +540 next 1 77 539 +541 or 1 79 538 +542 and 1 541 -133 +543 next 1 79 542 +544 or 1 81 133 +545 and 1 544 -127 +546 next 1 81 545 +547 and 1 -83 -395 +548 or 1 547 112 +549 next 1 83 -548 +550 or 1 85 395 +551 and 1 550 -391 +552 and 1 551 -451 +553 next 1 85 552 +554 or 1 87 391 +555 or 1 554 451 +556 input 1 f33 +557 and 1 555 -556 +558 next 1 87 557 +559 or 1 89 556 +560 and 1 559 -120 +561 next 1 89 560 +562 or 1 91 120 +563 and 1 562 -112 +564 next 1 91 563 +565 or 1 -33 -407 +566 constd 2 5 +567 eq 1 566 20 +568 and 1 35 567 +569 or 1 -406 568 +570 and 1 565 569 +571 and 1 35 -567 +572 or 1 -421 571 +573 and 1 570 572 +574 eq 1 126 20 +575 eq 1 111 20 +576 constd 2 2 +577 eq 1 576 20 +578 constd 2 3 +579 eq 1 578 20 +580 constd 2 4 +581 eq 1 580 20 +582 ite 2 581 14 16 +583 ite 2 579 12 582 +584 ite 2 577 10 583 +585 ite 2 575 8 584 +586 ite 2 574 187 585 +587 eq 1 111 586 +588 and 1 37 587 +589 or 1 -466 588 +590 and 1 573 589 +591 or 1 39 -181 +592 and 1 590 591 +593 or 1 41 -175 +594 and 1 592 593 +595 or 1 -43 -405 +596 and 1 594 595 +597 eq 1 566 22 +598 and 1 45 597 +599 or 1 -404 598 +600 and 1 596 599 +601 and 1 45 -597 +602 or 1 -427 601 +603 and 1 600 602 +604 eq 1 126 22 +605 eq 1 111 22 +606 eq 1 576 22 +607 eq 1 578 22 +608 eq 1 580 22 +609 ite 2 608 14 16 +610 ite 2 607 12 609 +611 ite 2 606 10 610 +612 ite 2 605 8 611 +613 ite 2 604 187 612 +614 eq 1 111 613 +615 and 1 47 614 +616 or 1 -484 615 +617 and 1 603 616 +618 or 1 49 -169 +619 and 1 617 618 +620 or 1 51 -163 +621 and 1 619 620 +622 or 1 -53 -403 +623 and 1 621 622 +624 eq 1 566 24 +625 and 1 55 624 +626 or 1 -402 625 +627 and 1 623 626 +628 and 1 55 -624 +629 or 1 -433 628 +630 and 1 627 629 +631 eq 1 126 24 +632 eq 1 111 24 +633 eq 1 576 24 +634 eq 1 578 24 +635 eq 1 580 24 +636 ite 2 635 14 16 +637 ite 2 634 12 636 +638 ite 2 633 10 637 +639 ite 2 632 8 638 +640 ite 2 631 187 639 +641 eq 1 111 640 +642 and 1 57 641 +643 or 1 -502 642 +644 and 1 630 643 +645 or 1 59 -157 +646 and 1 644 645 +647 or 1 61 -151 +648 and 1 646 647 +649 or 1 -63 -401 +650 and 1 648 649 +651 eq 1 566 26 +652 and 1 65 651 +653 or 1 -400 652 +654 and 1 650 653 +655 and 1 65 -651 +656 or 1 -439 655 +657 and 1 654 656 +658 eq 1 126 26 +659 eq 1 111 26 +660 eq 1 576 26 +661 eq 1 578 26 +662 eq 1 580 26 +663 ite 2 662 14 16 +664 ite 2 661 12 663 +665 ite 2 660 10 664 +666 ite 2 659 8 665 +667 ite 2 658 187 666 +668 eq 1 111 667 +669 and 1 67 668 +670 or 1 -520 669 +671 and 1 657 670 +672 or 1 69 -145 +673 and 1 671 672 +674 or 1 71 -139 +675 and 1 673 674 +676 or 1 -73 -399 +677 and 1 675 676 +678 eq 1 566 28 +679 and 1 75 678 +680 or 1 -398 679 +681 and 1 677 680 +682 and 1 75 -678 +683 or 1 -445 682 +684 and 1 681 683 +685 eq 1 126 28 +686 eq 1 111 28 +687 eq 1 576 28 +688 eq 1 578 28 +689 eq 1 580 28 +690 ite 2 689 14 16 +691 ite 2 688 12 690 +692 ite 2 687 10 691 +693 ite 2 686 8 692 +694 ite 2 685 187 693 +695 eq 1 111 694 +696 and 1 77 695 +697 or 1 -538 696 +698 and 1 684 697 +699 or 1 79 -133 +700 and 1 698 699 +701 or 1 81 -127 +702 and 1 700 701 +703 or 1 -83 -395 +704 and 1 702 703 +705 eq 1 566 30 +706 and 1 85 705 +707 or 1 -391 706 +708 and 1 704 707 +709 and 1 85 -705 +710 or 1 -451 709 +711 and 1 708 710 +712 eq 1 126 30 +713 eq 1 111 30 +714 eq 1 576 30 +715 eq 1 578 30 +716 eq 1 580 30 +717 ite 2 716 14 16 +718 ite 2 715 12 717 +719 ite 2 714 10 718 +720 ite 2 713 8 719 +721 ite 2 712 187 720 +722 eq 1 111 721 +723 and 1 87 722 +724 or 1 -556 723 +725 and 1 711 724 +726 or 1 89 -120 +727 and 1 725 726 +728 or 1 91 -112 +729 and 1 727 728 +730 or 1 407 406 +731 or 1 421 730 +732 or 1 466 731 +733 or 1 181 732 +734 or 1 175 733 +735 or 1 405 734 +736 or 1 404 735 +737 or 1 427 736 +738 or 1 484 737 +739 or 1 169 738 +740 or 1 163 739 +741 or 1 403 740 +742 or 1 402 741 +743 or 1 433 742 +744 or 1 502 743 +745 or 1 157 744 +746 or 1 151 745 +747 or 1 401 746 +748 or 1 400 747 +749 or 1 439 748 +750 or 1 520 749 +751 or 1 145 750 +752 or 1 139 751 +753 or 1 399 752 +754 or 1 398 753 +755 or 1 445 754 +756 or 1 538 755 +757 or 1 133 756 +758 or 1 127 757 +759 or 1 395 758 +760 or 1 391 759 +761 or 1 451 760 +762 or 1 556 761 +763 or 1 120 762 +764 or 1 112 763 +765 and 1 729 764 +766 and 1 407 406 +767 and 1 421 730 +768 or 1 766 767 +769 and 1 466 731 +770 or 1 768 769 +771 and 1 181 732 +772 or 1 770 771 +773 and 1 175 733 +774 or 1 772 773 +775 and 1 405 734 +776 or 1 774 775 +777 and 1 404 735 +778 or 1 776 777 +779 and 1 427 736 +780 or 1 778 779 +781 and 1 484 737 +782 or 1 780 781 +783 and 1 169 738 +784 or 1 782 783 +785 and 1 163 739 +786 or 1 784 785 +787 and 1 403 740 +788 or 1 786 787 +789 and 1 402 741 +790 or 1 788 789 +791 and 1 433 742 +792 or 1 790 791 +793 and 1 502 743 +794 or 1 792 793 +795 and 1 157 744 +796 or 1 794 795 +797 and 1 151 745 +798 or 1 796 797 +799 and 1 401 746 +800 or 1 798 799 +801 and 1 400 747 +802 or 1 800 801 +803 and 1 439 748 +804 or 1 802 803 +805 and 1 520 749 +806 or 1 804 805 +807 and 1 145 750 +808 or 1 806 807 +809 and 1 139 751 +810 or 1 808 809 +811 and 1 399 752 +812 or 1 810 811 +813 and 1 398 753 +814 or 1 812 813 +815 and 1 445 754 +816 or 1 814 815 +817 and 1 538 755 +818 or 1 816 817 +819 and 1 133 756 +820 or 1 818 819 +821 and 1 127 757 +822 or 1 820 821 +823 and 1 395 758 +824 or 1 822 823 +825 and 1 391 759 +826 or 1 824 825 +827 and 1 451 760 +828 or 1 826 827 +829 and 1 556 761 +830 or 1 828 829 +831 and 1 120 762 +832 or 1 830 831 +833 and 1 112 763 +834 or 1 832 833 +835 and 1 765 -834 +836 and 1 -33 35 +837 or 1 -33 35 +838 and 1 37 837 +839 or 1 836 838 +840 or 1 37 837 +841 and 1 39 840 +842 or 1 839 841 +843 or 1 39 840 +844 and 1 41 843 +845 or 1 842 844 +846 or 1 41 843 +847 and 1 -845 846 +848 and 1 -43 45 +849 or 1 -43 45 +850 and 1 47 849 +851 or 1 848 850 +852 or 1 47 849 +853 and 1 49 852 +854 or 1 851 853 +855 or 1 49 852 +856 and 1 51 855 +857 or 1 854 856 +858 and 1 847 -857 +859 or 1 51 855 +860 and 1 858 859 +861 and 1 -53 55 +862 or 1 -53 55 +863 and 1 57 862 +864 or 1 861 863 +865 or 1 57 862 +866 and 1 59 865 +867 or 1 864 866 +868 or 1 59 865 +869 and 1 61 868 +870 or 1 867 869 +871 and 1 860 -870 +872 or 1 61 868 +873 and 1 871 872 +874 and 1 -63 65 +875 or 1 -63 65 +876 and 1 67 875 +877 or 1 874 876 +878 or 1 67 875 +879 and 1 69 878 +880 or 1 877 879 +881 or 1 69 878 +882 and 1 71 881 +883 or 1 880 882 +884 and 1 873 -883 +885 or 1 71 881 +886 and 1 884 885 +887 and 1 -73 75 +888 or 1 -73 75 +889 and 1 77 888 +890 or 1 887 889 +891 or 1 77 888 +892 and 1 79 891 +893 or 1 890 892 +894 or 1 79 891 +895 and 1 81 894 +896 or 1 893 895 +897 and 1 886 -896 +898 or 1 81 894 +899 and 1 897 898 +900 and 1 -83 85 +901 or 1 -83 85 +902 and 1 87 901 +903 or 1 900 902 +904 or 1 87 901 +905 and 1 89 904 +906 or 1 903 905 +907 or 1 89 904 +908 and 1 91 907 +909 or 1 906 908 +910 and 1 899 -909 +911 or 1 91 907 +912 and 1 910 911 +913 and 1 835 912 +914 and 1 462 458 +915 or 1 462 458 +916 and 1 467 915 +917 or 1 914 916 +918 or 1 467 915 +919 and 1 470 918 +920 or 1 917 919 +921 or 1 470 918 +922 and 1 473 921 +923 or 1 920 922 +924 or 1 473 921 +925 and 1 -923 924 +926 and 1 480 476 +927 or 1 480 476 +928 and 1 485 927 +929 or 1 926 928 +930 or 1 485 927 +931 and 1 488 930 +932 or 1 929 931 +933 or 1 488 930 +934 and 1 491 933 +935 or 1 932 934 +936 and 1 925 -935 +937 or 1 491 933 +938 and 1 936 937 +939 and 1 498 494 +940 or 1 498 494 +941 and 1 503 940 +942 or 1 939 941 +943 or 1 503 940 +944 and 1 506 943 +945 or 1 942 944 +946 or 1 506 943 +947 and 1 509 946 +948 or 1 945 947 +949 and 1 938 -948 +950 or 1 509 946 +951 and 1 949 950 +952 and 1 516 512 +953 or 1 516 512 +954 and 1 521 953 +955 or 1 952 954 +956 or 1 521 953 +957 and 1 524 956 +958 or 1 955 957 +959 or 1 524 956 +960 and 1 527 959 +961 or 1 958 960 +962 and 1 951 -961 +963 or 1 527 959 +964 and 1 962 963 +965 and 1 534 530 +966 or 1 534 530 +967 and 1 539 966 +968 or 1 965 967 +969 or 1 539 966 +970 and 1 542 969 +971 or 1 968 970 +972 or 1 542 969 +973 and 1 545 972 +974 or 1 971 973 +975 and 1 964 -974 +976 or 1 545 972 +977 and 1 975 976 +978 and 1 552 548 +979 or 1 552 548 +980 and 1 557 979 +981 or 1 978 980 +982 or 1 557 979 +983 and 1 560 982 +984 or 1 981 983 +985 or 1 560 982 +986 and 1 563 985 +987 or 1 984 986 +988 and 1 977 -987 +989 or 1 563 985 +990 and 1 988 989 +991 and 1 913 990 +992 and 1 991 -93 +993 next 1 93 -992 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..ae957a3e43 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-back-serstep.btor2 @@ -0,0 +1,1332 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_Slot_2 +11 init 2 10 5 +12 state 2 nextv_Slot_3 +13 init 2 12 5 +14 state 2 nextv_Slot_4 +15 init 2 14 5 +16 state 2 nextv_Slot_5 +17 init 2 16 5 +18 state 2 nextv_Slot_6 +19 init 2 18 5 +20 state 2 nextv_next +21 init 2 20 5 +22 state 2 nextv_my_place_P_0 +23 init 2 22 5 +24 state 2 nextv_my_place_P_1 +25 init 2 24 5 +26 state 2 nextv_my_place_P_2 +27 init 2 26 5 +28 state 2 nextv_my_place_P_3 +29 init 2 28 5 +30 state 2 nextv_my_place_P_4 +31 init 2 30 5 +32 state 2 nextv_my_place_P_5 +33 init 2 32 5 +34 state 2 nextv_my_place_P_6 +35 init 2 34 5 +36 zero 1 +37 state 1 nexta_NCS_P_0 +38 init 1 37 36 +39 state 1 nexta_p1_P_0 +40 init 1 39 36 +41 state 1 nexta_p2_P_0 +42 init 1 41 36 +43 state 1 nexta_p3_P_0 +44 init 1 43 36 +45 state 1 nexta_CS_P_0 +46 init 1 45 36 +47 state 1 nexta_NCS_P_1 +48 init 1 47 36 +49 state 1 nexta_p1_P_1 +50 init 1 49 36 +51 state 1 nexta_p2_P_1 +52 init 1 51 36 +53 state 1 nexta_p3_P_1 +54 init 1 53 36 +55 state 1 nexta_CS_P_1 +56 init 1 55 36 +57 state 1 nexta_NCS_P_2 +58 init 1 57 36 +59 state 1 nexta_p1_P_2 +60 init 1 59 36 +61 state 1 nexta_p2_P_2 +62 init 1 61 36 +63 state 1 nexta_p3_P_2 +64 init 1 63 36 +65 state 1 nexta_CS_P_2 +66 init 1 65 36 +67 state 1 nexta_NCS_P_3 +68 init 1 67 36 +69 state 1 nexta_p1_P_3 +70 init 1 69 36 +71 state 1 nexta_p2_P_3 +72 init 1 71 36 +73 state 1 nexta_p3_P_3 +74 init 1 73 36 +75 state 1 nexta_CS_P_3 +76 init 1 75 36 +77 state 1 nexta_NCS_P_4 +78 init 1 77 36 +79 state 1 nexta_p1_P_4 +80 init 1 79 36 +81 state 1 nexta_p2_P_4 +82 init 1 81 36 +83 state 1 nexta_p3_P_4 +84 init 1 83 36 +85 state 1 nexta_CS_P_4 +86 init 1 85 36 +87 state 1 nexta_NCS_P_5 +88 init 1 87 36 +89 state 1 nexta_p1_P_5 +90 init 1 89 36 +91 state 1 nexta_p2_P_5 +92 init 1 91 36 +93 state 1 nexta_p3_P_5 +94 init 1 93 36 +95 state 1 nexta_CS_P_5 +96 init 1 95 36 +97 state 1 nexta_NCS_P_6 +98 init 1 97 36 +99 state 1 nexta_p1_P_6 +100 init 1 99 36 +101 state 1 nexta_p2_P_6 +102 init 1 101 36 +103 state 1 nexta_p3_P_6 +104 init 1 103 36 +105 state 1 nexta_CS_P_6 +106 init 1 105 36 +107 state 1 dve_initialized +108 init 1 107 36 +109 state 1 dve_valid +110 init 1 109 36 +111 and 1 37 -39 +112 and 1 111 -41 +113 and 1 112 -43 +114 and 1 113 -45 +115 and 1 114 47 +116 and 1 115 -49 +117 and 1 116 -51 +118 and 1 117 -53 +119 and 1 118 -55 +120 and 1 119 57 +121 and 1 120 -59 +122 and 1 121 -61 +123 and 1 122 -63 +124 and 1 123 -65 +125 and 1 124 67 +126 and 1 125 -69 +127 and 1 126 -71 +128 and 1 127 -73 +129 and 1 128 -75 +130 and 1 129 77 +131 and 1 130 -79 +132 and 1 131 -81 +133 and 1 132 -83 +134 and 1 133 -85 +135 and 1 134 87 +136 and 1 135 -89 +137 and 1 136 -91 +138 and 1 137 -93 +139 and 1 138 -95 +140 and 1 139 97 +141 and 1 140 -99 +142 and 1 141 -101 +143 and 1 142 -103 +144 and 1 143 -105 +145 constd 2 1 +146 eq 1 145 6 +147 and 1 144 146 +148 constd 2 0 +149 eq 1 148 8 +150 and 1 147 149 +151 eq 1 148 10 +152 and 1 150 151 +153 eq 1 148 12 +154 and 1 152 153 +155 eq 1 148 14 +156 and 1 154 155 +157 eq 1 148 16 +158 and 1 156 157 +159 eq 1 148 18 +160 and 1 158 159 +161 eq 1 148 20 +162 and 1 160 161 +163 eq 1 148 22 +164 and 1 162 163 +165 eq 1 148 24 +166 and 1 164 165 +167 eq 1 148 26 +168 and 1 166 167 +169 eq 1 148 28 +170 and 1 168 169 +171 eq 1 148 30 +172 and 1 170 171 +173 eq 1 148 32 +174 and 1 172 173 +175 eq 1 148 34 +176 and 1 174 175 +177 and 1 109 176 +178 bad 177 +179 input 2 v_Slot_0 +180 next 2 6 179 +181 input 2 v_Slot_1 +182 next 2 8 181 +183 input 2 v_Slot_2 +184 next 2 10 183 +185 input 2 v_Slot_3 +186 next 2 12 185 +187 input 2 v_Slot_4 +188 next 2 14 187 +189 input 2 v_Slot_5 +190 next 2 16 189 +191 input 2 v_Slot_6 +192 next 2 18 191 +193 input 2 v_next +194 next 2 20 193 +195 input 2 v_my_place_P_0 +196 next 2 22 195 +197 input 2 v_my_place_P_1 +198 next 2 24 197 +199 input 2 v_my_place_P_2 +200 next 2 26 199 +201 input 2 v_my_place_P_3 +202 next 2 28 201 +203 input 2 v_my_place_P_4 +204 next 2 30 203 +205 input 2 v_my_place_P_5 +206 next 2 32 205 +207 input 2 v_my_place_P_6 +208 next 2 34 207 +209 input 1 a_NCS_P_0 +210 next 1 37 209 +211 input 1 a_p1_P_0 +212 next 1 39 211 +213 input 1 a_p2_P_0 +214 next 1 41 213 +215 input 1 a_p3_P_0 +216 next 1 43 215 +217 input 1 a_CS_P_0 +218 next 1 45 217 +219 input 1 a_NCS_P_1 +220 next 1 47 219 +221 input 1 a_p1_P_1 +222 next 1 49 221 +223 input 1 a_p2_P_1 +224 next 1 51 223 +225 input 1 a_p3_P_1 +226 next 1 53 225 +227 input 1 a_CS_P_1 +228 next 1 55 227 +229 input 1 a_NCS_P_2 +230 next 1 57 229 +231 input 1 a_p1_P_2 +232 next 1 59 231 +233 input 1 a_p2_P_2 +234 next 1 61 233 +235 input 1 a_p3_P_2 +236 next 1 63 235 +237 input 1 a_CS_P_2 +238 next 1 65 237 +239 input 1 a_NCS_P_3 +240 next 1 67 239 +241 input 1 a_p1_P_3 +242 next 1 69 241 +243 input 1 a_p2_P_3 +244 next 1 71 243 +245 input 1 a_p3_P_3 +246 next 1 73 245 +247 input 1 a_CS_P_3 +248 next 1 75 247 +249 input 1 a_NCS_P_4 +250 next 1 77 249 +251 input 1 a_p1_P_4 +252 next 1 79 251 +253 input 1 a_p2_P_4 +254 next 1 81 253 +255 input 1 a_p3_P_4 +256 next 1 83 255 +257 input 1 a_CS_P_4 +258 next 1 85 257 +259 input 1 a_NCS_P_5 +260 next 1 87 259 +261 input 1 a_p1_P_5 +262 next 1 89 261 +263 input 1 a_p2_P_5 +264 next 1 91 263 +265 input 1 a_p3_P_5 +266 next 1 93 265 +267 input 1 a_CS_P_5 +268 next 1 95 267 +269 input 1 a_NCS_P_6 +270 next 1 97 269 +271 input 1 a_p1_P_6 +272 next 1 99 271 +273 input 1 a_p2_P_6 +274 next 1 101 273 +275 input 1 a_p3_P_6 +276 next 1 103 275 +277 input 1 a_CS_P_6 +278 next 1 105 277 +279 const 1 1 +280 next 1 107 279 +281 input 1 f00 +282 or 1 209 -281 +283 input 1 f01 +284 or 1 211 281 +285 constd 2 6 +286 ite 2 281 193 195 +287 eq 1 285 286 +288 and 1 284 287 +289 or 1 -283 288 +290 and 1 282 289 +291 input 1 f02 +292 and 1 284 -283 +293 and 1 -287 292 +294 or 1 -291 293 +295 and 1 290 294 +296 input 1 f03 +297 or 1 213 283 +298 or 1 297 291 +299 constd 3 0 +300 concat 4 299 286 +301 constd 4 7 +302 srem 4 300 301 +303 slice 2 302 7 0 +304 ite 2 291 303 286 +305 eq 1 148 304 +306 eq 1 145 304 +307 constd 2 2 +308 eq 1 307 304 +309 constd 2 3 +310 eq 1 309 304 +311 constd 2 4 +312 eq 1 311 304 +313 constd 2 5 +314 eq 1 313 304 +315 ite 2 314 189 191 +316 ite 2 312 187 315 +317 ite 2 310 185 316 +318 ite 2 308 183 317 +319 ite 2 306 181 318 +320 ite 2 305 179 319 +321 eq 1 145 320 +322 and 1 298 321 +323 or 1 -296 322 +324 and 1 295 323 +325 or 1 215 296 +326 input 1 f04 +327 or 1 325 -326 +328 and 1 324 327 +329 or 1 217 326 +330 input 1 f05 +331 or 1 329 -330 +332 and 1 328 331 +333 input 1 f06 +334 or 1 219 -333 +335 and 1 332 334 +336 input 1 f07 +337 or 1 221 333 +338 constd 4 1 +339 concat 4 299 193 +340 add 4 338 339 +341 slice 2 340 7 0 +342 ite 2 281 341 193 +343 concat 4 299 342 +344 sub 4 343 301 +345 slice 2 344 7 0 +346 ite 2 283 345 342 +347 ite 2 333 346 197 +348 eq 1 285 347 +349 and 1 337 348 +350 or 1 -336 349 +351 and 1 335 350 +352 input 1 f08 +353 and 1 337 -336 +354 and 1 -348 353 +355 or 1 -352 354 +356 and 1 351 355 +357 input 1 f09 +358 or 1 223 336 +359 or 1 358 352 +360 concat 4 299 347 +361 srem 4 360 301 +362 slice 2 361 7 0 +363 ite 2 352 362 347 +364 eq 1 148 363 +365 constd 4 0 +366 concat 4 299 304 +367 add 4 338 366 +368 srem 4 367 301 +369 eq 1 365 368 +370 and 1 330 369 +371 and 1 305 326 +372 ite 2 371 148 179 +373 ite 2 370 145 372 +374 eq 1 145 363 +375 eq 1 338 368 +376 and 1 330 375 +377 and 1 306 326 +378 ite 2 377 148 181 +379 ite 2 376 145 378 +380 eq 1 307 363 +381 constd 4 2 +382 eq 1 381 368 +383 and 1 330 382 +384 and 1 308 326 +385 ite 2 384 148 183 +386 ite 2 383 145 385 +387 eq 1 309 363 +388 constd 4 3 +389 eq 1 388 368 +390 and 1 330 389 +391 and 1 310 326 +392 ite 2 391 148 185 +393 ite 2 390 145 392 +394 eq 1 311 363 +395 constd 4 4 +396 eq 1 395 368 +397 and 1 330 396 +398 and 1 312 326 +399 ite 2 398 148 187 +400 ite 2 397 145 399 +401 eq 1 313 363 +402 constd 4 5 +403 eq 1 402 368 +404 and 1 330 403 +405 and 1 314 326 +406 ite 2 405 148 189 +407 ite 2 404 145 406 +408 constd 4 6 +409 eq 1 408 368 +410 and 1 330 409 +411 eq 1 285 304 +412 and 1 411 326 +413 ite 2 412 148 191 +414 ite 2 410 145 413 +415 ite 2 401 407 414 +416 ite 2 394 400 415 +417 ite 2 387 393 416 +418 ite 2 380 386 417 +419 ite 2 374 379 418 +420 ite 2 364 373 419 +421 eq 1 145 420 +422 and 1 359 421 +423 or 1 -357 422 +424 and 1 356 423 +425 or 1 225 357 +426 input 1 f10 +427 or 1 425 -426 +428 and 1 424 427 +429 or 1 227 426 +430 input 1 f11 +431 or 1 429 -430 +432 and 1 428 431 +433 input 1 f12 +434 or 1 229 -433 +435 and 1 432 434 +436 input 1 f13 +437 or 1 231 433 +438 concat 4 299 346 +439 add 4 338 438 +440 slice 2 439 7 0 +441 ite 2 333 440 346 +442 concat 4 299 441 +443 sub 4 442 301 +444 slice 2 443 7 0 +445 ite 2 336 444 441 +446 ite 2 433 445 199 +447 eq 1 285 446 +448 and 1 437 447 +449 or 1 -436 448 +450 and 1 435 449 +451 input 1 f14 +452 and 1 437 -436 +453 and 1 -447 452 +454 or 1 -451 453 +455 and 1 450 454 +456 input 1 f15 +457 or 1 233 436 +458 or 1 457 451 +459 concat 4 299 446 +460 srem 4 459 301 +461 slice 2 460 7 0 +462 ite 2 451 461 446 +463 eq 1 148 462 +464 concat 4 299 363 +465 add 4 338 464 +466 srem 4 465 301 +467 eq 1 365 466 +468 and 1 430 467 +469 and 1 364 426 +470 ite 2 469 148 373 +471 ite 2 468 145 470 +472 eq 1 145 462 +473 eq 1 338 466 +474 and 1 430 473 +475 and 1 374 426 +476 ite 2 475 148 379 +477 ite 2 474 145 476 +478 eq 1 307 462 +479 eq 1 381 466 +480 and 1 430 479 +481 and 1 380 426 +482 ite 2 481 148 386 +483 ite 2 480 145 482 +484 eq 1 309 462 +485 eq 1 388 466 +486 and 1 430 485 +487 and 1 387 426 +488 ite 2 487 148 393 +489 ite 2 486 145 488 +490 eq 1 311 462 +491 eq 1 395 466 +492 and 1 430 491 +493 and 1 394 426 +494 ite 2 493 148 400 +495 ite 2 492 145 494 +496 eq 1 313 462 +497 eq 1 402 466 +498 and 1 430 497 +499 and 1 401 426 +500 ite 2 499 148 407 +501 ite 2 498 145 500 +502 eq 1 408 466 +503 and 1 430 502 +504 eq 1 285 363 +505 and 1 504 426 +506 ite 2 505 148 414 +507 ite 2 503 145 506 +508 ite 2 496 501 507 +509 ite 2 490 495 508 +510 ite 2 484 489 509 +511 ite 2 478 483 510 +512 ite 2 472 477 511 +513 ite 2 463 471 512 +514 eq 1 145 513 +515 and 1 458 514 +516 or 1 -456 515 +517 and 1 455 516 +518 or 1 235 456 +519 input 1 f16 +520 or 1 518 -519 +521 and 1 517 520 +522 or 1 237 519 +523 input 1 f17 +524 or 1 522 -523 +525 and 1 521 524 +526 input 1 f18 +527 or 1 239 -526 +528 and 1 525 527 +529 input 1 f19 +530 or 1 241 526 +531 concat 4 299 445 +532 add 4 338 531 +533 slice 2 532 7 0 +534 ite 2 433 533 445 +535 concat 4 299 534 +536 sub 4 535 301 +537 slice 2 536 7 0 +538 ite 2 436 537 534 +539 ite 2 526 538 201 +540 eq 1 285 539 +541 and 1 530 540 +542 or 1 -529 541 +543 and 1 528 542 +544 input 1 f20 +545 and 1 530 -529 +546 and 1 -540 545 +547 or 1 -544 546 +548 and 1 543 547 +549 input 1 f21 +550 or 1 243 529 +551 or 1 550 544 +552 concat 4 299 539 +553 srem 4 552 301 +554 slice 2 553 7 0 +555 ite 2 544 554 539 +556 eq 1 148 555 +557 concat 4 299 462 +558 add 4 338 557 +559 srem 4 558 301 +560 eq 1 365 559 +561 and 1 523 560 +562 and 1 463 519 +563 ite 2 562 148 471 +564 ite 2 561 145 563 +565 eq 1 145 555 +566 eq 1 338 559 +567 and 1 523 566 +568 and 1 472 519 +569 ite 2 568 148 477 +570 ite 2 567 145 569 +571 eq 1 307 555 +572 eq 1 381 559 +573 and 1 523 572 +574 and 1 478 519 +575 ite 2 574 148 483 +576 ite 2 573 145 575 +577 eq 1 309 555 +578 eq 1 388 559 +579 and 1 523 578 +580 and 1 484 519 +581 ite 2 580 148 489 +582 ite 2 579 145 581 +583 eq 1 311 555 +584 eq 1 395 559 +585 and 1 523 584 +586 and 1 490 519 +587 ite 2 586 148 495 +588 ite 2 585 145 587 +589 eq 1 313 555 +590 eq 1 402 559 +591 and 1 523 590 +592 and 1 496 519 +593 ite 2 592 148 501 +594 ite 2 591 145 593 +595 eq 1 408 559 +596 and 1 523 595 +597 eq 1 285 462 +598 and 1 597 519 +599 ite 2 598 148 507 +600 ite 2 596 145 599 +601 ite 2 589 594 600 +602 ite 2 583 588 601 +603 ite 2 577 582 602 +604 ite 2 571 576 603 +605 ite 2 565 570 604 +606 ite 2 556 564 605 +607 eq 1 145 606 +608 and 1 551 607 +609 or 1 -549 608 +610 and 1 548 609 +611 or 1 245 549 +612 input 1 f22 +613 or 1 611 -612 +614 and 1 610 613 +615 or 1 247 612 +616 input 1 f23 +617 or 1 615 -616 +618 and 1 614 617 +619 input 1 f24 +620 or 1 249 -619 +621 and 1 618 620 +622 input 1 f25 +623 or 1 251 619 +624 concat 4 299 538 +625 add 4 338 624 +626 slice 2 625 7 0 +627 ite 2 526 626 538 +628 concat 4 299 627 +629 sub 4 628 301 +630 slice 2 629 7 0 +631 ite 2 529 630 627 +632 ite 2 619 631 203 +633 eq 1 285 632 +634 and 1 623 633 +635 or 1 -622 634 +636 and 1 621 635 +637 input 1 f26 +638 and 1 623 -622 +639 and 1 -633 638 +640 or 1 -637 639 +641 and 1 636 640 +642 input 1 f27 +643 or 1 253 622 +644 or 1 643 637 +645 concat 4 299 632 +646 srem 4 645 301 +647 slice 2 646 7 0 +648 ite 2 637 647 632 +649 eq 1 148 648 +650 concat 4 299 555 +651 add 4 338 650 +652 srem 4 651 301 +653 eq 1 365 652 +654 and 1 616 653 +655 and 1 556 612 +656 ite 2 655 148 564 +657 ite 2 654 145 656 +658 eq 1 145 648 +659 eq 1 338 652 +660 and 1 616 659 +661 and 1 565 612 +662 ite 2 661 148 570 +663 ite 2 660 145 662 +664 eq 1 307 648 +665 eq 1 381 652 +666 and 1 616 665 +667 and 1 571 612 +668 ite 2 667 148 576 +669 ite 2 666 145 668 +670 eq 1 309 648 +671 eq 1 388 652 +672 and 1 616 671 +673 and 1 577 612 +674 ite 2 673 148 582 +675 ite 2 672 145 674 +676 eq 1 311 648 +677 eq 1 395 652 +678 and 1 616 677 +679 and 1 583 612 +680 ite 2 679 148 588 +681 ite 2 678 145 680 +682 eq 1 313 648 +683 eq 1 402 652 +684 and 1 616 683 +685 and 1 589 612 +686 ite 2 685 148 594 +687 ite 2 684 145 686 +688 eq 1 408 652 +689 and 1 616 688 +690 eq 1 285 555 +691 and 1 690 612 +692 ite 2 691 148 600 +693 ite 2 689 145 692 +694 ite 2 682 687 693 +695 ite 2 676 681 694 +696 ite 2 670 675 695 +697 ite 2 664 669 696 +698 ite 2 658 663 697 +699 ite 2 649 657 698 +700 eq 1 145 699 +701 and 1 644 700 +702 or 1 -642 701 +703 and 1 641 702 +704 or 1 255 642 +705 input 1 f28 +706 or 1 704 -705 +707 and 1 703 706 +708 or 1 257 705 +709 input 1 f29 +710 or 1 708 -709 +711 and 1 707 710 +712 input 1 f30 +713 or 1 259 -712 +714 and 1 711 713 +715 input 1 f31 +716 or 1 261 712 +717 concat 4 299 631 +718 add 4 338 717 +719 slice 2 718 7 0 +720 ite 2 619 719 631 +721 concat 4 299 720 +722 sub 4 721 301 +723 slice 2 722 7 0 +724 ite 2 622 723 720 +725 ite 2 712 724 205 +726 eq 1 285 725 +727 and 1 716 726 +728 or 1 -715 727 +729 and 1 714 728 +730 input 1 f32 +731 and 1 716 -715 +732 and 1 -726 731 +733 or 1 -730 732 +734 and 1 729 733 +735 input 1 f33 +736 or 1 263 715 +737 or 1 736 730 +738 concat 4 299 725 +739 srem 4 738 301 +740 slice 2 739 7 0 +741 ite 2 730 740 725 +742 eq 1 148 741 +743 concat 4 299 648 +744 add 4 338 743 +745 srem 4 744 301 +746 eq 1 365 745 +747 and 1 709 746 +748 and 1 649 705 +749 ite 2 748 148 657 +750 ite 2 747 145 749 +751 eq 1 145 741 +752 eq 1 338 745 +753 and 1 709 752 +754 and 1 658 705 +755 ite 2 754 148 663 +756 ite 2 753 145 755 +757 eq 1 307 741 +758 eq 1 381 745 +759 and 1 709 758 +760 and 1 664 705 +761 ite 2 760 148 669 +762 ite 2 759 145 761 +763 eq 1 309 741 +764 eq 1 388 745 +765 and 1 709 764 +766 and 1 670 705 +767 ite 2 766 148 675 +768 ite 2 765 145 767 +769 eq 1 311 741 +770 eq 1 395 745 +771 and 1 709 770 +772 and 1 676 705 +773 ite 2 772 148 681 +774 ite 2 771 145 773 +775 eq 1 313 741 +776 eq 1 402 745 +777 and 1 709 776 +778 and 1 682 705 +779 ite 2 778 148 687 +780 ite 2 777 145 779 +781 eq 1 408 745 +782 and 1 709 781 +783 eq 1 285 648 +784 and 1 783 705 +785 ite 2 784 148 693 +786 ite 2 782 145 785 +787 ite 2 775 780 786 +788 ite 2 769 774 787 +789 ite 2 763 768 788 +790 ite 2 757 762 789 +791 ite 2 751 756 790 +792 ite 2 742 750 791 +793 eq 1 145 792 +794 and 1 737 793 +795 or 1 -735 794 +796 and 1 734 795 +797 or 1 265 735 +798 input 1 f34 +799 or 1 797 -798 +800 and 1 796 799 +801 or 1 267 798 +802 input 1 f35 +803 or 1 801 -802 +804 and 1 800 803 +805 input 1 f36 +806 or 1 269 -805 +807 and 1 804 806 +808 input 1 f37 +809 or 1 271 805 +810 concat 4 299 724 +811 add 4 338 810 +812 slice 2 811 7 0 +813 ite 2 712 812 724 +814 concat 4 299 813 +815 sub 4 814 301 +816 slice 2 815 7 0 +817 ite 2 715 816 813 +818 ite 2 805 817 207 +819 eq 1 285 818 +820 and 1 809 819 +821 or 1 -808 820 +822 and 1 807 821 +823 input 1 f38 +824 and 1 809 -808 +825 and 1 -819 824 +826 or 1 -823 825 +827 and 1 822 826 +828 input 1 f39 +829 or 1 273 808 +830 or 1 829 823 +831 concat 4 299 818 +832 srem 4 831 301 +833 slice 2 832 7 0 +834 ite 2 823 833 818 +835 eq 1 148 834 +836 concat 4 299 741 +837 add 4 338 836 +838 srem 4 837 301 +839 eq 1 365 838 +840 and 1 802 839 +841 and 1 742 798 +842 ite 2 841 148 750 +843 ite 2 840 145 842 +844 eq 1 145 834 +845 eq 1 338 838 +846 and 1 802 845 +847 and 1 751 798 +848 ite 2 847 148 756 +849 ite 2 846 145 848 +850 eq 1 307 834 +851 eq 1 381 838 +852 and 1 802 851 +853 and 1 757 798 +854 ite 2 853 148 762 +855 ite 2 852 145 854 +856 eq 1 309 834 +857 eq 1 388 838 +858 and 1 802 857 +859 and 1 763 798 +860 ite 2 859 148 768 +861 ite 2 858 145 860 +862 eq 1 311 834 +863 eq 1 395 838 +864 and 1 802 863 +865 and 1 769 798 +866 ite 2 865 148 774 +867 ite 2 864 145 866 +868 eq 1 313 834 +869 eq 1 402 838 +870 and 1 802 869 +871 and 1 775 798 +872 ite 2 871 148 780 +873 ite 2 870 145 872 +874 eq 1 408 838 +875 and 1 802 874 +876 eq 1 285 741 +877 and 1 876 798 +878 ite 2 877 148 786 +879 ite 2 875 145 878 +880 ite 2 868 873 879 +881 ite 2 862 867 880 +882 ite 2 856 861 881 +883 ite 2 850 855 882 +884 ite 2 844 849 883 +885 ite 2 835 843 884 +886 eq 1 145 885 +887 and 1 830 886 +888 or 1 -828 887 +889 and 1 827 888 +890 or 1 275 828 +891 input 1 f40 +892 or 1 890 -891 +893 and 1 889 892 +894 or 1 277 891 +895 input 1 f41 +896 or 1 894 -895 +897 and 1 893 896 +898 or 1 281 283 +899 or 1 291 898 +900 or 1 296 899 +901 or 1 326 900 +902 or 1 330 901 +903 or 1 333 902 +904 or 1 336 903 +905 or 1 352 904 +906 or 1 357 905 +907 or 1 426 906 +908 or 1 430 907 +909 or 1 433 908 +910 or 1 436 909 +911 or 1 451 910 +912 or 1 456 911 +913 or 1 519 912 +914 or 1 523 913 +915 or 1 526 914 +916 or 1 529 915 +917 or 1 544 916 +918 or 1 549 917 +919 or 1 612 918 +920 or 1 616 919 +921 or 1 619 920 +922 or 1 622 921 +923 or 1 637 922 +924 or 1 642 923 +925 or 1 705 924 +926 or 1 709 925 +927 or 1 712 926 +928 or 1 715 927 +929 or 1 730 928 +930 or 1 735 929 +931 or 1 798 930 +932 or 1 802 931 +933 or 1 805 932 +934 or 1 808 933 +935 or 1 823 934 +936 or 1 828 935 +937 or 1 891 936 +938 or 1 895 937 +939 and 1 897 938 +940 and 1 209 211 +941 or 1 209 211 +942 and 1 213 941 +943 or 1 940 942 +944 or 1 213 941 +945 and 1 215 944 +946 or 1 943 945 +947 or 1 215 944 +948 and 1 217 947 +949 or 1 946 948 +950 or 1 217 947 +951 and 1 -949 950 +952 and 1 219 221 +953 or 1 219 221 +954 and 1 223 953 +955 or 1 952 954 +956 or 1 223 953 +957 and 1 225 956 +958 or 1 955 957 +959 or 1 225 956 +960 and 1 227 959 +961 or 1 958 960 +962 and 1 951 -961 +963 or 1 227 959 +964 and 1 962 963 +965 and 1 229 231 +966 or 1 229 231 +967 and 1 233 966 +968 or 1 965 967 +969 or 1 233 966 +970 and 1 235 969 +971 or 1 968 970 +972 or 1 235 969 +973 and 1 237 972 +974 or 1 971 973 +975 and 1 964 -974 +976 or 1 237 972 +977 and 1 975 976 +978 and 1 239 241 +979 or 1 239 241 +980 and 1 243 979 +981 or 1 978 980 +982 or 1 243 979 +983 and 1 245 982 +984 or 1 981 983 +985 or 1 245 982 +986 and 1 247 985 +987 or 1 984 986 +988 and 1 977 -987 +989 or 1 247 985 +990 and 1 988 989 +991 and 1 249 251 +992 or 1 249 251 +993 and 1 253 992 +994 or 1 991 993 +995 or 1 253 992 +996 and 1 255 995 +997 or 1 994 996 +998 or 1 255 995 +999 and 1 257 998 +1000 or 1 997 999 +1001 and 1 990 -1000 +1002 or 1 257 998 +1003 and 1 1001 1002 +1004 and 1 259 261 +1005 or 1 259 261 +1006 and 1 263 1005 +1007 or 1 1004 1006 +1008 or 1 263 1005 +1009 and 1 265 1008 +1010 or 1 1007 1009 +1011 or 1 265 1008 +1012 and 1 267 1011 +1013 or 1 1010 1012 +1014 and 1 1003 -1013 +1015 or 1 267 1011 +1016 and 1 1014 1015 +1017 and 1 269 271 +1018 or 1 269 271 +1019 and 1 273 1018 +1020 or 1 1017 1019 +1021 or 1 273 1018 +1022 and 1 275 1021 +1023 or 1 1020 1022 +1024 or 1 275 1021 +1025 and 1 277 1024 +1026 or 1 1023 1025 +1027 and 1 1016 -1026 +1028 or 1 277 1024 +1029 and 1 1027 1028 +1030 and 1 939 1029 +1031 and 1 292 -291 +1032 and 1 209 -281 +1033 or 1 1032 330 +1034 and 1 1031 1033 +1035 and 1 298 -296 +1036 or 1 1031 1033 +1037 and 1 1035 1036 +1038 or 1 1034 1037 +1039 and 1 325 -326 +1040 or 1 1035 1036 +1041 and 1 1039 1040 +1042 or 1 1038 1041 +1043 and 1 329 -330 +1044 or 1 1039 1040 +1045 and 1 1043 1044 +1046 or 1 1042 1045 +1047 or 1 1043 1044 +1048 and 1 -1046 1047 +1049 and 1 353 -352 +1050 and 1 219 -333 +1051 or 1 1050 430 +1052 and 1 1049 1051 +1053 and 1 359 -357 +1054 or 1 1049 1051 +1055 and 1 1053 1054 +1056 or 1 1052 1055 +1057 and 1 425 -426 +1058 or 1 1053 1054 +1059 and 1 1057 1058 +1060 or 1 1056 1059 +1061 and 1 429 -430 +1062 or 1 1057 1058 +1063 and 1 1061 1062 +1064 or 1 1060 1063 +1065 and 1 1048 -1064 +1066 or 1 1061 1062 +1067 and 1 1065 1066 +1068 and 1 452 -451 +1069 and 1 229 -433 +1070 or 1 1069 523 +1071 and 1 1068 1070 +1072 and 1 458 -456 +1073 or 1 1068 1070 +1074 and 1 1072 1073 +1075 or 1 1071 1074 +1076 and 1 518 -519 +1077 or 1 1072 1073 +1078 and 1 1076 1077 +1079 or 1 1075 1078 +1080 and 1 522 -523 +1081 or 1 1076 1077 +1082 and 1 1080 1081 +1083 or 1 1079 1082 +1084 and 1 1067 -1083 +1085 or 1 1080 1081 +1086 and 1 1084 1085 +1087 and 1 545 -544 +1088 and 1 239 -526 +1089 or 1 1088 616 +1090 and 1 1087 1089 +1091 and 1 551 -549 +1092 or 1 1087 1089 +1093 and 1 1091 1092 +1094 or 1 1090 1093 +1095 and 1 611 -612 +1096 or 1 1091 1092 +1097 and 1 1095 1096 +1098 or 1 1094 1097 +1099 and 1 615 -616 +1100 or 1 1095 1096 +1101 and 1 1099 1100 +1102 or 1 1098 1101 +1103 and 1 1086 -1102 +1104 or 1 1099 1100 +1105 and 1 1103 1104 +1106 and 1 638 -637 +1107 and 1 249 -619 +1108 or 1 1107 709 +1109 and 1 1106 1108 +1110 and 1 644 -642 +1111 or 1 1106 1108 +1112 and 1 1110 1111 +1113 or 1 1109 1112 +1114 and 1 704 -705 +1115 or 1 1110 1111 +1116 and 1 1114 1115 +1117 or 1 1113 1116 +1118 and 1 708 -709 +1119 or 1 1114 1115 +1120 and 1 1118 1119 +1121 or 1 1117 1120 +1122 and 1 1105 -1121 +1123 or 1 1118 1119 +1124 and 1 1122 1123 +1125 and 1 731 -730 +1126 and 1 259 -712 +1127 or 1 1126 802 +1128 and 1 1125 1127 +1129 and 1 737 -735 +1130 or 1 1125 1127 +1131 and 1 1129 1130 +1132 or 1 1128 1131 +1133 and 1 797 -798 +1134 or 1 1129 1130 +1135 and 1 1133 1134 +1136 or 1 1132 1135 +1137 and 1 801 -802 +1138 or 1 1133 1134 +1139 and 1 1137 1138 +1140 or 1 1136 1139 +1141 and 1 1124 -1140 +1142 or 1 1137 1138 +1143 and 1 1141 1142 +1144 and 1 824 -823 +1145 and 1 269 -805 +1146 or 1 1145 895 +1147 and 1 1144 1146 +1148 and 1 830 -828 +1149 or 1 1144 1146 +1150 and 1 1148 1149 +1151 or 1 1147 1150 +1152 and 1 890 -891 +1153 or 1 1148 1149 +1154 and 1 1152 1153 +1155 or 1 1151 1154 +1156 and 1 894 -895 +1157 or 1 1152 1153 +1158 and 1 1156 1157 +1159 or 1 1155 1158 +1160 and 1 1143 -1159 +1161 or 1 1156 1157 +1162 and 1 1160 1161 +1163 and 1 1030 1162 +1164 concat 4 299 834 +1165 add 4 338 1164 +1166 srem 4 1165 301 +1167 eq 1 365 1166 +1168 and 1 895 1167 +1169 and 1 835 891 +1170 ite 2 1169 148 843 +1171 ite 2 1168 145 1170 +1172 eq 1 1171 6 +1173 and 1 1163 1172 +1174 eq 1 338 1166 +1175 and 1 895 1174 +1176 and 1 844 891 +1177 ite 2 1176 148 849 +1178 ite 2 1175 145 1177 +1179 eq 1 1178 8 +1180 and 1 1173 1179 +1181 eq 1 381 1166 +1182 and 1 895 1181 +1183 and 1 850 891 +1184 ite 2 1183 148 855 +1185 ite 2 1182 145 1184 +1186 eq 1 1185 10 +1187 and 1 1180 1186 +1188 eq 1 388 1166 +1189 and 1 895 1188 +1190 and 1 856 891 +1191 ite 2 1190 148 861 +1192 ite 2 1189 145 1191 +1193 eq 1 1192 12 +1194 and 1 1187 1193 +1195 eq 1 395 1166 +1196 and 1 895 1195 +1197 and 1 862 891 +1198 ite 2 1197 148 867 +1199 ite 2 1196 145 1198 +1200 eq 1 1199 14 +1201 and 1 1194 1200 +1202 eq 1 402 1166 +1203 and 1 895 1202 +1204 and 1 868 891 +1205 ite 2 1204 148 873 +1206 ite 2 1203 145 1205 +1207 eq 1 1206 16 +1208 and 1 1201 1207 +1209 eq 1 408 1166 +1210 and 1 895 1209 +1211 eq 1 285 834 +1212 and 1 1211 891 +1213 ite 2 1212 148 879 +1214 ite 2 1210 145 1213 +1215 eq 1 1214 18 +1216 and 1 1208 1215 +1217 concat 4 299 817 +1218 add 4 338 1217 +1219 slice 2 1218 7 0 +1220 ite 2 805 1219 817 +1221 concat 4 299 1220 +1222 sub 4 1221 301 +1223 slice 2 1222 7 0 +1224 ite 2 808 1223 1220 +1225 eq 1 1224 20 +1226 and 1 1216 1225 +1227 eq 1 304 22 +1228 and 1 1226 1227 +1229 eq 1 363 24 +1230 and 1 1228 1229 +1231 eq 1 462 26 +1232 and 1 1230 1231 +1233 eq 1 555 28 +1234 and 1 1232 1233 +1235 eq 1 648 30 +1236 and 1 1234 1235 +1237 eq 1 741 32 +1238 and 1 1236 1237 +1239 eq 1 834 34 +1240 and 1 1238 1239 +1241 eq 1 1033 37 +1242 and 1 1240 1241 +1243 eq 1 1031 39 +1244 and 1 1242 1243 +1245 eq 1 1035 41 +1246 and 1 1244 1245 +1247 eq 1 1039 43 +1248 and 1 1246 1247 +1249 eq 1 1043 45 +1250 and 1 1248 1249 +1251 eq 1 1051 47 +1252 and 1 1250 1251 +1253 eq 1 1049 49 +1254 and 1 1252 1253 +1255 eq 1 1053 51 +1256 and 1 1254 1255 +1257 eq 1 1057 53 +1258 and 1 1256 1257 +1259 eq 1 1061 55 +1260 and 1 1258 1259 +1261 eq 1 1070 57 +1262 and 1 1260 1261 +1263 eq 1 1068 59 +1264 and 1 1262 1263 +1265 eq 1 1072 61 +1266 and 1 1264 1265 +1267 eq 1 1076 63 +1268 and 1 1266 1267 +1269 eq 1 1080 65 +1270 and 1 1268 1269 +1271 eq 1 1089 67 +1272 and 1 1270 1271 +1273 eq 1 1087 69 +1274 and 1 1272 1273 +1275 eq 1 1091 71 +1276 and 1 1274 1275 +1277 eq 1 1095 73 +1278 and 1 1276 1277 +1279 eq 1 1099 75 +1280 and 1 1278 1279 +1281 eq 1 1108 77 +1282 and 1 1280 1281 +1283 eq 1 1106 79 +1284 and 1 1282 1283 +1285 eq 1 1110 81 +1286 and 1 1284 1285 +1287 eq 1 1114 83 +1288 and 1 1286 1287 +1289 eq 1 1118 85 +1290 and 1 1288 1289 +1291 eq 1 1127 87 +1292 and 1 1290 1291 +1293 eq 1 1125 89 +1294 and 1 1292 1293 +1295 eq 1 1129 91 +1296 and 1 1294 1295 +1297 eq 1 1133 93 +1298 and 1 1296 1297 +1299 eq 1 1137 95 +1300 and 1 1298 1299 +1301 eq 1 1146 97 +1302 and 1 1300 1301 +1303 eq 1 1144 99 +1304 and 1 1302 1303 +1305 eq 1 1148 101 +1306 and 1 1304 1305 +1307 eq 1 1152 103 +1308 and 1 1306 1307 +1309 eq 1 1156 105 +1310 and 1 1308 1309 +1311 and 1 1310 109 +1312 ite 4 217 338 365 +1313 ite 4 227 338 365 +1314 add 4 1312 1313 +1315 ite 4 237 338 365 +1316 add 4 1314 1315 +1317 ite 4 247 338 365 +1318 add 4 1316 1317 +1319 ite 4 257 338 365 +1320 add 4 1318 1319 +1321 ite 4 267 338 365 +1322 add 4 1320 1321 +1323 ite 4 277 338 365 +1324 add 4 1322 1323 +1325 ulte 1 1324 338 +1326 ite 1 107 1311 -1325 +1327 next 1 109 1326 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-func-interl.btor2 new file mode 100644 index 0000000000..bb67106c08 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-func-interl.btor2 @@ -0,0 +1,1146 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_Slot_0 +7 init 2 6 5 +8 state 2 v_Slot_1 +9 init 2 8 5 +10 state 2 v_Slot_2 +11 init 2 10 5 +12 state 2 v_Slot_3 +13 init 2 12 5 +14 state 2 v_Slot_4 +15 init 2 14 5 +16 state 2 v_Slot_5 +17 init 2 16 5 +18 state 2 v_Slot_6 +19 init 2 18 5 +20 state 2 v_next +21 init 2 20 5 +22 state 2 v_my_place_P_0 +23 init 2 22 5 +24 state 2 v_my_place_P_1 +25 init 2 24 5 +26 state 2 v_my_place_P_2 +27 init 2 26 5 +28 state 2 v_my_place_P_3 +29 init 2 28 5 +30 state 2 v_my_place_P_4 +31 init 2 30 5 +32 state 2 v_my_place_P_5 +33 init 2 32 5 +34 state 2 v_my_place_P_6 +35 init 2 34 5 +36 zero 1 +37 state 1 a_NCS_P_0 +38 init 1 37 36 +39 state 1 a_p1_P_0 +40 init 1 39 36 +41 state 1 a_p2_P_0 +42 init 1 41 36 +43 state 1 a_p3_P_0 +44 init 1 43 36 +45 state 1 a_CS_P_0 +46 init 1 45 36 +47 state 1 a_NCS_P_1 +48 init 1 47 36 +49 state 1 a_p1_P_1 +50 init 1 49 36 +51 state 1 a_p2_P_1 +52 init 1 51 36 +53 state 1 a_p3_P_1 +54 init 1 53 36 +55 state 1 a_CS_P_1 +56 init 1 55 36 +57 state 1 a_NCS_P_2 +58 init 1 57 36 +59 state 1 a_p1_P_2 +60 init 1 59 36 +61 state 1 a_p2_P_2 +62 init 1 61 36 +63 state 1 a_p3_P_2 +64 init 1 63 36 +65 state 1 a_CS_P_2 +66 init 1 65 36 +67 state 1 a_NCS_P_3 +68 init 1 67 36 +69 state 1 a_p1_P_3 +70 init 1 69 36 +71 state 1 a_p2_P_3 +72 init 1 71 36 +73 state 1 a_p3_P_3 +74 init 1 73 36 +75 state 1 a_CS_P_3 +76 init 1 75 36 +77 state 1 a_NCS_P_4 +78 init 1 77 36 +79 state 1 a_p1_P_4 +80 init 1 79 36 +81 state 1 a_p2_P_4 +82 init 1 81 36 +83 state 1 a_p3_P_4 +84 init 1 83 36 +85 state 1 a_CS_P_4 +86 init 1 85 36 +87 state 1 a_NCS_P_5 +88 init 1 87 36 +89 state 1 a_p1_P_5 +90 init 1 89 36 +91 state 1 a_p2_P_5 +92 init 1 91 36 +93 state 1 a_p3_P_5 +94 init 1 93 36 +95 state 1 a_CS_P_5 +96 init 1 95 36 +97 state 1 a_NCS_P_6 +98 init 1 97 36 +99 state 1 a_p1_P_6 +100 init 1 99 36 +101 state 1 a_p2_P_6 +102 init 1 101 36 +103 state 1 a_p3_P_6 +104 init 1 103 36 +105 state 1 a_CS_P_6 +106 init 1 105 36 +107 state 1 dve_invalid +108 init 1 107 36 +109 constd 4 1 +110 constd 4 0 +111 ite 4 45 109 110 +112 ite 4 55 109 110 +113 add 4 111 112 +114 ite 4 65 109 110 +115 add 4 113 114 +116 ite 4 75 109 110 +117 add 4 115 116 +118 ite 4 85 109 110 +119 add 4 117 118 +120 ite 4 95 109 110 +121 add 4 119 120 +122 ite 4 105 109 110 +123 add 4 121 122 +124 ulte 1 123 109 +125 and 1 -107 -124 +126 bad 125 +127 constd 2 1 +128 input 1 f41 +129 constd 3 0 +130 concat 4 129 34 +131 add 4 109 130 +132 constd 4 7 +133 srem 4 131 132 +134 eq 1 110 133 +135 and 1 128 134 +136 constd 2 0 +137 eq 1 136 34 +138 input 1 f40 +139 and 1 137 138 +140 input 1 f35 +141 concat 4 129 32 +142 add 4 109 141 +143 srem 4 142 132 +144 eq 1 110 143 +145 and 1 140 144 +146 eq 1 136 32 +147 input 1 f34 +148 and 1 146 147 +149 input 1 f29 +150 concat 4 129 30 +151 add 4 109 150 +152 srem 4 151 132 +153 eq 1 110 152 +154 and 1 149 153 +155 eq 1 136 30 +156 input 1 f28 +157 and 1 155 156 +158 input 1 f23 +159 concat 4 129 28 +160 add 4 109 159 +161 srem 4 160 132 +162 eq 1 110 161 +163 and 1 158 162 +164 eq 1 136 28 +165 input 1 f22 +166 and 1 164 165 +167 input 1 f17 +168 concat 4 129 26 +169 add 4 109 168 +170 srem 4 169 132 +171 eq 1 110 170 +172 and 1 167 171 +173 eq 1 136 26 +174 input 1 f16 +175 and 1 173 174 +176 input 1 f11 +177 concat 4 129 24 +178 add 4 109 177 +179 srem 4 178 132 +180 eq 1 110 179 +181 and 1 176 180 +182 eq 1 136 24 +183 input 1 f10 +184 and 1 182 183 +185 input 1 f05 +186 concat 4 129 22 +187 add 4 109 186 +188 srem 4 187 132 +189 eq 1 110 188 +190 and 1 185 189 +191 eq 1 136 22 +192 input 1 f04 +193 and 1 191 192 +194 xor 2 127 6 +195 ite 2 193 136 194 +196 ite 2 190 127 195 +197 ite 2 184 136 196 +198 ite 2 181 127 197 +199 ite 2 175 136 198 +200 ite 2 172 127 199 +201 ite 2 166 136 200 +202 ite 2 163 127 201 +203 ite 2 157 136 202 +204 ite 2 154 127 203 +205 ite 2 148 136 204 +206 ite 2 145 127 205 +207 ite 2 139 136 206 +208 ite 2 135 127 207 +209 xor 2 127 208 +210 next 2 6 209 +211 eq 1 109 133 +212 and 1 128 211 +213 eq 1 127 34 +214 and 1 213 138 +215 eq 1 109 143 +216 and 1 140 215 +217 eq 1 127 32 +218 and 1 217 147 +219 eq 1 109 152 +220 and 1 149 219 +221 eq 1 127 30 +222 and 1 221 156 +223 eq 1 109 161 +224 and 1 158 223 +225 eq 1 127 28 +226 and 1 225 165 +227 eq 1 109 170 +228 and 1 167 227 +229 eq 1 127 26 +230 and 1 229 174 +231 eq 1 109 179 +232 and 1 176 231 +233 eq 1 127 24 +234 and 1 233 183 +235 eq 1 109 188 +236 and 1 185 235 +237 eq 1 127 22 +238 and 1 237 192 +239 ite 2 238 136 8 +240 ite 2 236 127 239 +241 ite 2 234 136 240 +242 ite 2 232 127 241 +243 ite 2 230 136 242 +244 ite 2 228 127 243 +245 ite 2 226 136 244 +246 ite 2 224 127 245 +247 ite 2 222 136 246 +248 ite 2 220 127 247 +249 ite 2 218 136 248 +250 ite 2 216 127 249 +251 ite 2 214 136 250 +252 ite 2 212 127 251 +253 next 2 8 252 +254 constd 4 2 +255 eq 1 254 133 +256 and 1 128 255 +257 constd 2 2 +258 eq 1 257 34 +259 and 1 258 138 +260 eq 1 254 143 +261 and 1 140 260 +262 eq 1 257 32 +263 and 1 262 147 +264 eq 1 254 152 +265 and 1 149 264 +266 eq 1 257 30 +267 and 1 266 156 +268 eq 1 254 161 +269 and 1 158 268 +270 eq 1 257 28 +271 and 1 270 165 +272 eq 1 254 170 +273 and 1 167 272 +274 eq 1 257 26 +275 and 1 274 174 +276 eq 1 254 179 +277 and 1 176 276 +278 eq 1 257 24 +279 and 1 278 183 +280 eq 1 254 188 +281 and 1 185 280 +282 eq 1 257 22 +283 and 1 282 192 +284 ite 2 283 136 10 +285 ite 2 281 127 284 +286 ite 2 279 136 285 +287 ite 2 277 127 286 +288 ite 2 275 136 287 +289 ite 2 273 127 288 +290 ite 2 271 136 289 +291 ite 2 269 127 290 +292 ite 2 267 136 291 +293 ite 2 265 127 292 +294 ite 2 263 136 293 +295 ite 2 261 127 294 +296 ite 2 259 136 295 +297 ite 2 256 127 296 +298 next 2 10 297 +299 constd 4 3 +300 eq 1 299 133 +301 and 1 128 300 +302 constd 2 3 +303 eq 1 302 34 +304 and 1 303 138 +305 eq 1 299 143 +306 and 1 140 305 +307 eq 1 302 32 +308 and 1 307 147 +309 eq 1 299 152 +310 and 1 149 309 +311 eq 1 302 30 +312 and 1 311 156 +313 eq 1 299 161 +314 and 1 158 313 +315 eq 1 302 28 +316 and 1 315 165 +317 eq 1 299 170 +318 and 1 167 317 +319 eq 1 302 26 +320 and 1 319 174 +321 eq 1 299 179 +322 and 1 176 321 +323 eq 1 302 24 +324 and 1 323 183 +325 eq 1 299 188 +326 and 1 185 325 +327 eq 1 302 22 +328 and 1 327 192 +329 ite 2 328 136 12 +330 ite 2 326 127 329 +331 ite 2 324 136 330 +332 ite 2 322 127 331 +333 ite 2 320 136 332 +334 ite 2 318 127 333 +335 ite 2 316 136 334 +336 ite 2 314 127 335 +337 ite 2 312 136 336 +338 ite 2 310 127 337 +339 ite 2 308 136 338 +340 ite 2 306 127 339 +341 ite 2 304 136 340 +342 ite 2 301 127 341 +343 next 2 12 342 +344 constd 4 4 +345 eq 1 344 133 +346 and 1 128 345 +347 constd 2 4 +348 eq 1 347 34 +349 and 1 348 138 +350 eq 1 344 143 +351 and 1 140 350 +352 eq 1 347 32 +353 and 1 352 147 +354 eq 1 344 152 +355 and 1 149 354 +356 eq 1 347 30 +357 and 1 356 156 +358 eq 1 344 161 +359 and 1 158 358 +360 eq 1 347 28 +361 and 1 360 165 +362 eq 1 344 170 +363 and 1 167 362 +364 eq 1 347 26 +365 and 1 364 174 +366 eq 1 344 179 +367 and 1 176 366 +368 eq 1 347 24 +369 and 1 368 183 +370 eq 1 344 188 +371 and 1 185 370 +372 eq 1 347 22 +373 and 1 372 192 +374 ite 2 373 136 14 +375 ite 2 371 127 374 +376 ite 2 369 136 375 +377 ite 2 367 127 376 +378 ite 2 365 136 377 +379 ite 2 363 127 378 +380 ite 2 361 136 379 +381 ite 2 359 127 380 +382 ite 2 357 136 381 +383 ite 2 355 127 382 +384 ite 2 353 136 383 +385 ite 2 351 127 384 +386 ite 2 349 136 385 +387 ite 2 346 127 386 +388 next 2 14 387 +389 constd 4 5 +390 eq 1 389 133 +391 and 1 128 390 +392 constd 2 5 +393 eq 1 392 34 +394 and 1 393 138 +395 eq 1 389 143 +396 and 1 140 395 +397 eq 1 392 32 +398 and 1 397 147 +399 eq 1 389 152 +400 and 1 149 399 +401 eq 1 392 30 +402 and 1 401 156 +403 eq 1 389 161 +404 and 1 158 403 +405 eq 1 392 28 +406 and 1 405 165 +407 eq 1 389 170 +408 and 1 167 407 +409 eq 1 392 26 +410 and 1 409 174 +411 eq 1 389 179 +412 and 1 176 411 +413 eq 1 392 24 +414 and 1 413 183 +415 eq 1 389 188 +416 and 1 185 415 +417 eq 1 392 22 +418 and 1 417 192 +419 ite 2 418 136 16 +420 ite 2 416 127 419 +421 ite 2 414 136 420 +422 ite 2 412 127 421 +423 ite 2 410 136 422 +424 ite 2 408 127 423 +425 ite 2 406 136 424 +426 ite 2 404 127 425 +427 ite 2 402 136 426 +428 ite 2 400 127 427 +429 ite 2 398 136 428 +430 ite 2 396 127 429 +431 ite 2 394 136 430 +432 ite 2 391 127 431 +433 next 2 16 432 +434 constd 4 6 +435 eq 1 434 133 +436 and 1 128 435 +437 constd 2 6 +438 eq 1 437 34 +439 and 1 438 138 +440 eq 1 434 143 +441 and 1 140 440 +442 eq 1 437 32 +443 and 1 442 147 +444 eq 1 434 152 +445 and 1 149 444 +446 eq 1 437 30 +447 and 1 446 156 +448 eq 1 434 161 +449 and 1 158 448 +450 eq 1 437 28 +451 and 1 450 165 +452 eq 1 434 170 +453 and 1 167 452 +454 eq 1 437 26 +455 and 1 454 174 +456 eq 1 434 179 +457 and 1 176 456 +458 eq 1 437 24 +459 and 1 458 183 +460 eq 1 434 188 +461 and 1 185 460 +462 eq 1 437 22 +463 and 1 462 192 +464 ite 2 463 136 18 +465 ite 2 461 127 464 +466 ite 2 459 136 465 +467 ite 2 457 127 466 +468 ite 2 455 136 467 +469 ite 2 453 127 468 +470 ite 2 451 136 469 +471 ite 2 449 127 470 +472 ite 2 447 136 471 +473 ite 2 445 127 472 +474 ite 2 443 136 473 +475 ite 2 441 127 474 +476 ite 2 439 136 475 +477 ite 2 436 127 476 +478 next 2 18 477 +479 input 1 f37 +480 concat 4 129 20 +481 sub 4 480 132 +482 slice 2 481 7 0 +483 input 1 f36 +484 add 4 109 480 +485 slice 2 484 7 0 +486 input 1 f31 +487 input 1 f30 +488 input 1 f25 +489 input 1 f24 +490 input 1 f19 +491 input 1 f18 +492 input 1 f13 +493 input 1 f12 +494 input 1 f07 +495 input 1 f06 +496 input 1 f01 +497 input 1 f00 +498 ite 2 497 485 20 +499 ite 2 496 482 498 +500 ite 2 495 485 499 +501 ite 2 494 482 500 +502 ite 2 493 485 501 +503 ite 2 492 482 502 +504 ite 2 491 485 503 +505 ite 2 490 482 504 +506 ite 2 489 485 505 +507 ite 2 488 482 506 +508 ite 2 487 485 507 +509 ite 2 486 482 508 +510 ite 2 483 485 509 +511 ite 2 479 482 510 +512 next 2 20 511 +513 input 1 f02 +514 srem 4 186 132 +515 slice 2 514 7 0 +516 ite 2 497 20 22 +517 ite 2 513 515 516 +518 next 2 22 517 +519 input 1 f08 +520 srem 4 177 132 +521 slice 2 520 7 0 +522 ite 2 495 20 24 +523 ite 2 519 521 522 +524 next 2 24 523 +525 input 1 f14 +526 srem 4 168 132 +527 slice 2 526 7 0 +528 ite 2 493 20 26 +529 ite 2 525 527 528 +530 next 2 26 529 +531 input 1 f20 +532 srem 4 159 132 +533 slice 2 532 7 0 +534 ite 2 491 20 28 +535 ite 2 531 533 534 +536 next 2 28 535 +537 input 1 f26 +538 srem 4 150 132 +539 slice 2 538 7 0 +540 ite 2 489 20 30 +541 ite 2 537 539 540 +542 next 2 30 541 +543 input 1 f32 +544 srem 4 141 132 +545 slice 2 544 7 0 +546 ite 2 487 20 32 +547 ite 2 543 545 546 +548 next 2 32 547 +549 input 1 f38 +550 srem 4 130 132 +551 slice 2 550 7 0 +552 ite 2 483 20 34 +553 ite 2 549 551 552 +554 next 2 34 553 +555 and 1 -37 -497 +556 or 1 555 185 +557 next 1 37 -556 +558 or 1 39 497 +559 and 1 558 -496 +560 and 1 559 -513 +561 next 1 39 560 +562 or 1 41 496 +563 or 1 562 513 +564 input 1 f03 +565 and 1 563 -564 +566 next 1 41 565 +567 or 1 43 564 +568 and 1 567 -192 +569 next 1 43 568 +570 or 1 45 192 +571 and 1 570 -185 +572 next 1 45 571 +573 and 1 -47 -495 +574 or 1 573 176 +575 next 1 47 -574 +576 or 1 49 495 +577 and 1 576 -494 +578 and 1 577 -519 +579 next 1 49 578 +580 or 1 51 494 +581 or 1 580 519 +582 input 1 f09 +583 and 1 581 -582 +584 next 1 51 583 +585 or 1 53 582 +586 and 1 585 -183 +587 next 1 53 586 +588 or 1 55 183 +589 and 1 588 -176 +590 next 1 55 589 +591 and 1 -57 -493 +592 or 1 591 167 +593 next 1 57 -592 +594 or 1 59 493 +595 and 1 594 -492 +596 and 1 595 -525 +597 next 1 59 596 +598 or 1 61 492 +599 or 1 598 525 +600 input 1 f15 +601 and 1 599 -600 +602 next 1 61 601 +603 or 1 63 600 +604 and 1 603 -174 +605 next 1 63 604 +606 or 1 65 174 +607 and 1 606 -167 +608 next 1 65 607 +609 and 1 -67 -491 +610 or 1 609 158 +611 next 1 67 -610 +612 or 1 69 491 +613 and 1 612 -490 +614 and 1 613 -531 +615 next 1 69 614 +616 or 1 71 490 +617 or 1 616 531 +618 input 1 f21 +619 and 1 617 -618 +620 next 1 71 619 +621 or 1 73 618 +622 and 1 621 -165 +623 next 1 73 622 +624 or 1 75 165 +625 and 1 624 -158 +626 next 1 75 625 +627 and 1 -77 -489 +628 or 1 627 149 +629 next 1 77 -628 +630 or 1 79 489 +631 and 1 630 -488 +632 and 1 631 -537 +633 next 1 79 632 +634 or 1 81 488 +635 or 1 634 537 +636 input 1 f27 +637 and 1 635 -636 +638 next 1 81 637 +639 or 1 83 636 +640 and 1 639 -156 +641 next 1 83 640 +642 or 1 85 156 +643 and 1 642 -149 +644 next 1 85 643 +645 and 1 -87 -487 +646 or 1 645 140 +647 next 1 87 -646 +648 or 1 89 487 +649 and 1 648 -486 +650 and 1 649 -543 +651 next 1 89 650 +652 or 1 91 486 +653 or 1 652 543 +654 input 1 f33 +655 and 1 653 -654 +656 next 1 91 655 +657 or 1 93 654 +658 and 1 657 -147 +659 next 1 93 658 +660 or 1 95 147 +661 and 1 660 -140 +662 next 1 95 661 +663 and 1 -97 -483 +664 or 1 663 128 +665 next 1 97 -664 +666 or 1 99 483 +667 and 1 666 -479 +668 and 1 667 -549 +669 next 1 99 668 +670 or 1 101 479 +671 or 1 670 549 +672 input 1 f39 +673 and 1 671 -672 +674 next 1 101 673 +675 or 1 103 672 +676 and 1 675 -138 +677 next 1 103 676 +678 or 1 105 138 +679 and 1 678 -128 +680 next 1 105 679 +681 or 1 -37 -497 +682 and 1 39 462 +683 or 1 -496 682 +684 and 1 681 683 +685 and 1 39 -462 +686 or 1 -513 685 +687 and 1 684 686 +688 ite 2 417 16 18 +689 ite 2 372 14 688 +690 ite 2 327 12 689 +691 ite 2 282 10 690 +692 ite 2 237 8 691 +693 ite 2 191 194 692 +694 eq 1 127 693 +695 and 1 41 694 +696 or 1 -564 695 +697 and 1 687 696 +698 or 1 43 -192 +699 and 1 697 698 +700 or 1 45 -185 +701 and 1 699 700 +702 or 1 -47 -495 +703 and 1 701 702 +704 and 1 49 458 +705 or 1 -494 704 +706 and 1 703 705 +707 and 1 49 -458 +708 or 1 -519 707 +709 and 1 706 708 +710 ite 2 413 16 18 +711 ite 2 368 14 710 +712 ite 2 323 12 711 +713 ite 2 278 10 712 +714 ite 2 233 8 713 +715 ite 2 182 194 714 +716 eq 1 127 715 +717 and 1 51 716 +718 or 1 -582 717 +719 and 1 709 718 +720 or 1 53 -183 +721 and 1 719 720 +722 or 1 55 -176 +723 and 1 721 722 +724 or 1 -57 -493 +725 and 1 723 724 +726 and 1 59 454 +727 or 1 -492 726 +728 and 1 725 727 +729 and 1 59 -454 +730 or 1 -525 729 +731 and 1 728 730 +732 ite 2 409 16 18 +733 ite 2 364 14 732 +734 ite 2 319 12 733 +735 ite 2 274 10 734 +736 ite 2 229 8 735 +737 ite 2 173 194 736 +738 eq 1 127 737 +739 and 1 61 738 +740 or 1 -600 739 +741 and 1 731 740 +742 or 1 63 -174 +743 and 1 741 742 +744 or 1 65 -167 +745 and 1 743 744 +746 or 1 -67 -491 +747 and 1 745 746 +748 and 1 69 450 +749 or 1 -490 748 +750 and 1 747 749 +751 and 1 69 -450 +752 or 1 -531 751 +753 and 1 750 752 +754 ite 2 405 16 18 +755 ite 2 360 14 754 +756 ite 2 315 12 755 +757 ite 2 270 10 756 +758 ite 2 225 8 757 +759 ite 2 164 194 758 +760 eq 1 127 759 +761 and 1 71 760 +762 or 1 -618 761 +763 and 1 753 762 +764 or 1 73 -165 +765 and 1 763 764 +766 or 1 75 -158 +767 and 1 765 766 +768 or 1 -77 -489 +769 and 1 767 768 +770 and 1 79 446 +771 or 1 -488 770 +772 and 1 769 771 +773 and 1 79 -446 +774 or 1 -537 773 +775 and 1 772 774 +776 ite 2 401 16 18 +777 ite 2 356 14 776 +778 ite 2 311 12 777 +779 ite 2 266 10 778 +780 ite 2 221 8 779 +781 ite 2 155 194 780 +782 eq 1 127 781 +783 and 1 81 782 +784 or 1 -636 783 +785 and 1 775 784 +786 or 1 83 -156 +787 and 1 785 786 +788 or 1 85 -149 +789 and 1 787 788 +790 or 1 -87 -487 +791 and 1 789 790 +792 and 1 89 442 +793 or 1 -486 792 +794 and 1 791 793 +795 and 1 89 -442 +796 or 1 -543 795 +797 and 1 794 796 +798 ite 2 397 16 18 +799 ite 2 352 14 798 +800 ite 2 307 12 799 +801 ite 2 262 10 800 +802 ite 2 217 8 801 +803 ite 2 146 194 802 +804 eq 1 127 803 +805 and 1 91 804 +806 or 1 -654 805 +807 and 1 797 806 +808 or 1 93 -147 +809 and 1 807 808 +810 or 1 95 -140 +811 and 1 809 810 +812 or 1 -97 -483 +813 and 1 811 812 +814 and 1 99 438 +815 or 1 -479 814 +816 and 1 813 815 +817 and 1 99 -438 +818 or 1 -549 817 +819 and 1 816 818 +820 ite 2 393 16 18 +821 ite 2 348 14 820 +822 ite 2 303 12 821 +823 ite 2 258 10 822 +824 ite 2 213 8 823 +825 ite 2 137 194 824 +826 eq 1 127 825 +827 and 1 101 826 +828 or 1 -672 827 +829 and 1 819 828 +830 or 1 103 -138 +831 and 1 829 830 +832 or 1 105 -128 +833 and 1 831 832 +834 or 1 497 496 +835 or 1 513 834 +836 or 1 564 835 +837 or 1 192 836 +838 or 1 185 837 +839 or 1 495 838 +840 or 1 494 839 +841 or 1 519 840 +842 or 1 582 841 +843 or 1 183 842 +844 or 1 176 843 +845 or 1 493 844 +846 or 1 492 845 +847 or 1 525 846 +848 or 1 600 847 +849 or 1 174 848 +850 or 1 167 849 +851 or 1 491 850 +852 or 1 490 851 +853 or 1 531 852 +854 or 1 618 853 +855 or 1 165 854 +856 or 1 158 855 +857 or 1 489 856 +858 or 1 488 857 +859 or 1 537 858 +860 or 1 636 859 +861 or 1 156 860 +862 or 1 149 861 +863 or 1 487 862 +864 or 1 486 863 +865 or 1 543 864 +866 or 1 654 865 +867 or 1 147 866 +868 or 1 140 867 +869 or 1 483 868 +870 or 1 479 869 +871 or 1 549 870 +872 or 1 672 871 +873 or 1 138 872 +874 or 1 128 873 +875 and 1 833 874 +876 and 1 497 496 +877 and 1 513 834 +878 or 1 876 877 +879 and 1 564 835 +880 or 1 878 879 +881 and 1 192 836 +882 or 1 880 881 +883 and 1 185 837 +884 or 1 882 883 +885 and 1 495 838 +886 or 1 884 885 +887 and 1 494 839 +888 or 1 886 887 +889 and 1 519 840 +890 or 1 888 889 +891 and 1 582 841 +892 or 1 890 891 +893 and 1 183 842 +894 or 1 892 893 +895 and 1 176 843 +896 or 1 894 895 +897 and 1 493 844 +898 or 1 896 897 +899 and 1 492 845 +900 or 1 898 899 +901 and 1 525 846 +902 or 1 900 901 +903 and 1 600 847 +904 or 1 902 903 +905 and 1 174 848 +906 or 1 904 905 +907 and 1 167 849 +908 or 1 906 907 +909 and 1 491 850 +910 or 1 908 909 +911 and 1 490 851 +912 or 1 910 911 +913 and 1 531 852 +914 or 1 912 913 +915 and 1 618 853 +916 or 1 914 915 +917 and 1 165 854 +918 or 1 916 917 +919 and 1 158 855 +920 or 1 918 919 +921 and 1 489 856 +922 or 1 920 921 +923 and 1 488 857 +924 or 1 922 923 +925 and 1 537 858 +926 or 1 924 925 +927 and 1 636 859 +928 or 1 926 927 +929 and 1 156 860 +930 or 1 928 929 +931 and 1 149 861 +932 or 1 930 931 +933 and 1 487 862 +934 or 1 932 933 +935 and 1 486 863 +936 or 1 934 935 +937 and 1 543 864 +938 or 1 936 937 +939 and 1 654 865 +940 or 1 938 939 +941 and 1 147 866 +942 or 1 940 941 +943 and 1 140 867 +944 or 1 942 943 +945 and 1 483 868 +946 or 1 944 945 +947 and 1 479 869 +948 or 1 946 947 +949 and 1 549 870 +950 or 1 948 949 +951 and 1 672 871 +952 or 1 950 951 +953 and 1 138 872 +954 or 1 952 953 +955 and 1 128 873 +956 or 1 954 955 +957 and 1 875 -956 +958 and 1 -37 39 +959 or 1 -37 39 +960 and 1 41 959 +961 or 1 958 960 +962 or 1 41 959 +963 and 1 43 962 +964 or 1 961 963 +965 or 1 43 962 +966 and 1 45 965 +967 or 1 964 966 +968 or 1 45 965 +969 and 1 -967 968 +970 and 1 -47 49 +971 or 1 -47 49 +972 and 1 51 971 +973 or 1 970 972 +974 or 1 51 971 +975 and 1 53 974 +976 or 1 973 975 +977 or 1 53 974 +978 and 1 55 977 +979 or 1 976 978 +980 and 1 969 -979 +981 or 1 55 977 +982 and 1 980 981 +983 and 1 -57 59 +984 or 1 -57 59 +985 and 1 61 984 +986 or 1 983 985 +987 or 1 61 984 +988 and 1 63 987 +989 or 1 986 988 +990 or 1 63 987 +991 and 1 65 990 +992 or 1 989 991 +993 and 1 982 -992 +994 or 1 65 990 +995 and 1 993 994 +996 and 1 -67 69 +997 or 1 -67 69 +998 and 1 71 997 +999 or 1 996 998 +1000 or 1 71 997 +1001 and 1 73 1000 +1002 or 1 999 1001 +1003 or 1 73 1000 +1004 and 1 75 1003 +1005 or 1 1002 1004 +1006 and 1 995 -1005 +1007 or 1 75 1003 +1008 and 1 1006 1007 +1009 and 1 -77 79 +1010 or 1 -77 79 +1011 and 1 81 1010 +1012 or 1 1009 1011 +1013 or 1 81 1010 +1014 and 1 83 1013 +1015 or 1 1012 1014 +1016 or 1 83 1013 +1017 and 1 85 1016 +1018 or 1 1015 1017 +1019 and 1 1008 -1018 +1020 or 1 85 1016 +1021 and 1 1019 1020 +1022 and 1 -87 89 +1023 or 1 -87 89 +1024 and 1 91 1023 +1025 or 1 1022 1024 +1026 or 1 91 1023 +1027 and 1 93 1026 +1028 or 1 1025 1027 +1029 or 1 93 1026 +1030 and 1 95 1029 +1031 or 1 1028 1030 +1032 and 1 1021 -1031 +1033 or 1 95 1029 +1034 and 1 1032 1033 +1035 and 1 -97 99 +1036 or 1 -97 99 +1037 and 1 101 1036 +1038 or 1 1035 1037 +1039 or 1 101 1036 +1040 and 1 103 1039 +1041 or 1 1038 1040 +1042 or 1 103 1039 +1043 and 1 105 1042 +1044 or 1 1041 1043 +1045 and 1 1034 -1044 +1046 or 1 105 1042 +1047 and 1 1045 1046 +1048 and 1 957 1047 +1049 and 1 560 556 +1050 or 1 560 556 +1051 and 1 565 1050 +1052 or 1 1049 1051 +1053 or 1 565 1050 +1054 and 1 568 1053 +1055 or 1 1052 1054 +1056 or 1 568 1053 +1057 and 1 571 1056 +1058 or 1 1055 1057 +1059 or 1 571 1056 +1060 and 1 -1058 1059 +1061 and 1 578 574 +1062 or 1 578 574 +1063 and 1 583 1062 +1064 or 1 1061 1063 +1065 or 1 583 1062 +1066 and 1 586 1065 +1067 or 1 1064 1066 +1068 or 1 586 1065 +1069 and 1 589 1068 +1070 or 1 1067 1069 +1071 and 1 1060 -1070 +1072 or 1 589 1068 +1073 and 1 1071 1072 +1074 and 1 596 592 +1075 or 1 596 592 +1076 and 1 601 1075 +1077 or 1 1074 1076 +1078 or 1 601 1075 +1079 and 1 604 1078 +1080 or 1 1077 1079 +1081 or 1 604 1078 +1082 and 1 607 1081 +1083 or 1 1080 1082 +1084 and 1 1073 -1083 +1085 or 1 607 1081 +1086 and 1 1084 1085 +1087 and 1 614 610 +1088 or 1 614 610 +1089 and 1 619 1088 +1090 or 1 1087 1089 +1091 or 1 619 1088 +1092 and 1 622 1091 +1093 or 1 1090 1092 +1094 or 1 622 1091 +1095 and 1 625 1094 +1096 or 1 1093 1095 +1097 and 1 1086 -1096 +1098 or 1 625 1094 +1099 and 1 1097 1098 +1100 and 1 632 628 +1101 or 1 632 628 +1102 and 1 637 1101 +1103 or 1 1100 1102 +1104 or 1 637 1101 +1105 and 1 640 1104 +1106 or 1 1103 1105 +1107 or 1 640 1104 +1108 and 1 643 1107 +1109 or 1 1106 1108 +1110 and 1 1099 -1109 +1111 or 1 643 1107 +1112 and 1 1110 1111 +1113 and 1 650 646 +1114 or 1 650 646 +1115 and 1 655 1114 +1116 or 1 1113 1115 +1117 or 1 655 1114 +1118 and 1 658 1117 +1119 or 1 1116 1118 +1120 or 1 658 1117 +1121 and 1 661 1120 +1122 or 1 1119 1121 +1123 and 1 1112 -1122 +1124 or 1 661 1120 +1125 and 1 1123 1124 +1126 and 1 668 664 +1127 or 1 668 664 +1128 and 1 673 1127 +1129 or 1 1126 1128 +1130 or 1 673 1127 +1131 and 1 676 1130 +1132 or 1 1129 1131 +1133 or 1 676 1130 +1134 and 1 679 1133 +1135 or 1 1132 1134 +1136 and 1 1125 -1135 +1137 or 1 679 1133 +1138 and 1 1136 1137 +1139 and 1 1048 1138 +1140 and 1 1139 -107 +1141 next 1 107 -1140 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 new file mode 100644 index 0000000000..8da9976211 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/count2.btor2 @@ -0,0 +1,12 @@ +; source: https://github.com/Boolector/btor2tools/tree/b8456dda4780789e882f5791eb486f295ade4da4/examples/btorsim +1 sort bitvec 3 +2 zero 1 +3 state 1 +4 init 1 3 2 +5 one 1 +6 add 1 3 5 +7 next 1 3 6 +8 ones 1 +9 sort bitvec 1 +10 eq 9 3 8 +11 bad 10 From 74f068b996becc1a4dfa2a19e7e24b584fc7c7a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sun, 6 Jul 2025 17:41:11 +0200 Subject: [PATCH 33/72] Idk what else is wrong with ite but let's try this one --- .../bme/mit/theta/frontend/models/Btor2Operation.kt | 10 ++++------ .../bme/mit/theta/frontend/visitors/Btor2Visitor.kt | 13 ++++++++----- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 332d710e25..bac6a1684b 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -288,16 +288,14 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor override fun getExpr(): Expr { //checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) - val op1Expr = if (negated1) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) + val op1Expr = if (negated1) BvNegExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) - val op2Expr = if (negated2) BvNotExpr.create(op2.getExpr() as Expr) else (op2.getExpr() as Expr ) - val op2ExprBool = Eq(op2Expr, BvExprs.Bv(BooleanArray(1) { true })) - val op3Expr = if (negated3) BvNotExpr.create(op3.getExpr() as Expr) else (op3.getExpr() as Expr ) - val op3ExprBool = Eq(op3Expr, BvExprs.Bv(BooleanArray(1) { true })) + val op2Expr = if (negated2) BvNegExpr.create(op2.getExpr() as Expr) else (op2.getExpr() as Expr ) + val op3Expr = if (negated3) BvNegExpr.create(op3.getExpr() as Expr) else (op3.getExpr() as Expr ) return when(operator) { - Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2ExprBool as Expr, op3ExprBool as Expr) + Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2Expr as Expr, op3Expr as Expr) Btor2TernaryOperator.WRITE -> TODO() } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index 94e9535d1f..c0f3afbba5 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -28,7 +28,7 @@ class Btor2Visitor : Btor2BaseVisitor() { private val constantVisitor = ConstantVisitor() private val operationVisitor = OperationVisitor() private val statefulVisitor = StateVisitor() - //private val logger = ConsoleLogger(Logger.Level.VERBOSE) + private val logger = ConsoleLogger(Logger.Level.VERBOSE) override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { for (child in ctx?.children!!) { @@ -39,23 +39,26 @@ class Btor2Visitor : Btor2BaseVisitor() { override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { val result = sortVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Visiting sort: " + result + "\n") + logger.write(Logger.Level.VERBOSE, "Sort visited \t") Btor2Circuit.sorts[result.sid] = result return Btor2Circuit } override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { - //logger.write(Logger.Level.VERBOSE, "Visiting constant: " + constantVisitor.visit(ctx) + "\n") + val result = constantVisitor.visit(ctx) + logger.write(Logger.Level.VERBOSE, "Constant visited \t") return Btor2Circuit } override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { - //logger.write(Logger.Level.VERBOSE, "Visiting operation: " + operationVisitor.visit(ctx) + "\n") + val result = operationVisitor.visit(ctx) + logger.write(Logger.Level.VERBOSE, "Operation visited \t") return Btor2Circuit } override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { - //logger.write(Logger.Level.VERBOSE, "Visiting stateful: " + statefulVisitor.visit(ctx) + "\n") + val result = statefulVisitor.visit(ctx) + logger.write(Logger.Level.VERBOSE, "Stateful visited \t") return Btor2Circuit } From 63152915be91c87b632b81cbbc4f4be936399f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sun, 6 Jul 2025 17:41:51 +0200 Subject: [PATCH 34/72] Took out logger from Btor2Visitor --- .../hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index c0f3afbba5..02b97f827c 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -28,7 +28,7 @@ class Btor2Visitor : Btor2BaseVisitor() { private val constantVisitor = ConstantVisitor() private val operationVisitor = OperationVisitor() private val statefulVisitor = StateVisitor() - private val logger = ConsoleLogger(Logger.Level.VERBOSE) + //private val logger = ConsoleLogger(Logger.Level.VERBOSE) override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { for (child in ctx?.children!!) { @@ -39,26 +39,26 @@ class Btor2Visitor : Btor2BaseVisitor() { override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { val result = sortVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Sort visited \t") + //logger.write(Logger.Level.VERBOSE, "Sort visited \t") Btor2Circuit.sorts[result.sid] = result return Btor2Circuit } override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { val result = constantVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Constant visited \t") + //logger.write(Logger.Level.VERBOSE, "Constant visited \t") return Btor2Circuit } override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { val result = operationVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Operation visited \t") + //logger.write(Logger.Level.VERBOSE, "Operation visited \t") return Btor2Circuit } override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { val result = statefulVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Stateful visited \t") + //logger.write(Logger.Level.VERBOSE, "Stateful visited \t") return Btor2Circuit } From 4b4d9ceb5a22319e5c64e05c6b4f1f10ec12a4d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sun, 6 Jul 2025 18:13:36 +0200 Subject: [PATCH 35/72] =?UTF-8?q?Maybe=20ha=20kicser=C3=A9lem=20Notra=3F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theta/frontend/models/Btor2Operation.kt | 14 +- .../resources/at.6.prop1-back-serstep.btor2 | 1508 ++++++++++++++ .../resources/at.6.prop1-func-interl.btor2 | 1359 +++++++++++++ .../resources/at.7.prop1-back-serstep.btor2 | 1796 +++++++++++++++++ .../resources/at.7.prop1-func-interl.btor2 | 1621 +++++++++++++++ 5 files changed, 6291 insertions(+), 7 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-func-interl.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-func-interl.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index bac6a1684b..d9d3470beb 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -132,8 +132,8 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor } override fun getExpr(): Expr<*> { - val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else op1.getExpr() as Expr - val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr + val op1_expr = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr + val op2_expr = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr return when(operator) { @@ -216,8 +216,8 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort } override fun getExpr(): Expr<*> { - val op1_expr = if (opd1_negated) castBv(Neg(op1.getExpr() as Expr)) else op1.getExpr() as Expr - val op2_expr = if (opd2_negated) castBv(Neg(op2.getExpr() as Expr)) else op2.getExpr() as Expr + val op1_expr = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr + val op2_expr = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr return when(operator) { Btor2ComparisonOperator.EQ -> IteExpr.of(BvEqExpr.create(op1_expr as Expr, op2_expr as Expr), @@ -288,10 +288,10 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor override fun getExpr(): Expr { //checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) - val op1Expr = if (negated1) BvNegExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) + val op1Expr = if (negated1) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) - val op2Expr = if (negated2) BvNegExpr.create(op2.getExpr() as Expr) else (op2.getExpr() as Expr ) - val op3Expr = if (negated3) BvNegExpr.create(op3.getExpr() as Expr) else (op3.getExpr() as Expr ) + val op2Expr = if (negated2) BvNotExpr.create(op2.getExpr() as Expr) else (op2.getExpr() as Expr ) + val op3Expr = if (negated3) BvNotExpr.create(op3.getExpr() as Expr) else (op3.getExpr() as Expr ) return when(operator) { diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..c7659d7c4b --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-back-serstep.btor2 @@ -0,0 +1,1508 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_x +7 init 2 6 5 +8 state 2 nextv_y +9 init 2 8 5 +10 state 2 nextv_z +11 init 2 10 5 +12 state 2 nextv_t_0 +13 init 2 12 5 +14 state 2 nextv_t_1 +15 init 2 14 5 +16 state 2 nextv_t_2 +17 init 2 16 5 +18 state 2 nextv_t_3 +19 init 2 18 5 +20 state 2 nextv_t_4 +21 init 2 20 5 +22 zero 1 +23 state 1 nexta_q +24 init 1 23 22 +25 state 1 nexta_NCS_P_0 +26 init 1 25 22 +27 state 1 nexta_p2_P_0 +28 init 1 27 22 +29 state 1 nexta_p3_P_0 +30 init 1 29 22 +31 state 1 nexta_p4_P_0 +32 init 1 31 22 +33 state 1 nexta_p5_P_0 +34 init 1 33 22 +35 state 1 nexta_p6_P_0 +36 init 1 35 22 +37 state 1 nexta_p7_P_0 +38 init 1 37 22 +39 state 1 nexta_p8_P_0 +40 init 1 39 22 +41 state 1 nexta_p9_P_0 +42 init 1 41 22 +43 state 1 nexta_CS_P_0 +44 init 1 43 22 +45 state 1 nexta_p12_P_0 +46 init 1 45 22 +47 state 1 nexta_p13_P_0 +48 init 1 47 22 +49 state 1 nexta_NCS_P_1 +50 init 1 49 22 +51 state 1 nexta_p2_P_1 +52 init 1 51 22 +53 state 1 nexta_p3_P_1 +54 init 1 53 22 +55 state 1 nexta_p4_P_1 +56 init 1 55 22 +57 state 1 nexta_p5_P_1 +58 init 1 57 22 +59 state 1 nexta_p6_P_1 +60 init 1 59 22 +61 state 1 nexta_p7_P_1 +62 init 1 61 22 +63 state 1 nexta_p8_P_1 +64 init 1 63 22 +65 state 1 nexta_p9_P_1 +66 init 1 65 22 +67 state 1 nexta_CS_P_1 +68 init 1 67 22 +69 state 1 nexta_p12_P_1 +70 init 1 69 22 +71 state 1 nexta_p13_P_1 +72 init 1 71 22 +73 state 1 nexta_NCS_P_2 +74 init 1 73 22 +75 state 1 nexta_p2_P_2 +76 init 1 75 22 +77 state 1 nexta_p3_P_2 +78 init 1 77 22 +79 state 1 nexta_p4_P_2 +80 init 1 79 22 +81 state 1 nexta_p5_P_2 +82 init 1 81 22 +83 state 1 nexta_p6_P_2 +84 init 1 83 22 +85 state 1 nexta_p7_P_2 +86 init 1 85 22 +87 state 1 nexta_p8_P_2 +88 init 1 87 22 +89 state 1 nexta_p9_P_2 +90 init 1 89 22 +91 state 1 nexta_CS_P_2 +92 init 1 91 22 +93 state 1 nexta_p12_P_2 +94 init 1 93 22 +95 state 1 nexta_p13_P_2 +96 init 1 95 22 +97 state 1 nexta_NCS_P_3 +98 init 1 97 22 +99 state 1 nexta_p2_P_3 +100 init 1 99 22 +101 state 1 nexta_p3_P_3 +102 init 1 101 22 +103 state 1 nexta_p4_P_3 +104 init 1 103 22 +105 state 1 nexta_p5_P_3 +106 init 1 105 22 +107 state 1 nexta_p6_P_3 +108 init 1 107 22 +109 state 1 nexta_p7_P_3 +110 init 1 109 22 +111 state 1 nexta_p8_P_3 +112 init 1 111 22 +113 state 1 nexta_p9_P_3 +114 init 1 113 22 +115 state 1 nexta_CS_P_3 +116 init 1 115 22 +117 state 1 nexta_p12_P_3 +118 init 1 117 22 +119 state 1 nexta_p13_P_3 +120 init 1 119 22 +121 state 1 nexta_NCS_P_4 +122 init 1 121 22 +123 state 1 nexta_p2_P_4 +124 init 1 123 22 +125 state 1 nexta_p3_P_4 +126 init 1 125 22 +127 state 1 nexta_p4_P_4 +128 init 1 127 22 +129 state 1 nexta_p5_P_4 +130 init 1 129 22 +131 state 1 nexta_p6_P_4 +132 init 1 131 22 +133 state 1 nexta_p7_P_4 +134 init 1 133 22 +135 state 1 nexta_p8_P_4 +136 init 1 135 22 +137 state 1 nexta_p9_P_4 +138 init 1 137 22 +139 state 1 nexta_CS_P_4 +140 init 1 139 22 +141 state 1 nexta_p12_P_4 +142 init 1 141 22 +143 state 1 nexta_p13_P_4 +144 init 1 143 22 +145 state 1 dve_initialized +146 init 1 145 22 +147 state 1 dve_valid +148 init 1 147 22 +149 and 1 23 25 +150 and 1 149 -27 +151 and 1 150 -29 +152 and 1 151 -31 +153 and 1 152 -33 +154 and 1 153 -35 +155 and 1 154 -37 +156 and 1 155 -39 +157 and 1 156 -41 +158 and 1 157 -43 +159 and 1 158 -45 +160 and 1 159 -47 +161 and 1 160 49 +162 and 1 161 -51 +163 and 1 162 -53 +164 and 1 163 -55 +165 and 1 164 -57 +166 and 1 165 -59 +167 and 1 166 -61 +168 and 1 167 -63 +169 and 1 168 -65 +170 and 1 169 -67 +171 and 1 170 -69 +172 and 1 171 -71 +173 and 1 172 73 +174 and 1 173 -75 +175 and 1 174 -77 +176 and 1 175 -79 +177 and 1 176 -81 +178 and 1 177 -83 +179 and 1 178 -85 +180 and 1 179 -87 +181 and 1 180 -89 +182 and 1 181 -91 +183 and 1 182 -93 +184 and 1 183 -95 +185 and 1 184 97 +186 and 1 185 -99 +187 and 1 186 -101 +188 and 1 187 -103 +189 and 1 188 -105 +190 and 1 189 -107 +191 and 1 190 -109 +192 and 1 191 -111 +193 and 1 192 -113 +194 and 1 193 -115 +195 and 1 194 -117 +196 and 1 195 -119 +197 and 1 196 121 +198 and 1 197 -123 +199 and 1 198 -125 +200 and 1 199 -127 +201 and 1 200 -129 +202 and 1 201 -131 +203 and 1 202 -133 +204 and 1 203 -135 +205 and 1 204 -137 +206 and 1 205 -139 +207 and 1 206 -141 +208 and 1 207 -143 +209 constd 2 0 +210 eq 1 209 6 +211 and 1 208 210 +212 constd 2 255 +213 eq 1 212 8 +214 and 1 211 213 +215 eq 1 209 10 +216 and 1 214 215 +217 eq 1 212 12 +218 and 1 216 217 +219 eq 1 212 14 +220 and 1 218 219 +221 eq 1 212 16 +222 and 1 220 221 +223 eq 1 212 18 +224 and 1 222 223 +225 eq 1 212 20 +226 and 1 224 225 +227 and 1 147 226 +228 bad 227 +229 input 2 v_x +230 next 2 6 229 +231 input 2 v_y +232 next 2 8 231 +233 input 2 v_z +234 next 2 10 233 +235 input 2 v_t_0 +236 next 2 12 235 +237 input 2 v_t_1 +238 next 2 14 237 +239 input 2 v_t_2 +240 next 2 16 239 +241 input 2 v_t_3 +242 next 2 18 241 +243 input 2 v_t_4 +244 next 2 20 243 +245 input 1 a_q +246 next 1 23 245 +247 input 1 a_NCS_P_0 +248 next 1 25 247 +249 input 1 a_p2_P_0 +250 next 1 27 249 +251 input 1 a_p3_P_0 +252 next 1 29 251 +253 input 1 a_p4_P_0 +254 next 1 31 253 +255 input 1 a_p5_P_0 +256 next 1 33 255 +257 input 1 a_p6_P_0 +258 next 1 35 257 +259 input 1 a_p7_P_0 +260 next 1 37 259 +261 input 1 a_p8_P_0 +262 next 1 39 261 +263 input 1 a_p9_P_0 +264 next 1 41 263 +265 input 1 a_CS_P_0 +266 next 1 43 265 +267 input 1 a_p12_P_0 +268 next 1 45 267 +269 input 1 a_p13_P_0 +270 next 1 47 269 +271 input 1 a_NCS_P_1 +272 next 1 49 271 +273 input 1 a_p2_P_1 +274 next 1 51 273 +275 input 1 a_p3_P_1 +276 next 1 53 275 +277 input 1 a_p4_P_1 +278 next 1 55 277 +279 input 1 a_p5_P_1 +280 next 1 57 279 +281 input 1 a_p6_P_1 +282 next 1 59 281 +283 input 1 a_p7_P_1 +284 next 1 61 283 +285 input 1 a_p8_P_1 +286 next 1 63 285 +287 input 1 a_p9_P_1 +288 next 1 65 287 +289 input 1 a_CS_P_1 +290 next 1 67 289 +291 input 1 a_p12_P_1 +292 next 1 69 291 +293 input 1 a_p13_P_1 +294 next 1 71 293 +295 input 1 a_NCS_P_2 +296 next 1 73 295 +297 input 1 a_p2_P_2 +298 next 1 75 297 +299 input 1 a_p3_P_2 +300 next 1 77 299 +301 input 1 a_p4_P_2 +302 next 1 79 301 +303 input 1 a_p5_P_2 +304 next 1 81 303 +305 input 1 a_p6_P_2 +306 next 1 83 305 +307 input 1 a_p7_P_2 +308 next 1 85 307 +309 input 1 a_p8_P_2 +310 next 1 87 309 +311 input 1 a_p9_P_2 +312 next 1 89 311 +313 input 1 a_CS_P_2 +314 next 1 91 313 +315 input 1 a_p12_P_2 +316 next 1 93 315 +317 input 1 a_p13_P_2 +318 next 1 95 317 +319 input 1 a_NCS_P_3 +320 next 1 97 319 +321 input 1 a_p2_P_3 +322 next 1 99 321 +323 input 1 a_p3_P_3 +324 next 1 101 323 +325 input 1 a_p4_P_3 +326 next 1 103 325 +327 input 1 a_p5_P_3 +328 next 1 105 327 +329 input 1 a_p6_P_3 +330 next 1 107 329 +331 input 1 a_p7_P_3 +332 next 1 109 331 +333 input 1 a_p8_P_3 +334 next 1 111 333 +335 input 1 a_p9_P_3 +336 next 1 113 335 +337 input 1 a_CS_P_3 +338 next 1 115 337 +339 input 1 a_p12_P_3 +340 next 1 117 339 +341 input 1 a_p13_P_3 +342 next 1 119 341 +343 input 1 a_NCS_P_4 +344 next 1 121 343 +345 input 1 a_p2_P_4 +346 next 1 123 345 +347 input 1 a_p3_P_4 +348 next 1 125 347 +349 input 1 a_p4_P_4 +350 next 1 127 349 +351 input 1 a_p5_P_4 +352 next 1 129 351 +353 input 1 a_p6_P_4 +354 next 1 131 353 +355 input 1 a_p7_P_4 +356 next 1 133 355 +357 input 1 a_p8_P_4 +358 next 1 135 357 +359 input 1 a_p9_P_4 +360 next 1 137 359 +361 input 1 a_CS_P_4 +362 next 1 139 361 +363 input 1 a_p12_P_4 +364 next 1 141 363 +365 input 1 a_p13_P_4 +366 next 1 143 365 +367 const 1 1 +368 next 1 145 367 +369 input 1 f00 +370 eq 1 209 235 +371 eq 1 209 237 +372 and 1 -370 -371 +373 eq 1 209 239 +374 and 1 372 -373 +375 eq 1 209 241 +376 and 1 374 -375 +377 eq 1 209 243 +378 and 1 376 -377 +379 and 1 245 378 +380 or 1 -369 379 +381 input 1 f01 +382 or 1 247 -381 +383 and 1 380 382 +384 input 1 f02 +385 or 1 251 381 +386 eq 1 212 231 +387 and 1 385 386 +388 or 1 -384 387 +389 and 1 383 388 +390 or 1 253 384 +391 input 1 f03 +392 or 1 390 -391 +393 and 1 389 392 +394 input 1 f04 +395 or 1 255 391 +396 ite 2 381 209 229 +397 eq 1 209 396 +398 and 1 395 397 +399 or 1 -394 398 +400 and 1 393 399 +401 or 1 263 394 +402 input 1 f05 +403 or 1 401 -402 +404 and 1 400 403 +405 input 1 f06 +406 and 1 395 -394 +407 and 1 -397 406 +408 or 1 -405 407 +409 and 1 404 408 +410 input 1 f07 +411 or 1 257 405 +412 constd 2 5 +413 constd 2 3 +414 constd 3 0 +415 concat 4 414 235 +416 constd 4 1 +417 sub 4 415 416 +418 constd 4 255 +419 eq 1 212 235 +420 constd 4 0 +421 ite 4 419 416 420 +422 mul 4 418 421 +423 or 4 417 422 +424 slice 2 423 7 0 +425 ite 2 369 424 235 +426 ite 2 381 212 425 +427 ite 2 384 413 426 +428 ite 2 391 413 427 +429 ite 2 394 413 428 +430 ite 2 402 212 429 +431 ite 2 405 412 430 +432 eq 1 209 431 +433 and 1 411 432 +434 or 1 -410 433 +435 and 1 409 434 +436 input 1 f08 +437 or 1 259 410 +438 ite 2 391 209 231 +439 eq 1 209 438 +440 and 1 437 -439 +441 or 1 -436 440 +442 and 1 435 441 +443 input 1 f09 +444 and 1 437 -436 +445 and 1 439 444 +446 or 1 -443 445 +447 and 1 442 446 +448 input 1 f10 +449 or 1 261 443 +450 constd 2 1 +451 ite 2 402 450 233 +452 eq 1 209 451 +453 and 1 449 452 +454 or 1 -448 453 +455 and 1 447 454 +456 or 1 265 402 +457 or 1 456 448 +458 input 1 f11 +459 or 1 457 -458 +460 and 1 455 459 +461 input 1 f12 +462 or 1 267 458 +463 and 1 -439 462 +464 or 1 -461 463 +465 and 1 460 464 +466 input 1 f13 +467 and 1 462 -461 +468 and 1 439 467 +469 or 1 -466 468 +470 and 1 465 469 +471 or 1 269 466 +472 input 1 f14 +473 or 1 471 -472 +474 and 1 470 473 +475 input 1 f15 +476 or 1 271 -475 +477 and 1 474 476 +478 input 1 f16 +479 or 1 275 475 +480 ite 2 472 212 438 +481 eq 1 212 480 +482 and 1 479 481 +483 or 1 -478 482 +484 and 1 477 483 +485 or 1 277 478 +486 input 1 f17 +487 or 1 485 -486 +488 and 1 484 487 +489 input 1 f18 +490 or 1 279 486 +491 ite 2 475 450 396 +492 eq 1 450 491 +493 and 1 490 492 +494 or 1 -489 493 +495 and 1 488 494 +496 or 1 287 489 +497 input 1 f19 +498 or 1 496 -497 +499 and 1 495 498 +500 input 1 f20 +501 and 1 490 -489 +502 and 1 -492 501 +503 or 1 -500 502 +504 and 1 499 503 +505 input 1 f21 +506 or 1 281 500 +507 concat 4 414 237 +508 sub 4 507 416 +509 eq 1 212 237 +510 ite 4 509 416 420 +511 mul 4 418 510 +512 or 4 508 511 +513 slice 2 512 7 0 +514 ite 2 369 513 237 +515 ite 2 475 212 514 +516 ite 2 478 413 515 +517 ite 2 486 413 516 +518 ite 2 489 413 517 +519 ite 2 497 212 518 +520 ite 2 500 412 519 +521 eq 1 209 520 +522 and 1 506 521 +523 or 1 -505 522 +524 and 1 504 523 +525 input 1 f22 +526 or 1 283 505 +527 ite 2 486 450 480 +528 eq 1 450 527 +529 and 1 526 -528 +530 or 1 -525 529 +531 and 1 524 530 +532 input 1 f23 +533 and 1 526 -525 +534 and 1 528 533 +535 or 1 -532 534 +536 and 1 531 535 +537 input 1 f24 +538 or 1 285 532 +539 ite 2 458 209 451 +540 ite 2 497 450 539 +541 eq 1 209 540 +542 and 1 538 541 +543 or 1 -537 542 +544 and 1 536 543 +545 or 1 289 497 +546 or 1 545 537 +547 input 1 f25 +548 or 1 546 -547 +549 and 1 544 548 +550 input 1 f26 +551 or 1 291 547 +552 and 1 -528 551 +553 or 1 -550 552 +554 and 1 549 553 +555 input 1 f27 +556 and 1 551 -550 +557 and 1 528 556 +558 or 1 -555 557 +559 and 1 554 558 +560 or 1 293 555 +561 input 1 f28 +562 or 1 560 -561 +563 and 1 559 562 +564 input 1 f29 +565 or 1 295 -564 +566 and 1 563 565 +567 input 1 f30 +568 or 1 299 564 +569 ite 2 561 212 527 +570 eq 1 212 569 +571 and 1 568 570 +572 or 1 -567 571 +573 and 1 566 572 +574 or 1 301 567 +575 input 1 f31 +576 or 1 574 -575 +577 and 1 573 576 +578 input 1 f32 +579 or 1 303 575 +580 constd 2 2 +581 ite 2 564 580 491 +582 eq 1 580 581 +583 and 1 579 582 +584 or 1 -578 583 +585 and 1 577 584 +586 or 1 311 578 +587 input 1 f33 +588 or 1 586 -587 +589 and 1 585 588 +590 input 1 f34 +591 and 1 579 -578 +592 and 1 -582 591 +593 or 1 -590 592 +594 and 1 589 593 +595 input 1 f35 +596 or 1 305 590 +597 concat 4 414 239 +598 sub 4 597 416 +599 eq 1 212 239 +600 ite 4 599 416 420 +601 mul 4 418 600 +602 or 4 598 601 +603 slice 2 602 7 0 +604 ite 2 369 603 239 +605 ite 2 564 212 604 +606 ite 2 567 413 605 +607 ite 2 575 413 606 +608 ite 2 578 413 607 +609 ite 2 587 212 608 +610 ite 2 590 412 609 +611 eq 1 209 610 +612 and 1 596 611 +613 or 1 -595 612 +614 and 1 594 613 +615 input 1 f36 +616 or 1 307 595 +617 ite 2 575 580 569 +618 eq 1 580 617 +619 and 1 616 -618 +620 or 1 -615 619 +621 and 1 614 620 +622 input 1 f37 +623 and 1 616 -615 +624 and 1 618 623 +625 or 1 -622 624 +626 and 1 621 625 +627 input 1 f38 +628 or 1 309 622 +629 ite 2 547 209 540 +630 ite 2 587 450 629 +631 eq 1 209 630 +632 and 1 628 631 +633 or 1 -627 632 +634 and 1 626 633 +635 or 1 313 587 +636 or 1 635 627 +637 input 1 f39 +638 or 1 636 -637 +639 and 1 634 638 +640 input 1 f40 +641 or 1 315 637 +642 and 1 -618 641 +643 or 1 -640 642 +644 and 1 639 643 +645 input 1 f41 +646 and 1 641 -640 +647 and 1 618 646 +648 or 1 -645 647 +649 and 1 644 648 +650 or 1 317 645 +651 input 1 f42 +652 or 1 650 -651 +653 and 1 649 652 +654 input 1 f43 +655 or 1 319 -654 +656 and 1 653 655 +657 input 1 f44 +658 or 1 323 654 +659 ite 2 651 212 617 +660 eq 1 212 659 +661 and 1 658 660 +662 or 1 -657 661 +663 and 1 656 662 +664 or 1 325 657 +665 input 1 f45 +666 or 1 664 -665 +667 and 1 663 666 +668 input 1 f46 +669 or 1 327 665 +670 ite 2 654 413 581 +671 eq 1 413 670 +672 and 1 669 671 +673 or 1 -668 672 +674 and 1 667 673 +675 or 1 335 668 +676 input 1 f47 +677 or 1 675 -676 +678 and 1 674 677 +679 input 1 f48 +680 and 1 669 -668 +681 and 1 -671 680 +682 or 1 -679 681 +683 and 1 678 682 +684 input 1 f49 +685 or 1 329 679 +686 concat 4 414 241 +687 sub 4 686 416 +688 eq 1 212 241 +689 ite 4 688 416 420 +690 mul 4 418 689 +691 or 4 687 690 +692 slice 2 691 7 0 +693 ite 2 369 692 241 +694 ite 2 654 212 693 +695 ite 2 657 413 694 +696 ite 2 665 413 695 +697 ite 2 668 413 696 +698 ite 2 676 212 697 +699 ite 2 679 412 698 +700 eq 1 209 699 +701 and 1 685 700 +702 or 1 -684 701 +703 and 1 683 702 +704 input 1 f50 +705 or 1 331 684 +706 ite 2 665 413 659 +707 eq 1 413 706 +708 and 1 705 -707 +709 or 1 -704 708 +710 and 1 703 709 +711 input 1 f51 +712 and 1 705 -704 +713 and 1 707 712 +714 or 1 -711 713 +715 and 1 710 714 +716 input 1 f52 +717 or 1 333 711 +718 ite 2 637 209 630 +719 ite 2 676 450 718 +720 eq 1 209 719 +721 and 1 717 720 +722 or 1 -716 721 +723 and 1 715 722 +724 or 1 337 676 +725 or 1 724 716 +726 input 1 f53 +727 or 1 725 -726 +728 and 1 723 727 +729 input 1 f54 +730 or 1 339 726 +731 and 1 -707 730 +732 or 1 -729 731 +733 and 1 728 732 +734 input 1 f55 +735 and 1 730 -729 +736 and 1 707 735 +737 or 1 -734 736 +738 and 1 733 737 +739 or 1 341 734 +740 input 1 f56 +741 or 1 739 -740 +742 and 1 738 741 +743 input 1 f57 +744 or 1 343 -743 +745 and 1 742 744 +746 input 1 f58 +747 or 1 347 743 +748 ite 2 740 212 706 +749 eq 1 212 748 +750 and 1 747 749 +751 or 1 -746 750 +752 and 1 745 751 +753 or 1 349 746 +754 input 1 f59 +755 or 1 753 -754 +756 and 1 752 755 +757 input 1 f60 +758 or 1 351 754 +759 constd 2 4 +760 ite 2 743 759 670 +761 eq 1 759 760 +762 and 1 758 761 +763 or 1 -757 762 +764 and 1 756 763 +765 or 1 359 757 +766 input 1 f61 +767 or 1 765 -766 +768 and 1 764 767 +769 input 1 f62 +770 and 1 758 -757 +771 and 1 -761 770 +772 or 1 -769 771 +773 and 1 768 772 +774 input 1 f63 +775 or 1 353 769 +776 concat 4 414 243 +777 sub 4 776 416 +778 eq 1 212 243 +779 ite 4 778 416 420 +780 mul 4 418 779 +781 or 4 777 780 +782 slice 2 781 7 0 +783 ite 2 369 782 243 +784 ite 2 743 212 783 +785 ite 2 746 413 784 +786 ite 2 754 413 785 +787 ite 2 757 413 786 +788 ite 2 766 212 787 +789 ite 2 769 412 788 +790 eq 1 209 789 +791 and 1 775 790 +792 or 1 -774 791 +793 and 1 773 792 +794 input 1 f64 +795 or 1 355 774 +796 ite 2 754 759 748 +797 eq 1 759 796 +798 and 1 795 -797 +799 or 1 -794 798 +800 and 1 793 799 +801 input 1 f65 +802 and 1 795 -794 +803 and 1 797 802 +804 or 1 -801 803 +805 and 1 800 804 +806 input 1 f66 +807 or 1 357 801 +808 ite 2 726 209 719 +809 ite 2 766 450 808 +810 eq 1 209 809 +811 and 1 807 810 +812 or 1 -806 811 +813 and 1 805 812 +814 or 1 361 766 +815 or 1 814 806 +816 input 1 f67 +817 or 1 815 -816 +818 and 1 813 817 +819 input 1 f68 +820 or 1 363 816 +821 and 1 -797 820 +822 or 1 -819 821 +823 and 1 818 822 +824 input 1 f69 +825 and 1 820 -819 +826 and 1 797 825 +827 or 1 -824 826 +828 and 1 823 827 +829 or 1 365 824 +830 input 1 f70 +831 or 1 829 -830 +832 and 1 828 831 +833 or 1 369 381 +834 or 1 384 833 +835 or 1 391 834 +836 or 1 394 835 +837 or 1 402 836 +838 or 1 405 837 +839 or 1 410 838 +840 or 1 436 839 +841 or 1 443 840 +842 or 1 448 841 +843 or 1 458 842 +844 or 1 461 843 +845 or 1 466 844 +846 or 1 472 845 +847 or 1 475 846 +848 or 1 478 847 +849 or 1 486 848 +850 or 1 489 849 +851 or 1 497 850 +852 or 1 500 851 +853 or 1 505 852 +854 or 1 525 853 +855 or 1 532 854 +856 or 1 537 855 +857 or 1 547 856 +858 or 1 550 857 +859 or 1 555 858 +860 or 1 561 859 +861 or 1 564 860 +862 or 1 567 861 +863 or 1 575 862 +864 or 1 578 863 +865 or 1 587 864 +866 or 1 590 865 +867 or 1 595 866 +868 or 1 615 867 +869 or 1 622 868 +870 or 1 627 869 +871 or 1 637 870 +872 or 1 640 871 +873 or 1 645 872 +874 or 1 651 873 +875 or 1 654 874 +876 or 1 657 875 +877 or 1 665 876 +878 or 1 668 877 +879 or 1 676 878 +880 or 1 679 879 +881 or 1 684 880 +882 or 1 704 881 +883 or 1 711 882 +884 or 1 716 883 +885 or 1 726 884 +886 or 1 729 885 +887 or 1 734 886 +888 or 1 740 887 +889 or 1 743 888 +890 or 1 746 889 +891 or 1 754 890 +892 or 1 757 891 +893 or 1 766 892 +894 or 1 769 893 +895 or 1 774 894 +896 or 1 794 895 +897 or 1 801 896 +898 or 1 806 897 +899 or 1 816 898 +900 or 1 819 899 +901 or 1 824 900 +902 or 1 830 901 +903 and 1 832 902 +904 and 1 247 249 +905 or 1 247 249 +906 and 1 251 905 +907 or 1 904 906 +908 or 1 251 905 +909 and 1 253 908 +910 or 1 907 909 +911 or 1 253 908 +912 and 1 255 911 +913 or 1 910 912 +914 or 1 255 911 +915 and 1 257 914 +916 or 1 913 915 +917 or 1 257 914 +918 and 1 259 917 +919 or 1 916 918 +920 or 1 259 917 +921 and 1 261 920 +922 or 1 919 921 +923 or 1 261 920 +924 and 1 263 923 +925 or 1 922 924 +926 or 1 263 923 +927 and 1 265 926 +928 or 1 925 927 +929 or 1 265 926 +930 and 1 267 929 +931 or 1 928 930 +932 or 1 267 929 +933 and 1 269 932 +934 or 1 931 933 +935 and 1 245 -934 +936 or 1 269 932 +937 and 1 935 936 +938 and 1 271 273 +939 or 1 271 273 +940 and 1 275 939 +941 or 1 938 940 +942 or 1 275 939 +943 and 1 277 942 +944 or 1 941 943 +945 or 1 277 942 +946 and 1 279 945 +947 or 1 944 946 +948 or 1 279 945 +949 and 1 281 948 +950 or 1 947 949 +951 or 1 281 948 +952 and 1 283 951 +953 or 1 950 952 +954 or 1 283 951 +955 and 1 285 954 +956 or 1 953 955 +957 or 1 285 954 +958 and 1 287 957 +959 or 1 956 958 +960 or 1 287 957 +961 and 1 289 960 +962 or 1 959 961 +963 or 1 289 960 +964 and 1 291 963 +965 or 1 962 964 +966 or 1 291 963 +967 and 1 293 966 +968 or 1 965 967 +969 and 1 937 -968 +970 or 1 293 966 +971 and 1 969 970 +972 and 1 295 297 +973 or 1 295 297 +974 and 1 299 973 +975 or 1 972 974 +976 or 1 299 973 +977 and 1 301 976 +978 or 1 975 977 +979 or 1 301 976 +980 and 1 303 979 +981 or 1 978 980 +982 or 1 303 979 +983 and 1 305 982 +984 or 1 981 983 +985 or 1 305 982 +986 and 1 307 985 +987 or 1 984 986 +988 or 1 307 985 +989 and 1 309 988 +990 or 1 987 989 +991 or 1 309 988 +992 and 1 311 991 +993 or 1 990 992 +994 or 1 311 991 +995 and 1 313 994 +996 or 1 993 995 +997 or 1 313 994 +998 and 1 315 997 +999 or 1 996 998 +1000 or 1 315 997 +1001 and 1 317 1000 +1002 or 1 999 1001 +1003 and 1 971 -1002 +1004 or 1 317 1000 +1005 and 1 1003 1004 +1006 and 1 319 321 +1007 or 1 319 321 +1008 and 1 323 1007 +1009 or 1 1006 1008 +1010 or 1 323 1007 +1011 and 1 325 1010 +1012 or 1 1009 1011 +1013 or 1 325 1010 +1014 and 1 327 1013 +1015 or 1 1012 1014 +1016 or 1 327 1013 +1017 and 1 329 1016 +1018 or 1 1015 1017 +1019 or 1 329 1016 +1020 and 1 331 1019 +1021 or 1 1018 1020 +1022 or 1 331 1019 +1023 and 1 333 1022 +1024 or 1 1021 1023 +1025 or 1 333 1022 +1026 and 1 335 1025 +1027 or 1 1024 1026 +1028 or 1 335 1025 +1029 and 1 337 1028 +1030 or 1 1027 1029 +1031 or 1 337 1028 +1032 and 1 339 1031 +1033 or 1 1030 1032 +1034 or 1 339 1031 +1035 and 1 341 1034 +1036 or 1 1033 1035 +1037 and 1 1005 -1036 +1038 or 1 341 1034 +1039 and 1 1037 1038 +1040 and 1 343 345 +1041 or 1 343 345 +1042 and 1 347 1041 +1043 or 1 1040 1042 +1044 or 1 347 1041 +1045 and 1 349 1044 +1046 or 1 1043 1045 +1047 or 1 349 1044 +1048 and 1 351 1047 +1049 or 1 1046 1048 +1050 or 1 351 1047 +1051 and 1 353 1050 +1052 or 1 1049 1051 +1053 or 1 353 1050 +1054 and 1 355 1053 +1055 or 1 1052 1054 +1056 or 1 355 1053 +1057 and 1 357 1056 +1058 or 1 1055 1057 +1059 or 1 357 1056 +1060 and 1 359 1059 +1061 or 1 1058 1060 +1062 or 1 359 1059 +1063 and 1 361 1062 +1064 or 1 1061 1063 +1065 or 1 361 1062 +1066 and 1 363 1065 +1067 or 1 1064 1066 +1068 or 1 363 1065 +1069 and 1 365 1068 +1070 or 1 1067 1069 +1071 and 1 1039 -1070 +1072 or 1 365 1068 +1073 and 1 1071 1072 +1074 and 1 903 1073 +1075 and 1 247 -381 +1076 or 1 1075 436 +1077 or 1 1076 461 +1078 or 1 1077 472 +1079 and 1 249 1078 +1080 and 1 385 -384 +1081 or 1 249 1078 +1082 and 1 1080 1081 +1083 or 1 1079 1082 +1084 and 1 390 -391 +1085 or 1 1080 1081 +1086 and 1 1084 1085 +1087 or 1 1083 1086 +1088 and 1 406 -405 +1089 or 1 1084 1085 +1090 and 1 1088 1089 +1091 or 1 1087 1090 +1092 and 1 411 -410 +1093 or 1 1088 1089 +1094 and 1 1092 1093 +1095 or 1 1091 1094 +1096 and 1 444 -443 +1097 or 1 1092 1093 +1098 and 1 1096 1097 +1099 or 1 1095 1098 +1100 and 1 449 -448 +1101 or 1 1096 1097 +1102 and 1 1100 1101 +1103 or 1 1099 1102 +1104 and 1 401 -402 +1105 or 1 1100 1101 +1106 and 1 1104 1105 +1107 or 1 1103 1106 +1108 and 1 457 -458 +1109 or 1 1104 1105 +1110 and 1 1108 1109 +1111 or 1 1107 1110 +1112 and 1 467 -466 +1113 or 1 1108 1109 +1114 and 1 1112 1113 +1115 or 1 1111 1114 +1116 and 1 471 -472 +1117 or 1 1112 1113 +1118 and 1 1116 1117 +1119 or 1 1115 1118 +1120 and 1 245 -1119 +1121 or 1 1116 1117 +1122 and 1 1120 1121 +1123 and 1 271 -475 +1124 or 1 1123 525 +1125 or 1 1124 550 +1126 or 1 1125 561 +1127 and 1 273 1126 +1128 and 1 479 -478 +1129 or 1 273 1126 +1130 and 1 1128 1129 +1131 or 1 1127 1130 +1132 and 1 485 -486 +1133 or 1 1128 1129 +1134 and 1 1132 1133 +1135 or 1 1131 1134 +1136 and 1 501 -500 +1137 or 1 1132 1133 +1138 and 1 1136 1137 +1139 or 1 1135 1138 +1140 and 1 506 -505 +1141 or 1 1136 1137 +1142 and 1 1140 1141 +1143 or 1 1139 1142 +1144 and 1 533 -532 +1145 or 1 1140 1141 +1146 and 1 1144 1145 +1147 or 1 1143 1146 +1148 and 1 538 -537 +1149 or 1 1144 1145 +1150 and 1 1148 1149 +1151 or 1 1147 1150 +1152 and 1 496 -497 +1153 or 1 1148 1149 +1154 and 1 1152 1153 +1155 or 1 1151 1154 +1156 and 1 546 -547 +1157 or 1 1152 1153 +1158 and 1 1156 1157 +1159 or 1 1155 1158 +1160 and 1 556 -555 +1161 or 1 1156 1157 +1162 and 1 1160 1161 +1163 or 1 1159 1162 +1164 and 1 560 -561 +1165 or 1 1160 1161 +1166 and 1 1164 1165 +1167 or 1 1163 1166 +1168 and 1 1122 -1167 +1169 or 1 1164 1165 +1170 and 1 1168 1169 +1171 and 1 295 -564 +1172 or 1 1171 615 +1173 or 1 1172 640 +1174 or 1 1173 651 +1175 and 1 297 1174 +1176 and 1 568 -567 +1177 or 1 297 1174 +1178 and 1 1176 1177 +1179 or 1 1175 1178 +1180 and 1 574 -575 +1181 or 1 1176 1177 +1182 and 1 1180 1181 +1183 or 1 1179 1182 +1184 and 1 591 -590 +1185 or 1 1180 1181 +1186 and 1 1184 1185 +1187 or 1 1183 1186 +1188 and 1 596 -595 +1189 or 1 1184 1185 +1190 and 1 1188 1189 +1191 or 1 1187 1190 +1192 and 1 623 -622 +1193 or 1 1188 1189 +1194 and 1 1192 1193 +1195 or 1 1191 1194 +1196 and 1 628 -627 +1197 or 1 1192 1193 +1198 and 1 1196 1197 +1199 or 1 1195 1198 +1200 and 1 586 -587 +1201 or 1 1196 1197 +1202 and 1 1200 1201 +1203 or 1 1199 1202 +1204 and 1 636 -637 +1205 or 1 1200 1201 +1206 and 1 1204 1205 +1207 or 1 1203 1206 +1208 and 1 646 -645 +1209 or 1 1204 1205 +1210 and 1 1208 1209 +1211 or 1 1207 1210 +1212 and 1 650 -651 +1213 or 1 1208 1209 +1214 and 1 1212 1213 +1215 or 1 1211 1214 +1216 and 1 1170 -1215 +1217 or 1 1212 1213 +1218 and 1 1216 1217 +1219 and 1 319 -654 +1220 or 1 1219 704 +1221 or 1 1220 729 +1222 or 1 1221 740 +1223 and 1 321 1222 +1224 and 1 658 -657 +1225 or 1 321 1222 +1226 and 1 1224 1225 +1227 or 1 1223 1226 +1228 and 1 664 -665 +1229 or 1 1224 1225 +1230 and 1 1228 1229 +1231 or 1 1227 1230 +1232 and 1 680 -679 +1233 or 1 1228 1229 +1234 and 1 1232 1233 +1235 or 1 1231 1234 +1236 and 1 685 -684 +1237 or 1 1232 1233 +1238 and 1 1236 1237 +1239 or 1 1235 1238 +1240 and 1 712 -711 +1241 or 1 1236 1237 +1242 and 1 1240 1241 +1243 or 1 1239 1242 +1244 and 1 717 -716 +1245 or 1 1240 1241 +1246 and 1 1244 1245 +1247 or 1 1243 1246 +1248 and 1 675 -676 +1249 or 1 1244 1245 +1250 and 1 1248 1249 +1251 or 1 1247 1250 +1252 and 1 725 -726 +1253 or 1 1248 1249 +1254 and 1 1252 1253 +1255 or 1 1251 1254 +1256 and 1 735 -734 +1257 or 1 1252 1253 +1258 and 1 1256 1257 +1259 or 1 1255 1258 +1260 and 1 739 -740 +1261 or 1 1256 1257 +1262 and 1 1260 1261 +1263 or 1 1259 1262 +1264 and 1 1218 -1263 +1265 or 1 1260 1261 +1266 and 1 1264 1265 +1267 and 1 343 -743 +1268 or 1 1267 794 +1269 or 1 1268 819 +1270 or 1 1269 830 +1271 and 1 345 1270 +1272 and 1 747 -746 +1273 or 1 345 1270 +1274 and 1 1272 1273 +1275 or 1 1271 1274 +1276 and 1 753 -754 +1277 or 1 1272 1273 +1278 and 1 1276 1277 +1279 or 1 1275 1278 +1280 and 1 770 -769 +1281 or 1 1276 1277 +1282 and 1 1280 1281 +1283 or 1 1279 1282 +1284 and 1 775 -774 +1285 or 1 1280 1281 +1286 and 1 1284 1285 +1287 or 1 1283 1286 +1288 and 1 802 -801 +1289 or 1 1284 1285 +1290 and 1 1288 1289 +1291 or 1 1287 1290 +1292 and 1 807 -806 +1293 or 1 1288 1289 +1294 and 1 1292 1293 +1295 or 1 1291 1294 +1296 and 1 765 -766 +1297 or 1 1292 1293 +1298 and 1 1296 1297 +1299 or 1 1295 1298 +1300 and 1 815 -816 +1301 or 1 1296 1297 +1302 and 1 1300 1301 +1303 or 1 1299 1302 +1304 and 1 825 -824 +1305 or 1 1300 1301 +1306 and 1 1304 1305 +1307 or 1 1303 1306 +1308 and 1 829 -830 +1309 or 1 1304 1305 +1310 and 1 1308 1309 +1311 or 1 1307 1310 +1312 and 1 1266 -1311 +1313 or 1 1308 1309 +1314 and 1 1312 1313 +1315 and 1 1074 1314 +1316 eq 1 760 6 +1317 and 1 1315 1316 +1318 ite 2 830 212 796 +1319 eq 1 1318 8 +1320 and 1 1317 1319 +1321 ite 2 816 209 809 +1322 eq 1 1321 10 +1323 and 1 1320 1322 +1324 ite 2 410 413 431 +1325 ite 2 436 413 1324 +1326 ite 2 443 212 1325 +1327 ite 2 458 413 1326 +1328 ite 2 461 212 1327 +1329 ite 2 466 413 1328 +1330 ite 2 472 212 1329 +1331 eq 1 1330 12 +1332 and 1 1323 1331 +1333 ite 2 505 413 520 +1334 ite 2 525 413 1333 +1335 ite 2 532 212 1334 +1336 ite 2 547 413 1335 +1337 ite 2 550 212 1336 +1338 ite 2 555 413 1337 +1339 ite 2 561 212 1338 +1340 eq 1 1339 14 +1341 and 1 1332 1340 +1342 ite 2 595 413 610 +1343 ite 2 615 413 1342 +1344 ite 2 622 212 1343 +1345 ite 2 637 413 1344 +1346 ite 2 640 212 1345 +1347 ite 2 645 413 1346 +1348 ite 2 651 212 1347 +1349 eq 1 1348 16 +1350 and 1 1341 1349 +1351 ite 2 684 413 699 +1352 ite 2 704 413 1351 +1353 ite 2 711 212 1352 +1354 ite 2 726 413 1353 +1355 ite 2 729 212 1354 +1356 ite 2 734 413 1355 +1357 ite 2 740 212 1356 +1358 eq 1 1357 18 +1359 and 1 1350 1358 +1360 ite 2 774 413 789 +1361 ite 2 794 413 1360 +1362 ite 2 801 212 1361 +1363 ite 2 816 413 1362 +1364 ite 2 819 212 1363 +1365 ite 2 824 413 1364 +1366 ite 2 830 212 1365 +1367 eq 1 1366 20 +1368 and 1 1359 1367 +1369 eq 1 245 23 +1370 and 1 1368 1369 +1371 eq 1 1078 25 +1372 and 1 1370 1371 +1373 eq 1 249 27 +1374 and 1 1372 1373 +1375 eq 1 1080 29 +1376 and 1 1374 1375 +1377 eq 1 1084 31 +1378 and 1 1376 1377 +1379 eq 1 1088 33 +1380 and 1 1378 1379 +1381 eq 1 1092 35 +1382 and 1 1380 1381 +1383 eq 1 1096 37 +1384 and 1 1382 1383 +1385 eq 1 1100 39 +1386 and 1 1384 1385 +1387 eq 1 1104 41 +1388 and 1 1386 1387 +1389 eq 1 1108 43 +1390 and 1 1388 1389 +1391 eq 1 1112 45 +1392 and 1 1390 1391 +1393 eq 1 1116 47 +1394 and 1 1392 1393 +1395 eq 1 1126 49 +1396 and 1 1394 1395 +1397 eq 1 273 51 +1398 and 1 1396 1397 +1399 eq 1 1128 53 +1400 and 1 1398 1399 +1401 eq 1 1132 55 +1402 and 1 1400 1401 +1403 eq 1 1136 57 +1404 and 1 1402 1403 +1405 eq 1 1140 59 +1406 and 1 1404 1405 +1407 eq 1 1144 61 +1408 and 1 1406 1407 +1409 eq 1 1148 63 +1410 and 1 1408 1409 +1411 eq 1 1152 65 +1412 and 1 1410 1411 +1413 eq 1 1156 67 +1414 and 1 1412 1413 +1415 eq 1 1160 69 +1416 and 1 1414 1415 +1417 eq 1 1164 71 +1418 and 1 1416 1417 +1419 eq 1 1174 73 +1420 and 1 1418 1419 +1421 eq 1 297 75 +1422 and 1 1420 1421 +1423 eq 1 1176 77 +1424 and 1 1422 1423 +1425 eq 1 1180 79 +1426 and 1 1424 1425 +1427 eq 1 1184 81 +1428 and 1 1426 1427 +1429 eq 1 1188 83 +1430 and 1 1428 1429 +1431 eq 1 1192 85 +1432 and 1 1430 1431 +1433 eq 1 1196 87 +1434 and 1 1432 1433 +1435 eq 1 1200 89 +1436 and 1 1434 1435 +1437 eq 1 1204 91 +1438 and 1 1436 1437 +1439 eq 1 1208 93 +1440 and 1 1438 1439 +1441 eq 1 1212 95 +1442 and 1 1440 1441 +1443 eq 1 1222 97 +1444 and 1 1442 1443 +1445 eq 1 321 99 +1446 and 1 1444 1445 +1447 eq 1 1224 101 +1448 and 1 1446 1447 +1449 eq 1 1228 103 +1450 and 1 1448 1449 +1451 eq 1 1232 105 +1452 and 1 1450 1451 +1453 eq 1 1236 107 +1454 and 1 1452 1453 +1455 eq 1 1240 109 +1456 and 1 1454 1455 +1457 eq 1 1244 111 +1458 and 1 1456 1457 +1459 eq 1 1248 113 +1460 and 1 1458 1459 +1461 eq 1 1252 115 +1462 and 1 1460 1461 +1463 eq 1 1256 117 +1464 and 1 1462 1463 +1465 eq 1 1260 119 +1466 and 1 1464 1465 +1467 eq 1 1270 121 +1468 and 1 1466 1467 +1469 eq 1 345 123 +1470 and 1 1468 1469 +1471 eq 1 1272 125 +1472 and 1 1470 1471 +1473 eq 1 1276 127 +1474 and 1 1472 1473 +1475 eq 1 1280 129 +1476 and 1 1474 1475 +1477 eq 1 1284 131 +1478 and 1 1476 1477 +1479 eq 1 1288 133 +1480 and 1 1478 1479 +1481 eq 1 1292 135 +1482 and 1 1480 1481 +1483 eq 1 1296 137 +1484 and 1 1482 1483 +1485 eq 1 1300 139 +1486 and 1 1484 1485 +1487 eq 1 1304 141 +1488 and 1 1486 1487 +1489 eq 1 1308 143 +1490 and 1 1488 1489 +1491 and 1 1490 147 +1492 ite 4 265 416 420 +1493 ite 4 289 416 420 +1494 add 4 1492 1493 +1495 ite 4 313 416 420 +1496 add 4 1494 1495 +1497 ite 4 337 416 420 +1498 add 4 1496 1497 +1499 ite 4 361 416 420 +1500 add 4 1498 1499 +1501 ulte 1 1500 416 +1502 ite 1 145 1491 -1501 +1503 next 1 147 1502 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-func-interl.btor2 new file mode 100644 index 0000000000..2fc0596e02 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-func-interl.btor2 @@ -0,0 +1,1359 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_x +7 init 2 6 5 +8 state 2 v_y +9 init 2 8 5 +10 state 2 v_z +11 init 2 10 5 +12 state 2 v_t_0 +13 init 2 12 5 +14 state 2 v_t_1 +15 init 2 14 5 +16 state 2 v_t_2 +17 init 2 16 5 +18 state 2 v_t_3 +19 init 2 18 5 +20 state 2 v_t_4 +21 init 2 20 5 +22 zero 1 +23 state 1 a_q +24 init 1 23 22 +25 state 1 a_NCS_P_0 +26 init 1 25 22 +27 state 1 a_p2_P_0 +28 init 1 27 22 +29 state 1 a_p3_P_0 +30 init 1 29 22 +31 state 1 a_p4_P_0 +32 init 1 31 22 +33 state 1 a_p5_P_0 +34 init 1 33 22 +35 state 1 a_p6_P_0 +36 init 1 35 22 +37 state 1 a_p7_P_0 +38 init 1 37 22 +39 state 1 a_p8_P_0 +40 init 1 39 22 +41 state 1 a_p9_P_0 +42 init 1 41 22 +43 state 1 a_CS_P_0 +44 init 1 43 22 +45 state 1 a_p12_P_0 +46 init 1 45 22 +47 state 1 a_p13_P_0 +48 init 1 47 22 +49 state 1 a_NCS_P_1 +50 init 1 49 22 +51 state 1 a_p2_P_1 +52 init 1 51 22 +53 state 1 a_p3_P_1 +54 init 1 53 22 +55 state 1 a_p4_P_1 +56 init 1 55 22 +57 state 1 a_p5_P_1 +58 init 1 57 22 +59 state 1 a_p6_P_1 +60 init 1 59 22 +61 state 1 a_p7_P_1 +62 init 1 61 22 +63 state 1 a_p8_P_1 +64 init 1 63 22 +65 state 1 a_p9_P_1 +66 init 1 65 22 +67 state 1 a_CS_P_1 +68 init 1 67 22 +69 state 1 a_p12_P_1 +70 init 1 69 22 +71 state 1 a_p13_P_1 +72 init 1 71 22 +73 state 1 a_NCS_P_2 +74 init 1 73 22 +75 state 1 a_p2_P_2 +76 init 1 75 22 +77 state 1 a_p3_P_2 +78 init 1 77 22 +79 state 1 a_p4_P_2 +80 init 1 79 22 +81 state 1 a_p5_P_2 +82 init 1 81 22 +83 state 1 a_p6_P_2 +84 init 1 83 22 +85 state 1 a_p7_P_2 +86 init 1 85 22 +87 state 1 a_p8_P_2 +88 init 1 87 22 +89 state 1 a_p9_P_2 +90 init 1 89 22 +91 state 1 a_CS_P_2 +92 init 1 91 22 +93 state 1 a_p12_P_2 +94 init 1 93 22 +95 state 1 a_p13_P_2 +96 init 1 95 22 +97 state 1 a_NCS_P_3 +98 init 1 97 22 +99 state 1 a_p2_P_3 +100 init 1 99 22 +101 state 1 a_p3_P_3 +102 init 1 101 22 +103 state 1 a_p4_P_3 +104 init 1 103 22 +105 state 1 a_p5_P_3 +106 init 1 105 22 +107 state 1 a_p6_P_3 +108 init 1 107 22 +109 state 1 a_p7_P_3 +110 init 1 109 22 +111 state 1 a_p8_P_3 +112 init 1 111 22 +113 state 1 a_p9_P_3 +114 init 1 113 22 +115 state 1 a_CS_P_3 +116 init 1 115 22 +117 state 1 a_p12_P_3 +118 init 1 117 22 +119 state 1 a_p13_P_3 +120 init 1 119 22 +121 state 1 a_NCS_P_4 +122 init 1 121 22 +123 state 1 a_p2_P_4 +124 init 1 123 22 +125 state 1 a_p3_P_4 +126 init 1 125 22 +127 state 1 a_p4_P_4 +128 init 1 127 22 +129 state 1 a_p5_P_4 +130 init 1 129 22 +131 state 1 a_p6_P_4 +132 init 1 131 22 +133 state 1 a_p7_P_4 +134 init 1 133 22 +135 state 1 a_p8_P_4 +136 init 1 135 22 +137 state 1 a_p9_P_4 +138 init 1 137 22 +139 state 1 a_CS_P_4 +140 init 1 139 22 +141 state 1 a_p12_P_4 +142 init 1 141 22 +143 state 1 a_p13_P_4 +144 init 1 143 22 +145 state 1 dve_invalid +146 init 1 145 22 +147 constd 4 1 +148 constd 4 0 +149 ite 4 43 147 148 +150 ite 4 67 147 148 +151 add 4 149 150 +152 ite 4 91 147 148 +153 add 4 151 152 +154 ite 4 115 147 148 +155 add 4 153 154 +156 ite 4 139 147 148 +157 add 4 155 156 +158 ulte 1 157 147 +159 and 1 -145 -158 +160 bad 159 +161 input 1 f57 +162 constd 2 4 +163 input 1 f43 +164 constd 2 3 +165 input 1 f29 +166 constd 2 2 +167 input 1 f15 +168 constd 2 1 +169 input 1 f01 +170 constd 2 0 +171 ite 2 169 170 6 +172 ite 2 167 168 171 +173 ite 2 165 166 172 +174 ite 2 163 164 173 +175 ite 2 161 162 174 +176 next 2 6 175 +177 constd 2 255 +178 input 1 f70 +179 input 1 f59 +180 input 1 f56 +181 input 1 f45 +182 input 1 f42 +183 input 1 f31 +184 input 1 f28 +185 input 1 f17 +186 input 1 f14 +187 input 1 f03 +188 xor 2 177 8 +189 ite 2 187 170 188 +190 ite 2 186 177 189 +191 ite 2 185 168 190 +192 ite 2 184 177 191 +193 ite 2 183 166 192 +194 ite 2 182 177 193 +195 ite 2 181 164 194 +196 ite 2 180 177 195 +197 ite 2 179 162 196 +198 ite 2 178 177 197 +199 xor 2 177 198 +200 next 2 8 199 +201 input 1 f67 +202 input 1 f61 +203 input 1 f53 +204 input 1 f47 +205 input 1 f39 +206 input 1 f33 +207 input 1 f25 +208 input 1 f19 +209 input 1 f11 +210 input 1 f05 +211 ite 2 210 168 10 +212 ite 2 209 170 211 +213 ite 2 208 168 212 +214 ite 2 207 170 213 +215 ite 2 206 168 214 +216 ite 2 205 170 215 +217 ite 2 204 168 216 +218 ite 2 203 170 217 +219 ite 2 202 168 218 +220 ite 2 201 170 219 +221 next 2 10 220 +222 input 1 f13 +223 input 1 f12 +224 input 1 f09 +225 input 1 f08 +226 input 1 f07 +227 input 1 f06 +228 constd 2 5 +229 input 1 f04 +230 input 1 f02 +231 input 1 f00 +232 constd 3 0 +233 xor 2 177 12 +234 concat 4 232 233 +235 sub 4 234 147 +236 constd 4 255 +237 eq 1 177 233 +238 ite 4 237 147 148 +239 mul 4 236 238 +240 or 4 235 239 +241 slice 2 240 7 0 +242 ite 2 231 241 233 +243 ite 2 169 177 242 +244 ite 2 230 164 243 +245 ite 2 187 164 244 +246 ite 2 229 164 245 +247 ite 2 210 177 246 +248 ite 2 227 228 247 +249 ite 2 226 164 248 +250 ite 2 225 164 249 +251 ite 2 224 177 250 +252 ite 2 209 164 251 +253 ite 2 223 177 252 +254 ite 2 222 164 253 +255 ite 2 186 177 254 +256 xor 2 177 255 +257 next 2 12 256 +258 input 1 f27 +259 input 1 f26 +260 input 1 f23 +261 input 1 f22 +262 input 1 f21 +263 input 1 f20 +264 input 1 f18 +265 input 1 f16 +266 xor 2 177 14 +267 concat 4 232 266 +268 sub 4 267 147 +269 eq 1 177 266 +270 ite 4 269 147 148 +271 mul 4 236 270 +272 or 4 268 271 +273 slice 2 272 7 0 +274 ite 2 231 273 266 +275 ite 2 167 177 274 +276 ite 2 265 164 275 +277 ite 2 185 164 276 +278 ite 2 264 164 277 +279 ite 2 208 177 278 +280 ite 2 263 228 279 +281 ite 2 262 164 280 +282 ite 2 261 164 281 +283 ite 2 260 177 282 +284 ite 2 207 164 283 +285 ite 2 259 177 284 +286 ite 2 258 164 285 +287 ite 2 184 177 286 +288 xor 2 177 287 +289 next 2 14 288 +290 input 1 f41 +291 input 1 f40 +292 input 1 f37 +293 input 1 f36 +294 input 1 f35 +295 input 1 f34 +296 input 1 f32 +297 input 1 f30 +298 xor 2 177 16 +299 concat 4 232 298 +300 sub 4 299 147 +301 eq 1 177 298 +302 ite 4 301 147 148 +303 mul 4 236 302 +304 or 4 300 303 +305 slice 2 304 7 0 +306 ite 2 231 305 298 +307 ite 2 165 177 306 +308 ite 2 297 164 307 +309 ite 2 183 164 308 +310 ite 2 296 164 309 +311 ite 2 206 177 310 +312 ite 2 295 228 311 +313 ite 2 294 164 312 +314 ite 2 293 164 313 +315 ite 2 292 177 314 +316 ite 2 205 164 315 +317 ite 2 291 177 316 +318 ite 2 290 164 317 +319 ite 2 182 177 318 +320 xor 2 177 319 +321 next 2 16 320 +322 input 1 f55 +323 input 1 f54 +324 input 1 f51 +325 input 1 f50 +326 input 1 f49 +327 input 1 f48 +328 input 1 f46 +329 input 1 f44 +330 xor 2 177 18 +331 concat 4 232 330 +332 sub 4 331 147 +333 eq 1 177 330 +334 ite 4 333 147 148 +335 mul 4 236 334 +336 or 4 332 335 +337 slice 2 336 7 0 +338 ite 2 231 337 330 +339 ite 2 163 177 338 +340 ite 2 329 164 339 +341 ite 2 181 164 340 +342 ite 2 328 164 341 +343 ite 2 204 177 342 +344 ite 2 327 228 343 +345 ite 2 326 164 344 +346 ite 2 325 164 345 +347 ite 2 324 177 346 +348 ite 2 203 164 347 +349 ite 2 323 177 348 +350 ite 2 322 164 349 +351 ite 2 180 177 350 +352 xor 2 177 351 +353 next 2 18 352 +354 input 1 f69 +355 input 1 f68 +356 input 1 f65 +357 input 1 f64 +358 input 1 f63 +359 input 1 f62 +360 input 1 f60 +361 input 1 f58 +362 xor 2 177 20 +363 concat 4 232 362 +364 sub 4 363 147 +365 eq 1 177 362 +366 ite 4 365 147 148 +367 mul 4 236 366 +368 or 4 364 367 +369 slice 2 368 7 0 +370 ite 2 231 369 362 +371 ite 2 161 177 370 +372 ite 2 361 164 371 +373 ite 2 179 164 372 +374 ite 2 360 164 373 +375 ite 2 202 177 374 +376 ite 2 359 228 375 +377 ite 2 358 164 376 +378 ite 2 357 164 377 +379 ite 2 356 177 378 +380 ite 2 201 164 379 +381 ite 2 355 177 380 +382 ite 2 354 164 381 +383 ite 2 178 177 382 +384 xor 2 177 383 +385 next 2 20 384 +386 next 1 23 23 +387 and 1 -25 -169 +388 or 1 387 225 +389 or 1 388 223 +390 or 1 389 186 +391 next 1 25 -390 +392 next 1 27 27 +393 or 1 29 169 +394 and 1 393 -230 +395 next 1 29 394 +396 or 1 31 230 +397 and 1 396 -187 +398 next 1 31 397 +399 or 1 33 187 +400 and 1 399 -229 +401 and 1 400 -227 +402 next 1 33 401 +403 or 1 35 227 +404 and 1 403 -226 +405 next 1 35 404 +406 or 1 37 226 +407 and 1 406 -225 +408 and 1 407 -224 +409 next 1 37 408 +410 or 1 39 224 +411 input 1 f10 +412 and 1 410 -411 +413 next 1 39 412 +414 or 1 41 229 +415 and 1 414 -210 +416 next 1 41 415 +417 or 1 43 210 +418 or 1 417 411 +419 and 1 418 -209 +420 next 1 43 419 +421 or 1 45 209 +422 and 1 421 -223 +423 and 1 422 -222 +424 next 1 45 423 +425 or 1 47 222 +426 and 1 425 -186 +427 next 1 47 426 +428 and 1 -49 -167 +429 or 1 428 261 +430 or 1 429 259 +431 or 1 430 184 +432 next 1 49 -431 +433 next 1 51 51 +434 or 1 53 167 +435 and 1 434 -265 +436 next 1 53 435 +437 or 1 55 265 +438 and 1 437 -185 +439 next 1 55 438 +440 or 1 57 185 +441 and 1 440 -264 +442 and 1 441 -263 +443 next 1 57 442 +444 or 1 59 263 +445 and 1 444 -262 +446 next 1 59 445 +447 or 1 61 262 +448 and 1 447 -261 +449 and 1 448 -260 +450 next 1 61 449 +451 or 1 63 260 +452 input 1 f24 +453 and 1 451 -452 +454 next 1 63 453 +455 or 1 65 264 +456 and 1 455 -208 +457 next 1 65 456 +458 or 1 67 208 +459 or 1 458 452 +460 and 1 459 -207 +461 next 1 67 460 +462 or 1 69 207 +463 and 1 462 -259 +464 and 1 463 -258 +465 next 1 69 464 +466 or 1 71 258 +467 and 1 466 -184 +468 next 1 71 467 +469 and 1 -73 -165 +470 or 1 469 293 +471 or 1 470 291 +472 or 1 471 182 +473 next 1 73 -472 +474 next 1 75 75 +475 or 1 77 165 +476 and 1 475 -297 +477 next 1 77 476 +478 or 1 79 297 +479 and 1 478 -183 +480 next 1 79 479 +481 or 1 81 183 +482 and 1 481 -296 +483 and 1 482 -295 +484 next 1 81 483 +485 or 1 83 295 +486 and 1 485 -294 +487 next 1 83 486 +488 or 1 85 294 +489 and 1 488 -293 +490 and 1 489 -292 +491 next 1 85 490 +492 or 1 87 292 +493 input 1 f38 +494 and 1 492 -493 +495 next 1 87 494 +496 or 1 89 296 +497 and 1 496 -206 +498 next 1 89 497 +499 or 1 91 206 +500 or 1 499 493 +501 and 1 500 -205 +502 next 1 91 501 +503 or 1 93 205 +504 and 1 503 -291 +505 and 1 504 -290 +506 next 1 93 505 +507 or 1 95 290 +508 and 1 507 -182 +509 next 1 95 508 +510 and 1 -97 -163 +511 or 1 510 325 +512 or 1 511 323 +513 or 1 512 180 +514 next 1 97 -513 +515 next 1 99 99 +516 or 1 101 163 +517 and 1 516 -329 +518 next 1 101 517 +519 or 1 103 329 +520 and 1 519 -181 +521 next 1 103 520 +522 or 1 105 181 +523 and 1 522 -328 +524 and 1 523 -327 +525 next 1 105 524 +526 or 1 107 327 +527 and 1 526 -326 +528 next 1 107 527 +529 or 1 109 326 +530 and 1 529 -325 +531 and 1 530 -324 +532 next 1 109 531 +533 or 1 111 324 +534 input 1 f52 +535 and 1 533 -534 +536 next 1 111 535 +537 or 1 113 328 +538 and 1 537 -204 +539 next 1 113 538 +540 or 1 115 204 +541 or 1 540 534 +542 and 1 541 -203 +543 next 1 115 542 +544 or 1 117 203 +545 and 1 544 -323 +546 and 1 545 -322 +547 next 1 117 546 +548 or 1 119 322 +549 and 1 548 -180 +550 next 1 119 549 +551 and 1 -121 -161 +552 or 1 551 357 +553 or 1 552 355 +554 or 1 553 178 +555 next 1 121 -554 +556 next 1 123 123 +557 or 1 125 161 +558 and 1 557 -361 +559 next 1 125 558 +560 or 1 127 361 +561 and 1 560 -179 +562 next 1 127 561 +563 or 1 129 179 +564 and 1 563 -360 +565 and 1 564 -359 +566 next 1 129 565 +567 or 1 131 359 +568 and 1 567 -358 +569 next 1 131 568 +570 or 1 133 358 +571 and 1 570 -357 +572 and 1 571 -356 +573 next 1 133 572 +574 or 1 135 356 +575 input 1 f66 +576 and 1 574 -575 +577 next 1 135 576 +578 or 1 137 360 +579 and 1 578 -202 +580 next 1 137 579 +581 or 1 139 202 +582 or 1 581 575 +583 and 1 582 -201 +584 next 1 139 583 +585 or 1 141 201 +586 and 1 585 -355 +587 and 1 586 -354 +588 next 1 141 587 +589 or 1 143 354 +590 and 1 589 -178 +591 next 1 143 590 +592 eq 1 170 233 +593 eq 1 170 266 +594 and 1 -592 -593 +595 eq 1 170 298 +596 and 1 594 -595 +597 eq 1 170 330 +598 and 1 596 -597 +599 eq 1 170 362 +600 and 1 598 -599 +601 and 1 -23 600 +602 or 1 -231 601 +603 or 1 -25 -169 +604 and 1 602 603 +605 eq 1 177 188 +606 and 1 29 605 +607 or 1 -230 606 +608 and 1 604 607 +609 or 1 31 -187 +610 and 1 608 609 +611 eq 1 170 6 +612 and 1 33 611 +613 or 1 -229 612 +614 and 1 610 613 +615 or 1 41 -210 +616 and 1 614 615 +617 and 1 33 -611 +618 or 1 -227 617 +619 and 1 616 618 +620 and 1 35 592 +621 or 1 -226 620 +622 and 1 619 621 +623 eq 1 170 188 +624 and 1 37 -623 +625 or 1 -225 624 +626 and 1 622 625 +627 and 1 37 623 +628 or 1 -224 627 +629 and 1 626 628 +630 eq 1 170 10 +631 and 1 39 630 +632 or 1 -411 631 +633 and 1 629 632 +634 or 1 43 -209 +635 and 1 633 634 +636 and 1 45 -623 +637 or 1 -223 636 +638 and 1 635 637 +639 and 1 45 623 +640 or 1 -222 639 +641 and 1 638 640 +642 or 1 47 -186 +643 and 1 641 642 +644 or 1 -49 -167 +645 and 1 643 644 +646 and 1 53 605 +647 or 1 -265 646 +648 and 1 645 647 +649 or 1 55 -185 +650 and 1 648 649 +651 eq 1 168 6 +652 and 1 57 651 +653 or 1 -264 652 +654 and 1 650 653 +655 or 1 65 -208 +656 and 1 654 655 +657 and 1 57 -651 +658 or 1 -263 657 +659 and 1 656 658 +660 and 1 59 593 +661 or 1 -262 660 +662 and 1 659 661 +663 eq 1 168 188 +664 and 1 61 -663 +665 or 1 -261 664 +666 and 1 662 665 +667 and 1 61 663 +668 or 1 -260 667 +669 and 1 666 668 +670 and 1 63 630 +671 or 1 -452 670 +672 and 1 669 671 +673 or 1 67 -207 +674 and 1 672 673 +675 and 1 69 -663 +676 or 1 -259 675 +677 and 1 674 676 +678 and 1 69 663 +679 or 1 -258 678 +680 and 1 677 679 +681 or 1 71 -184 +682 and 1 680 681 +683 or 1 -73 -165 +684 and 1 682 683 +685 and 1 77 605 +686 or 1 -297 685 +687 and 1 684 686 +688 or 1 79 -183 +689 and 1 687 688 +690 eq 1 166 6 +691 and 1 81 690 +692 or 1 -296 691 +693 and 1 689 692 +694 or 1 89 -206 +695 and 1 693 694 +696 and 1 81 -690 +697 or 1 -295 696 +698 and 1 695 697 +699 and 1 83 595 +700 or 1 -294 699 +701 and 1 698 700 +702 eq 1 166 188 +703 and 1 85 -702 +704 or 1 -293 703 +705 and 1 701 704 +706 and 1 85 702 +707 or 1 -292 706 +708 and 1 705 707 +709 and 1 87 630 +710 or 1 -493 709 +711 and 1 708 710 +712 or 1 91 -205 +713 and 1 711 712 +714 and 1 93 -702 +715 or 1 -291 714 +716 and 1 713 715 +717 and 1 93 702 +718 or 1 -290 717 +719 and 1 716 718 +720 or 1 95 -182 +721 and 1 719 720 +722 or 1 -97 -163 +723 and 1 721 722 +724 and 1 101 605 +725 or 1 -329 724 +726 and 1 723 725 +727 or 1 103 -181 +728 and 1 726 727 +729 eq 1 164 6 +730 and 1 105 729 +731 or 1 -328 730 +732 and 1 728 731 +733 or 1 113 -204 +734 and 1 732 733 +735 and 1 105 -729 +736 or 1 -327 735 +737 and 1 734 736 +738 and 1 107 597 +739 or 1 -326 738 +740 and 1 737 739 +741 eq 1 164 188 +742 and 1 109 -741 +743 or 1 -325 742 +744 and 1 740 743 +745 and 1 109 741 +746 or 1 -324 745 +747 and 1 744 746 +748 and 1 111 630 +749 or 1 -534 748 +750 and 1 747 749 +751 or 1 115 -203 +752 and 1 750 751 +753 and 1 117 -741 +754 or 1 -323 753 +755 and 1 752 754 +756 and 1 117 741 +757 or 1 -322 756 +758 and 1 755 757 +759 or 1 119 -180 +760 and 1 758 759 +761 or 1 -121 -161 +762 and 1 760 761 +763 and 1 125 605 +764 or 1 -361 763 +765 and 1 762 764 +766 or 1 127 -179 +767 and 1 765 766 +768 eq 1 162 6 +769 and 1 129 768 +770 or 1 -360 769 +771 and 1 767 770 +772 or 1 137 -202 +773 and 1 771 772 +774 and 1 129 -768 +775 or 1 -359 774 +776 and 1 773 775 +777 and 1 131 599 +778 or 1 -358 777 +779 and 1 776 778 +780 eq 1 162 188 +781 and 1 133 -780 +782 or 1 -357 781 +783 and 1 779 782 +784 and 1 133 780 +785 or 1 -356 784 +786 and 1 783 785 +787 and 1 135 630 +788 or 1 -575 787 +789 and 1 786 788 +790 or 1 139 -201 +791 and 1 789 790 +792 and 1 141 -780 +793 or 1 -355 792 +794 and 1 791 793 +795 and 1 141 780 +796 or 1 -354 795 +797 and 1 794 796 +798 or 1 143 -178 +799 and 1 797 798 +800 or 1 231 169 +801 or 1 230 800 +802 or 1 187 801 +803 or 1 229 802 +804 or 1 210 803 +805 or 1 227 804 +806 or 1 226 805 +807 or 1 225 806 +808 or 1 224 807 +809 or 1 411 808 +810 or 1 209 809 +811 or 1 223 810 +812 or 1 222 811 +813 or 1 186 812 +814 or 1 167 813 +815 or 1 265 814 +816 or 1 185 815 +817 or 1 264 816 +818 or 1 208 817 +819 or 1 263 818 +820 or 1 262 819 +821 or 1 261 820 +822 or 1 260 821 +823 or 1 452 822 +824 or 1 207 823 +825 or 1 259 824 +826 or 1 258 825 +827 or 1 184 826 +828 or 1 165 827 +829 or 1 297 828 +830 or 1 183 829 +831 or 1 296 830 +832 or 1 206 831 +833 or 1 295 832 +834 or 1 294 833 +835 or 1 293 834 +836 or 1 292 835 +837 or 1 493 836 +838 or 1 205 837 +839 or 1 291 838 +840 or 1 290 839 +841 or 1 182 840 +842 or 1 163 841 +843 or 1 329 842 +844 or 1 181 843 +845 or 1 328 844 +846 or 1 204 845 +847 or 1 327 846 +848 or 1 326 847 +849 or 1 325 848 +850 or 1 324 849 +851 or 1 534 850 +852 or 1 203 851 +853 or 1 323 852 +854 or 1 322 853 +855 or 1 180 854 +856 or 1 161 855 +857 or 1 361 856 +858 or 1 179 857 +859 or 1 360 858 +860 or 1 202 859 +861 or 1 359 860 +862 or 1 358 861 +863 or 1 357 862 +864 or 1 356 863 +865 or 1 575 864 +866 or 1 201 865 +867 or 1 355 866 +868 or 1 354 867 +869 or 1 178 868 +870 and 1 799 869 +871 and 1 231 169 +872 and 1 230 800 +873 or 1 871 872 +874 and 1 187 801 +875 or 1 873 874 +876 and 1 229 802 +877 or 1 875 876 +878 and 1 210 803 +879 or 1 877 878 +880 and 1 227 804 +881 or 1 879 880 +882 and 1 226 805 +883 or 1 881 882 +884 and 1 225 806 +885 or 1 883 884 +886 and 1 224 807 +887 or 1 885 886 +888 and 1 411 808 +889 or 1 887 888 +890 and 1 209 809 +891 or 1 889 890 +892 and 1 223 810 +893 or 1 891 892 +894 and 1 222 811 +895 or 1 893 894 +896 and 1 186 812 +897 or 1 895 896 +898 and 1 167 813 +899 or 1 897 898 +900 and 1 265 814 +901 or 1 899 900 +902 and 1 185 815 +903 or 1 901 902 +904 and 1 264 816 +905 or 1 903 904 +906 and 1 208 817 +907 or 1 905 906 +908 and 1 263 818 +909 or 1 907 908 +910 and 1 262 819 +911 or 1 909 910 +912 and 1 261 820 +913 or 1 911 912 +914 and 1 260 821 +915 or 1 913 914 +916 and 1 452 822 +917 or 1 915 916 +918 and 1 207 823 +919 or 1 917 918 +920 and 1 259 824 +921 or 1 919 920 +922 and 1 258 825 +923 or 1 921 922 +924 and 1 184 826 +925 or 1 923 924 +926 and 1 165 827 +927 or 1 925 926 +928 and 1 297 828 +929 or 1 927 928 +930 and 1 183 829 +931 or 1 929 930 +932 and 1 296 830 +933 or 1 931 932 +934 and 1 206 831 +935 or 1 933 934 +936 and 1 295 832 +937 or 1 935 936 +938 and 1 294 833 +939 or 1 937 938 +940 and 1 293 834 +941 or 1 939 940 +942 and 1 292 835 +943 or 1 941 942 +944 and 1 493 836 +945 or 1 943 944 +946 and 1 205 837 +947 or 1 945 946 +948 and 1 291 838 +949 or 1 947 948 +950 and 1 290 839 +951 or 1 949 950 +952 and 1 182 840 +953 or 1 951 952 +954 and 1 163 841 +955 or 1 953 954 +956 and 1 329 842 +957 or 1 955 956 +958 and 1 181 843 +959 or 1 957 958 +960 and 1 328 844 +961 or 1 959 960 +962 and 1 204 845 +963 or 1 961 962 +964 and 1 327 846 +965 or 1 963 964 +966 and 1 326 847 +967 or 1 965 966 +968 and 1 325 848 +969 or 1 967 968 +970 and 1 324 849 +971 or 1 969 970 +972 and 1 534 850 +973 or 1 971 972 +974 and 1 203 851 +975 or 1 973 974 +976 and 1 323 852 +977 or 1 975 976 +978 and 1 322 853 +979 or 1 977 978 +980 and 1 180 854 +981 or 1 979 980 +982 and 1 161 855 +983 or 1 981 982 +984 and 1 361 856 +985 or 1 983 984 +986 and 1 179 857 +987 or 1 985 986 +988 and 1 360 858 +989 or 1 987 988 +990 and 1 202 859 +991 or 1 989 990 +992 and 1 359 860 +993 or 1 991 992 +994 and 1 358 861 +995 or 1 993 994 +996 and 1 357 862 +997 or 1 995 996 +998 and 1 356 863 +999 or 1 997 998 +1000 and 1 575 864 +1001 or 1 999 1000 +1002 and 1 201 865 +1003 or 1 1001 1002 +1004 and 1 355 866 +1005 or 1 1003 1004 +1006 and 1 354 867 +1007 or 1 1005 1006 +1008 and 1 178 868 +1009 or 1 1007 1008 +1010 and 1 870 -1009 +1011 and 1 -25 27 +1012 or 1 -25 27 +1013 and 1 29 1012 +1014 or 1 1011 1013 +1015 or 1 29 1012 +1016 and 1 31 1015 +1017 or 1 1014 1016 +1018 or 1 31 1015 +1019 and 1 33 1018 +1020 or 1 1017 1019 +1021 or 1 33 1018 +1022 and 1 35 1021 +1023 or 1 1020 1022 +1024 or 1 35 1021 +1025 and 1 37 1024 +1026 or 1 1023 1025 +1027 or 1 37 1024 +1028 and 1 39 1027 +1029 or 1 1026 1028 +1030 or 1 39 1027 +1031 and 1 41 1030 +1032 or 1 1029 1031 +1033 or 1 41 1030 +1034 and 1 43 1033 +1035 or 1 1032 1034 +1036 or 1 43 1033 +1037 and 1 45 1036 +1038 or 1 1035 1037 +1039 or 1 45 1036 +1040 and 1 47 1039 +1041 or 1 1038 1040 +1042 and 1 -23 -1041 +1043 or 1 47 1039 +1044 and 1 1042 1043 +1045 and 1 -49 51 +1046 or 1 -49 51 +1047 and 1 53 1046 +1048 or 1 1045 1047 +1049 or 1 53 1046 +1050 and 1 55 1049 +1051 or 1 1048 1050 +1052 or 1 55 1049 +1053 and 1 57 1052 +1054 or 1 1051 1053 +1055 or 1 57 1052 +1056 and 1 59 1055 +1057 or 1 1054 1056 +1058 or 1 59 1055 +1059 and 1 61 1058 +1060 or 1 1057 1059 +1061 or 1 61 1058 +1062 and 1 63 1061 +1063 or 1 1060 1062 +1064 or 1 63 1061 +1065 and 1 65 1064 +1066 or 1 1063 1065 +1067 or 1 65 1064 +1068 and 1 67 1067 +1069 or 1 1066 1068 +1070 or 1 67 1067 +1071 and 1 69 1070 +1072 or 1 1069 1071 +1073 or 1 69 1070 +1074 and 1 71 1073 +1075 or 1 1072 1074 +1076 and 1 1044 -1075 +1077 or 1 71 1073 +1078 and 1 1076 1077 +1079 and 1 -73 75 +1080 or 1 -73 75 +1081 and 1 77 1080 +1082 or 1 1079 1081 +1083 or 1 77 1080 +1084 and 1 79 1083 +1085 or 1 1082 1084 +1086 or 1 79 1083 +1087 and 1 81 1086 +1088 or 1 1085 1087 +1089 or 1 81 1086 +1090 and 1 83 1089 +1091 or 1 1088 1090 +1092 or 1 83 1089 +1093 and 1 85 1092 +1094 or 1 1091 1093 +1095 or 1 85 1092 +1096 and 1 87 1095 +1097 or 1 1094 1096 +1098 or 1 87 1095 +1099 and 1 89 1098 +1100 or 1 1097 1099 +1101 or 1 89 1098 +1102 and 1 91 1101 +1103 or 1 1100 1102 +1104 or 1 91 1101 +1105 and 1 93 1104 +1106 or 1 1103 1105 +1107 or 1 93 1104 +1108 and 1 95 1107 +1109 or 1 1106 1108 +1110 and 1 1078 -1109 +1111 or 1 95 1107 +1112 and 1 1110 1111 +1113 and 1 -97 99 +1114 or 1 -97 99 +1115 and 1 101 1114 +1116 or 1 1113 1115 +1117 or 1 101 1114 +1118 and 1 103 1117 +1119 or 1 1116 1118 +1120 or 1 103 1117 +1121 and 1 105 1120 +1122 or 1 1119 1121 +1123 or 1 105 1120 +1124 and 1 107 1123 +1125 or 1 1122 1124 +1126 or 1 107 1123 +1127 and 1 109 1126 +1128 or 1 1125 1127 +1129 or 1 109 1126 +1130 and 1 111 1129 +1131 or 1 1128 1130 +1132 or 1 111 1129 +1133 and 1 113 1132 +1134 or 1 1131 1133 +1135 or 1 113 1132 +1136 and 1 115 1135 +1137 or 1 1134 1136 +1138 or 1 115 1135 +1139 and 1 117 1138 +1140 or 1 1137 1139 +1141 or 1 117 1138 +1142 and 1 119 1141 +1143 or 1 1140 1142 +1144 and 1 1112 -1143 +1145 or 1 119 1141 +1146 and 1 1144 1145 +1147 and 1 -121 123 +1148 or 1 -121 123 +1149 and 1 125 1148 +1150 or 1 1147 1149 +1151 or 1 125 1148 +1152 and 1 127 1151 +1153 or 1 1150 1152 +1154 or 1 127 1151 +1155 and 1 129 1154 +1156 or 1 1153 1155 +1157 or 1 129 1154 +1158 and 1 131 1157 +1159 or 1 1156 1158 +1160 or 1 131 1157 +1161 and 1 133 1160 +1162 or 1 1159 1161 +1163 or 1 133 1160 +1164 and 1 135 1163 +1165 or 1 1162 1164 +1166 or 1 135 1163 +1167 and 1 137 1166 +1168 or 1 1165 1167 +1169 or 1 137 1166 +1170 and 1 139 1169 +1171 or 1 1168 1170 +1172 or 1 139 1169 +1173 and 1 141 1172 +1174 or 1 1171 1173 +1175 or 1 141 1172 +1176 and 1 143 1175 +1177 or 1 1174 1176 +1178 and 1 1146 -1177 +1179 or 1 143 1175 +1180 and 1 1178 1179 +1181 and 1 1010 1180 +1182 and 1 27 390 +1183 or 1 27 390 +1184 and 1 394 1183 +1185 or 1 1182 1184 +1186 or 1 394 1183 +1187 and 1 397 1186 +1188 or 1 1185 1187 +1189 or 1 397 1186 +1190 and 1 401 1189 +1191 or 1 1188 1190 +1192 or 1 401 1189 +1193 and 1 404 1192 +1194 or 1 1191 1193 +1195 or 1 404 1192 +1196 and 1 408 1195 +1197 or 1 1194 1196 +1198 or 1 408 1195 +1199 and 1 412 1198 +1200 or 1 1197 1199 +1201 or 1 412 1198 +1202 and 1 415 1201 +1203 or 1 1200 1202 +1204 or 1 415 1201 +1205 and 1 419 1204 +1206 or 1 1203 1205 +1207 or 1 419 1204 +1208 and 1 423 1207 +1209 or 1 1206 1208 +1210 or 1 423 1207 +1211 and 1 426 1210 +1212 or 1 1209 1211 +1213 and 1 -23 -1212 +1214 or 1 426 1210 +1215 and 1 1213 1214 +1216 and 1 51 431 +1217 or 1 51 431 +1218 and 1 435 1217 +1219 or 1 1216 1218 +1220 or 1 435 1217 +1221 and 1 438 1220 +1222 or 1 1219 1221 +1223 or 1 438 1220 +1224 and 1 442 1223 +1225 or 1 1222 1224 +1226 or 1 442 1223 +1227 and 1 445 1226 +1228 or 1 1225 1227 +1229 or 1 445 1226 +1230 and 1 449 1229 +1231 or 1 1228 1230 +1232 or 1 449 1229 +1233 and 1 453 1232 +1234 or 1 1231 1233 +1235 or 1 453 1232 +1236 and 1 456 1235 +1237 or 1 1234 1236 +1238 or 1 456 1235 +1239 and 1 460 1238 +1240 or 1 1237 1239 +1241 or 1 460 1238 +1242 and 1 464 1241 +1243 or 1 1240 1242 +1244 or 1 464 1241 +1245 and 1 467 1244 +1246 or 1 1243 1245 +1247 and 1 1215 -1246 +1248 or 1 467 1244 +1249 and 1 1247 1248 +1250 and 1 75 472 +1251 or 1 75 472 +1252 and 1 476 1251 +1253 or 1 1250 1252 +1254 or 1 476 1251 +1255 and 1 479 1254 +1256 or 1 1253 1255 +1257 or 1 479 1254 +1258 and 1 483 1257 +1259 or 1 1256 1258 +1260 or 1 483 1257 +1261 and 1 486 1260 +1262 or 1 1259 1261 +1263 or 1 486 1260 +1264 and 1 490 1263 +1265 or 1 1262 1264 +1266 or 1 490 1263 +1267 and 1 494 1266 +1268 or 1 1265 1267 +1269 or 1 494 1266 +1270 and 1 497 1269 +1271 or 1 1268 1270 +1272 or 1 497 1269 +1273 and 1 501 1272 +1274 or 1 1271 1273 +1275 or 1 501 1272 +1276 and 1 505 1275 +1277 or 1 1274 1276 +1278 or 1 505 1275 +1279 and 1 508 1278 +1280 or 1 1277 1279 +1281 and 1 1249 -1280 +1282 or 1 508 1278 +1283 and 1 1281 1282 +1284 and 1 99 513 +1285 or 1 99 513 +1286 and 1 517 1285 +1287 or 1 1284 1286 +1288 or 1 517 1285 +1289 and 1 520 1288 +1290 or 1 1287 1289 +1291 or 1 520 1288 +1292 and 1 524 1291 +1293 or 1 1290 1292 +1294 or 1 524 1291 +1295 and 1 527 1294 +1296 or 1 1293 1295 +1297 or 1 527 1294 +1298 and 1 531 1297 +1299 or 1 1296 1298 +1300 or 1 531 1297 +1301 and 1 535 1300 +1302 or 1 1299 1301 +1303 or 1 535 1300 +1304 and 1 538 1303 +1305 or 1 1302 1304 +1306 or 1 538 1303 +1307 and 1 542 1306 +1308 or 1 1305 1307 +1309 or 1 542 1306 +1310 and 1 546 1309 +1311 or 1 1308 1310 +1312 or 1 546 1309 +1313 and 1 549 1312 +1314 or 1 1311 1313 +1315 and 1 1283 -1314 +1316 or 1 549 1312 +1317 and 1 1315 1316 +1318 and 1 123 554 +1319 or 1 123 554 +1320 and 1 558 1319 +1321 or 1 1318 1320 +1322 or 1 558 1319 +1323 and 1 561 1322 +1324 or 1 1321 1323 +1325 or 1 561 1322 +1326 and 1 565 1325 +1327 or 1 1324 1326 +1328 or 1 565 1325 +1329 and 1 568 1328 +1330 or 1 1327 1329 +1331 or 1 568 1328 +1332 and 1 572 1331 +1333 or 1 1330 1332 +1334 or 1 572 1331 +1335 and 1 576 1334 +1336 or 1 1333 1335 +1337 or 1 576 1334 +1338 and 1 579 1337 +1339 or 1 1336 1338 +1340 or 1 579 1337 +1341 and 1 583 1340 +1342 or 1 1339 1341 +1343 or 1 583 1340 +1344 and 1 587 1343 +1345 or 1 1342 1344 +1346 or 1 587 1343 +1347 and 1 590 1346 +1348 or 1 1345 1347 +1349 and 1 1317 -1348 +1350 or 1 590 1346 +1351 and 1 1349 1350 +1352 and 1 1181 1351 +1353 and 1 1352 -145 +1354 next 1 145 -1353 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..6708403da3 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-back-serstep.btor2 @@ -0,0 +1,1796 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_x +7 init 2 6 5 +8 state 2 nextv_y +9 init 2 8 5 +10 state 2 nextv_z +11 init 2 10 5 +12 state 2 nextv_t_0 +13 init 2 12 5 +14 state 2 nextv_t_1 +15 init 2 14 5 +16 state 2 nextv_t_2 +17 init 2 16 5 +18 state 2 nextv_t_3 +19 init 2 18 5 +20 state 2 nextv_t_4 +21 init 2 20 5 +22 state 2 nextv_t_5 +23 init 2 22 5 +24 zero 1 +25 state 1 nexta_q +26 init 1 25 24 +27 state 1 nexta_NCS_P_0 +28 init 1 27 24 +29 state 1 nexta_p2_P_0 +30 init 1 29 24 +31 state 1 nexta_p3_P_0 +32 init 1 31 24 +33 state 1 nexta_p4_P_0 +34 init 1 33 24 +35 state 1 nexta_p5_P_0 +36 init 1 35 24 +37 state 1 nexta_p6_P_0 +38 init 1 37 24 +39 state 1 nexta_p7_P_0 +40 init 1 39 24 +41 state 1 nexta_p8_P_0 +42 init 1 41 24 +43 state 1 nexta_p9_P_0 +44 init 1 43 24 +45 state 1 nexta_CS_P_0 +46 init 1 45 24 +47 state 1 nexta_p12_P_0 +48 init 1 47 24 +49 state 1 nexta_p13_P_0 +50 init 1 49 24 +51 state 1 nexta_NCS_P_1 +52 init 1 51 24 +53 state 1 nexta_p2_P_1 +54 init 1 53 24 +55 state 1 nexta_p3_P_1 +56 init 1 55 24 +57 state 1 nexta_p4_P_1 +58 init 1 57 24 +59 state 1 nexta_p5_P_1 +60 init 1 59 24 +61 state 1 nexta_p6_P_1 +62 init 1 61 24 +63 state 1 nexta_p7_P_1 +64 init 1 63 24 +65 state 1 nexta_p8_P_1 +66 init 1 65 24 +67 state 1 nexta_p9_P_1 +68 init 1 67 24 +69 state 1 nexta_CS_P_1 +70 init 1 69 24 +71 state 1 nexta_p12_P_1 +72 init 1 71 24 +73 state 1 nexta_p13_P_1 +74 init 1 73 24 +75 state 1 nexta_NCS_P_2 +76 init 1 75 24 +77 state 1 nexta_p2_P_2 +78 init 1 77 24 +79 state 1 nexta_p3_P_2 +80 init 1 79 24 +81 state 1 nexta_p4_P_2 +82 init 1 81 24 +83 state 1 nexta_p5_P_2 +84 init 1 83 24 +85 state 1 nexta_p6_P_2 +86 init 1 85 24 +87 state 1 nexta_p7_P_2 +88 init 1 87 24 +89 state 1 nexta_p8_P_2 +90 init 1 89 24 +91 state 1 nexta_p9_P_2 +92 init 1 91 24 +93 state 1 nexta_CS_P_2 +94 init 1 93 24 +95 state 1 nexta_p12_P_2 +96 init 1 95 24 +97 state 1 nexta_p13_P_2 +98 init 1 97 24 +99 state 1 nexta_NCS_P_3 +100 init 1 99 24 +101 state 1 nexta_p2_P_3 +102 init 1 101 24 +103 state 1 nexta_p3_P_3 +104 init 1 103 24 +105 state 1 nexta_p4_P_3 +106 init 1 105 24 +107 state 1 nexta_p5_P_3 +108 init 1 107 24 +109 state 1 nexta_p6_P_3 +110 init 1 109 24 +111 state 1 nexta_p7_P_3 +112 init 1 111 24 +113 state 1 nexta_p8_P_3 +114 init 1 113 24 +115 state 1 nexta_p9_P_3 +116 init 1 115 24 +117 state 1 nexta_CS_P_3 +118 init 1 117 24 +119 state 1 nexta_p12_P_3 +120 init 1 119 24 +121 state 1 nexta_p13_P_3 +122 init 1 121 24 +123 state 1 nexta_NCS_P_4 +124 init 1 123 24 +125 state 1 nexta_p2_P_4 +126 init 1 125 24 +127 state 1 nexta_p3_P_4 +128 init 1 127 24 +129 state 1 nexta_p4_P_4 +130 init 1 129 24 +131 state 1 nexta_p5_P_4 +132 init 1 131 24 +133 state 1 nexta_p6_P_4 +134 init 1 133 24 +135 state 1 nexta_p7_P_4 +136 init 1 135 24 +137 state 1 nexta_p8_P_4 +138 init 1 137 24 +139 state 1 nexta_p9_P_4 +140 init 1 139 24 +141 state 1 nexta_CS_P_4 +142 init 1 141 24 +143 state 1 nexta_p12_P_4 +144 init 1 143 24 +145 state 1 nexta_p13_P_4 +146 init 1 145 24 +147 state 1 nexta_NCS_P_5 +148 init 1 147 24 +149 state 1 nexta_p2_P_5 +150 init 1 149 24 +151 state 1 nexta_p3_P_5 +152 init 1 151 24 +153 state 1 nexta_p4_P_5 +154 init 1 153 24 +155 state 1 nexta_p5_P_5 +156 init 1 155 24 +157 state 1 nexta_p6_P_5 +158 init 1 157 24 +159 state 1 nexta_p7_P_5 +160 init 1 159 24 +161 state 1 nexta_p8_P_5 +162 init 1 161 24 +163 state 1 nexta_p9_P_5 +164 init 1 163 24 +165 state 1 nexta_CS_P_5 +166 init 1 165 24 +167 state 1 nexta_p12_P_5 +168 init 1 167 24 +169 state 1 nexta_p13_P_5 +170 init 1 169 24 +171 state 1 dve_initialized +172 init 1 171 24 +173 state 1 dve_valid +174 init 1 173 24 +175 and 1 25 27 +176 and 1 175 -29 +177 and 1 176 -31 +178 and 1 177 -33 +179 and 1 178 -35 +180 and 1 179 -37 +181 and 1 180 -39 +182 and 1 181 -41 +183 and 1 182 -43 +184 and 1 183 -45 +185 and 1 184 -47 +186 and 1 185 -49 +187 and 1 186 51 +188 and 1 187 -53 +189 and 1 188 -55 +190 and 1 189 -57 +191 and 1 190 -59 +192 and 1 191 -61 +193 and 1 192 -63 +194 and 1 193 -65 +195 and 1 194 -67 +196 and 1 195 -69 +197 and 1 196 -71 +198 and 1 197 -73 +199 and 1 198 75 +200 and 1 199 -77 +201 and 1 200 -79 +202 and 1 201 -81 +203 and 1 202 -83 +204 and 1 203 -85 +205 and 1 204 -87 +206 and 1 205 -89 +207 and 1 206 -91 +208 and 1 207 -93 +209 and 1 208 -95 +210 and 1 209 -97 +211 and 1 210 99 +212 and 1 211 -101 +213 and 1 212 -103 +214 and 1 213 -105 +215 and 1 214 -107 +216 and 1 215 -109 +217 and 1 216 -111 +218 and 1 217 -113 +219 and 1 218 -115 +220 and 1 219 -117 +221 and 1 220 -119 +222 and 1 221 -121 +223 and 1 222 123 +224 and 1 223 -125 +225 and 1 224 -127 +226 and 1 225 -129 +227 and 1 226 -131 +228 and 1 227 -133 +229 and 1 228 -135 +230 and 1 229 -137 +231 and 1 230 -139 +232 and 1 231 -141 +233 and 1 232 -143 +234 and 1 233 -145 +235 and 1 234 147 +236 and 1 235 -149 +237 and 1 236 -151 +238 and 1 237 -153 +239 and 1 238 -155 +240 and 1 239 -157 +241 and 1 240 -159 +242 and 1 241 -161 +243 and 1 242 -163 +244 and 1 243 -165 +245 and 1 244 -167 +246 and 1 245 -169 +247 constd 2 0 +248 eq 1 247 6 +249 and 1 246 248 +250 constd 2 255 +251 eq 1 250 8 +252 and 1 249 251 +253 eq 1 247 10 +254 and 1 252 253 +255 eq 1 250 12 +256 and 1 254 255 +257 eq 1 250 14 +258 and 1 256 257 +259 eq 1 250 16 +260 and 1 258 259 +261 eq 1 250 18 +262 and 1 260 261 +263 eq 1 250 20 +264 and 1 262 263 +265 eq 1 250 22 +266 and 1 264 265 +267 and 1 173 266 +268 bad 267 +269 input 2 v_x +270 next 2 6 269 +271 input 2 v_y +272 next 2 8 271 +273 input 2 v_z +274 next 2 10 273 +275 input 2 v_t_0 +276 next 2 12 275 +277 input 2 v_t_1 +278 next 2 14 277 +279 input 2 v_t_2 +280 next 2 16 279 +281 input 2 v_t_3 +282 next 2 18 281 +283 input 2 v_t_4 +284 next 2 20 283 +285 input 2 v_t_5 +286 next 2 22 285 +287 input 1 a_q +288 next 1 25 287 +289 input 1 a_NCS_P_0 +290 next 1 27 289 +291 input 1 a_p2_P_0 +292 next 1 29 291 +293 input 1 a_p3_P_0 +294 next 1 31 293 +295 input 1 a_p4_P_0 +296 next 1 33 295 +297 input 1 a_p5_P_0 +298 next 1 35 297 +299 input 1 a_p6_P_0 +300 next 1 37 299 +301 input 1 a_p7_P_0 +302 next 1 39 301 +303 input 1 a_p8_P_0 +304 next 1 41 303 +305 input 1 a_p9_P_0 +306 next 1 43 305 +307 input 1 a_CS_P_0 +308 next 1 45 307 +309 input 1 a_p12_P_0 +310 next 1 47 309 +311 input 1 a_p13_P_0 +312 next 1 49 311 +313 input 1 a_NCS_P_1 +314 next 1 51 313 +315 input 1 a_p2_P_1 +316 next 1 53 315 +317 input 1 a_p3_P_1 +318 next 1 55 317 +319 input 1 a_p4_P_1 +320 next 1 57 319 +321 input 1 a_p5_P_1 +322 next 1 59 321 +323 input 1 a_p6_P_1 +324 next 1 61 323 +325 input 1 a_p7_P_1 +326 next 1 63 325 +327 input 1 a_p8_P_1 +328 next 1 65 327 +329 input 1 a_p9_P_1 +330 next 1 67 329 +331 input 1 a_CS_P_1 +332 next 1 69 331 +333 input 1 a_p12_P_1 +334 next 1 71 333 +335 input 1 a_p13_P_1 +336 next 1 73 335 +337 input 1 a_NCS_P_2 +338 next 1 75 337 +339 input 1 a_p2_P_2 +340 next 1 77 339 +341 input 1 a_p3_P_2 +342 next 1 79 341 +343 input 1 a_p4_P_2 +344 next 1 81 343 +345 input 1 a_p5_P_2 +346 next 1 83 345 +347 input 1 a_p6_P_2 +348 next 1 85 347 +349 input 1 a_p7_P_2 +350 next 1 87 349 +351 input 1 a_p8_P_2 +352 next 1 89 351 +353 input 1 a_p9_P_2 +354 next 1 91 353 +355 input 1 a_CS_P_2 +356 next 1 93 355 +357 input 1 a_p12_P_2 +358 next 1 95 357 +359 input 1 a_p13_P_2 +360 next 1 97 359 +361 input 1 a_NCS_P_3 +362 next 1 99 361 +363 input 1 a_p2_P_3 +364 next 1 101 363 +365 input 1 a_p3_P_3 +366 next 1 103 365 +367 input 1 a_p4_P_3 +368 next 1 105 367 +369 input 1 a_p5_P_3 +370 next 1 107 369 +371 input 1 a_p6_P_3 +372 next 1 109 371 +373 input 1 a_p7_P_3 +374 next 1 111 373 +375 input 1 a_p8_P_3 +376 next 1 113 375 +377 input 1 a_p9_P_3 +378 next 1 115 377 +379 input 1 a_CS_P_3 +380 next 1 117 379 +381 input 1 a_p12_P_3 +382 next 1 119 381 +383 input 1 a_p13_P_3 +384 next 1 121 383 +385 input 1 a_NCS_P_4 +386 next 1 123 385 +387 input 1 a_p2_P_4 +388 next 1 125 387 +389 input 1 a_p3_P_4 +390 next 1 127 389 +391 input 1 a_p4_P_4 +392 next 1 129 391 +393 input 1 a_p5_P_4 +394 next 1 131 393 +395 input 1 a_p6_P_4 +396 next 1 133 395 +397 input 1 a_p7_P_4 +398 next 1 135 397 +399 input 1 a_p8_P_4 +400 next 1 137 399 +401 input 1 a_p9_P_4 +402 next 1 139 401 +403 input 1 a_CS_P_4 +404 next 1 141 403 +405 input 1 a_p12_P_4 +406 next 1 143 405 +407 input 1 a_p13_P_4 +408 next 1 145 407 +409 input 1 a_NCS_P_5 +410 next 1 147 409 +411 input 1 a_p2_P_5 +412 next 1 149 411 +413 input 1 a_p3_P_5 +414 next 1 151 413 +415 input 1 a_p4_P_5 +416 next 1 153 415 +417 input 1 a_p5_P_5 +418 next 1 155 417 +419 input 1 a_p6_P_5 +420 next 1 157 419 +421 input 1 a_p7_P_5 +422 next 1 159 421 +423 input 1 a_p8_P_5 +424 next 1 161 423 +425 input 1 a_p9_P_5 +426 next 1 163 425 +427 input 1 a_CS_P_5 +428 next 1 165 427 +429 input 1 a_p12_P_5 +430 next 1 167 429 +431 input 1 a_p13_P_5 +432 next 1 169 431 +433 const 1 1 +434 next 1 171 433 +435 input 1 f00 +436 eq 1 247 275 +437 eq 1 247 277 +438 and 1 -436 -437 +439 eq 1 247 279 +440 and 1 438 -439 +441 eq 1 247 281 +442 and 1 440 -441 +443 eq 1 247 283 +444 and 1 442 -443 +445 eq 1 247 285 +446 and 1 444 -445 +447 and 1 287 446 +448 or 1 -435 447 +449 input 1 f01 +450 or 1 289 -449 +451 and 1 448 450 +452 input 1 f02 +453 or 1 293 449 +454 eq 1 250 271 +455 and 1 453 454 +456 or 1 -452 455 +457 and 1 451 456 +458 or 1 295 452 +459 input 1 f03 +460 or 1 458 -459 +461 and 1 457 460 +462 input 1 f04 +463 or 1 297 459 +464 ite 2 449 247 269 +465 eq 1 247 464 +466 and 1 463 465 +467 or 1 -462 466 +468 and 1 461 467 +469 or 1 305 462 +470 input 1 f05 +471 or 1 469 -470 +472 and 1 468 471 +473 input 1 f06 +474 and 1 463 -462 +475 and 1 -465 474 +476 or 1 -473 475 +477 and 1 472 476 +478 input 1 f07 +479 or 1 299 473 +480 constd 2 5 +481 constd 2 2 +482 constd 3 0 +483 concat 4 482 275 +484 constd 4 1 +485 sub 4 483 484 +486 constd 4 255 +487 eq 1 250 275 +488 constd 4 0 +489 ite 4 487 484 488 +490 mul 4 486 489 +491 or 4 485 490 +492 slice 2 491 7 0 +493 ite 2 435 492 275 +494 ite 2 449 250 493 +495 ite 2 452 481 494 +496 ite 2 459 481 495 +497 ite 2 462 481 496 +498 ite 2 470 250 497 +499 ite 2 473 480 498 +500 eq 1 247 499 +501 and 1 479 500 +502 or 1 -478 501 +503 and 1 477 502 +504 input 1 f08 +505 or 1 301 478 +506 ite 2 459 247 271 +507 eq 1 247 506 +508 and 1 505 -507 +509 or 1 -504 508 +510 and 1 503 509 +511 input 1 f09 +512 and 1 505 -504 +513 and 1 507 512 +514 or 1 -511 513 +515 and 1 510 514 +516 input 1 f10 +517 or 1 303 511 +518 constd 2 1 +519 ite 2 470 518 273 +520 eq 1 247 519 +521 and 1 517 520 +522 or 1 -516 521 +523 and 1 515 522 +524 or 1 307 470 +525 or 1 524 516 +526 input 1 f11 +527 or 1 525 -526 +528 and 1 523 527 +529 input 1 f12 +530 or 1 309 526 +531 and 1 -507 530 +532 or 1 -529 531 +533 and 1 528 532 +534 input 1 f13 +535 and 1 530 -529 +536 and 1 507 535 +537 or 1 -534 536 +538 and 1 533 537 +539 or 1 311 534 +540 input 1 f14 +541 or 1 539 -540 +542 and 1 538 541 +543 input 1 f15 +544 or 1 313 -543 +545 and 1 542 544 +546 input 1 f16 +547 or 1 317 543 +548 ite 2 540 250 506 +549 eq 1 250 548 +550 and 1 547 549 +551 or 1 -546 550 +552 and 1 545 551 +553 or 1 319 546 +554 input 1 f17 +555 or 1 553 -554 +556 and 1 552 555 +557 input 1 f18 +558 or 1 321 554 +559 ite 2 543 518 464 +560 eq 1 518 559 +561 and 1 558 560 +562 or 1 -557 561 +563 and 1 556 562 +564 or 1 329 557 +565 input 1 f19 +566 or 1 564 -565 +567 and 1 563 566 +568 input 1 f20 +569 and 1 558 -557 +570 and 1 -560 569 +571 or 1 -568 570 +572 and 1 567 571 +573 input 1 f21 +574 or 1 323 568 +575 concat 4 482 277 +576 sub 4 575 484 +577 eq 1 250 277 +578 ite 4 577 484 488 +579 mul 4 486 578 +580 or 4 576 579 +581 slice 2 580 7 0 +582 ite 2 435 581 277 +583 ite 2 543 250 582 +584 ite 2 546 481 583 +585 ite 2 554 481 584 +586 ite 2 557 481 585 +587 ite 2 565 250 586 +588 ite 2 568 480 587 +589 eq 1 247 588 +590 and 1 574 589 +591 or 1 -573 590 +592 and 1 572 591 +593 input 1 f22 +594 or 1 325 573 +595 ite 2 554 518 548 +596 eq 1 518 595 +597 and 1 594 -596 +598 or 1 -593 597 +599 and 1 592 598 +600 input 1 f23 +601 and 1 594 -593 +602 and 1 596 601 +603 or 1 -600 602 +604 and 1 599 603 +605 input 1 f24 +606 or 1 327 600 +607 ite 2 526 247 519 +608 ite 2 565 518 607 +609 eq 1 247 608 +610 and 1 606 609 +611 or 1 -605 610 +612 and 1 604 611 +613 or 1 331 565 +614 or 1 613 605 +615 input 1 f25 +616 or 1 614 -615 +617 and 1 612 616 +618 input 1 f26 +619 or 1 333 615 +620 and 1 -596 619 +621 or 1 -618 620 +622 and 1 617 621 +623 input 1 f27 +624 and 1 619 -618 +625 and 1 596 624 +626 or 1 -623 625 +627 and 1 622 626 +628 or 1 335 623 +629 input 1 f28 +630 or 1 628 -629 +631 and 1 627 630 +632 input 1 f29 +633 or 1 337 -632 +634 and 1 631 633 +635 input 1 f30 +636 or 1 341 632 +637 ite 2 629 250 595 +638 eq 1 250 637 +639 and 1 636 638 +640 or 1 -635 639 +641 and 1 634 640 +642 or 1 343 635 +643 input 1 f31 +644 or 1 642 -643 +645 and 1 641 644 +646 input 1 f32 +647 or 1 345 643 +648 ite 2 632 481 559 +649 eq 1 481 648 +650 and 1 647 649 +651 or 1 -646 650 +652 and 1 645 651 +653 or 1 353 646 +654 input 1 f33 +655 or 1 653 -654 +656 and 1 652 655 +657 input 1 f34 +658 and 1 647 -646 +659 and 1 -649 658 +660 or 1 -657 659 +661 and 1 656 660 +662 input 1 f35 +663 or 1 347 657 +664 concat 4 482 279 +665 sub 4 664 484 +666 eq 1 250 279 +667 ite 4 666 484 488 +668 mul 4 486 667 +669 or 4 665 668 +670 slice 2 669 7 0 +671 ite 2 435 670 279 +672 ite 2 632 250 671 +673 ite 2 635 481 672 +674 ite 2 643 481 673 +675 ite 2 646 481 674 +676 ite 2 654 250 675 +677 ite 2 657 480 676 +678 eq 1 247 677 +679 and 1 663 678 +680 or 1 -662 679 +681 and 1 661 680 +682 input 1 f36 +683 or 1 349 662 +684 ite 2 643 481 637 +685 eq 1 481 684 +686 and 1 683 -685 +687 or 1 -682 686 +688 and 1 681 687 +689 input 1 f37 +690 and 1 683 -682 +691 and 1 685 690 +692 or 1 -689 691 +693 and 1 688 692 +694 input 1 f38 +695 or 1 351 689 +696 ite 2 615 247 608 +697 ite 2 654 518 696 +698 eq 1 247 697 +699 and 1 695 698 +700 or 1 -694 699 +701 and 1 693 700 +702 or 1 355 654 +703 or 1 702 694 +704 input 1 f39 +705 or 1 703 -704 +706 and 1 701 705 +707 input 1 f40 +708 or 1 357 704 +709 and 1 -685 708 +710 or 1 -707 709 +711 and 1 706 710 +712 input 1 f41 +713 and 1 708 -707 +714 and 1 685 713 +715 or 1 -712 714 +716 and 1 711 715 +717 or 1 359 712 +718 input 1 f42 +719 or 1 717 -718 +720 and 1 716 719 +721 input 1 f43 +722 or 1 361 -721 +723 and 1 720 722 +724 input 1 f44 +725 or 1 365 721 +726 ite 2 718 250 684 +727 eq 1 250 726 +728 and 1 725 727 +729 or 1 -724 728 +730 and 1 723 729 +731 or 1 367 724 +732 input 1 f45 +733 or 1 731 -732 +734 and 1 730 733 +735 input 1 f46 +736 or 1 369 732 +737 constd 2 3 +738 ite 2 721 737 648 +739 eq 1 737 738 +740 and 1 736 739 +741 or 1 -735 740 +742 and 1 734 741 +743 or 1 377 735 +744 input 1 f47 +745 or 1 743 -744 +746 and 1 742 745 +747 input 1 f48 +748 and 1 736 -735 +749 and 1 -739 748 +750 or 1 -747 749 +751 and 1 746 750 +752 input 1 f49 +753 or 1 371 747 +754 concat 4 482 281 +755 sub 4 754 484 +756 eq 1 250 281 +757 ite 4 756 484 488 +758 mul 4 486 757 +759 or 4 755 758 +760 slice 2 759 7 0 +761 ite 2 435 760 281 +762 ite 2 721 250 761 +763 ite 2 724 481 762 +764 ite 2 732 481 763 +765 ite 2 735 481 764 +766 ite 2 744 250 765 +767 ite 2 747 480 766 +768 eq 1 247 767 +769 and 1 753 768 +770 or 1 -752 769 +771 and 1 751 770 +772 input 1 f50 +773 or 1 373 752 +774 ite 2 732 737 726 +775 eq 1 737 774 +776 and 1 773 -775 +777 or 1 -772 776 +778 and 1 771 777 +779 input 1 f51 +780 and 1 773 -772 +781 and 1 775 780 +782 or 1 -779 781 +783 and 1 778 782 +784 input 1 f52 +785 or 1 375 779 +786 ite 2 704 247 697 +787 ite 2 744 518 786 +788 eq 1 247 787 +789 and 1 785 788 +790 or 1 -784 789 +791 and 1 783 790 +792 or 1 379 744 +793 or 1 792 784 +794 input 1 f53 +795 or 1 793 -794 +796 and 1 791 795 +797 input 1 f54 +798 or 1 381 794 +799 and 1 -775 798 +800 or 1 -797 799 +801 and 1 796 800 +802 input 1 f55 +803 and 1 798 -797 +804 and 1 775 803 +805 or 1 -802 804 +806 and 1 801 805 +807 or 1 383 802 +808 input 1 f56 +809 or 1 807 -808 +810 and 1 806 809 +811 input 1 f57 +812 or 1 385 -811 +813 and 1 810 812 +814 input 1 f58 +815 or 1 389 811 +816 ite 2 808 250 774 +817 eq 1 250 816 +818 and 1 815 817 +819 or 1 -814 818 +820 and 1 813 819 +821 or 1 391 814 +822 input 1 f59 +823 or 1 821 -822 +824 and 1 820 823 +825 input 1 f60 +826 or 1 393 822 +827 constd 2 4 +828 ite 2 811 827 738 +829 eq 1 827 828 +830 and 1 826 829 +831 or 1 -825 830 +832 and 1 824 831 +833 or 1 401 825 +834 input 1 f61 +835 or 1 833 -834 +836 and 1 832 835 +837 input 1 f62 +838 and 1 826 -825 +839 and 1 -829 838 +840 or 1 -837 839 +841 and 1 836 840 +842 input 1 f63 +843 or 1 395 837 +844 concat 4 482 283 +845 sub 4 844 484 +846 eq 1 250 283 +847 ite 4 846 484 488 +848 mul 4 486 847 +849 or 4 845 848 +850 slice 2 849 7 0 +851 ite 2 435 850 283 +852 ite 2 811 250 851 +853 ite 2 814 481 852 +854 ite 2 822 481 853 +855 ite 2 825 481 854 +856 ite 2 834 250 855 +857 ite 2 837 480 856 +858 eq 1 247 857 +859 and 1 843 858 +860 or 1 -842 859 +861 and 1 841 860 +862 input 1 f64 +863 or 1 397 842 +864 ite 2 822 827 816 +865 eq 1 827 864 +866 and 1 863 -865 +867 or 1 -862 866 +868 and 1 861 867 +869 input 1 f65 +870 and 1 863 -862 +871 and 1 865 870 +872 or 1 -869 871 +873 and 1 868 872 +874 input 1 f66 +875 or 1 399 869 +876 ite 2 794 247 787 +877 ite 2 834 518 876 +878 eq 1 247 877 +879 and 1 875 878 +880 or 1 -874 879 +881 and 1 873 880 +882 or 1 403 834 +883 or 1 882 874 +884 input 1 f67 +885 or 1 883 -884 +886 and 1 881 885 +887 input 1 f68 +888 or 1 405 884 +889 and 1 -865 888 +890 or 1 -887 889 +891 and 1 886 890 +892 input 1 f69 +893 and 1 888 -887 +894 and 1 865 893 +895 or 1 -892 894 +896 and 1 891 895 +897 or 1 407 892 +898 input 1 f70 +899 or 1 897 -898 +900 and 1 896 899 +901 input 1 f71 +902 or 1 409 -901 +903 and 1 900 902 +904 input 1 f72 +905 or 1 413 901 +906 ite 2 898 250 864 +907 eq 1 250 906 +908 and 1 905 907 +909 or 1 -904 908 +910 and 1 903 909 +911 or 1 415 904 +912 input 1 f73 +913 or 1 911 -912 +914 and 1 910 913 +915 input 1 f74 +916 or 1 417 912 +917 ite 2 901 480 828 +918 eq 1 480 917 +919 and 1 916 918 +920 or 1 -915 919 +921 and 1 914 920 +922 or 1 425 915 +923 input 1 f75 +924 or 1 922 -923 +925 and 1 921 924 +926 input 1 f76 +927 and 1 916 -915 +928 and 1 -918 927 +929 or 1 -926 928 +930 and 1 925 929 +931 input 1 f77 +932 or 1 419 926 +933 concat 4 482 285 +934 sub 4 933 484 +935 eq 1 250 285 +936 ite 4 935 484 488 +937 mul 4 486 936 +938 or 4 934 937 +939 slice 2 938 7 0 +940 ite 2 435 939 285 +941 ite 2 901 250 940 +942 ite 2 904 481 941 +943 ite 2 912 481 942 +944 ite 2 915 481 943 +945 ite 2 923 250 944 +946 ite 2 926 480 945 +947 eq 1 247 946 +948 and 1 932 947 +949 or 1 -931 948 +950 and 1 930 949 +951 input 1 f78 +952 or 1 421 931 +953 ite 2 912 480 906 +954 eq 1 480 953 +955 and 1 952 -954 +956 or 1 -951 955 +957 and 1 950 956 +958 input 1 f79 +959 and 1 952 -951 +960 and 1 954 959 +961 or 1 -958 960 +962 and 1 957 961 +963 input 1 f80 +964 or 1 423 958 +965 ite 2 884 247 877 +966 ite 2 923 518 965 +967 eq 1 247 966 +968 and 1 964 967 +969 or 1 -963 968 +970 and 1 962 969 +971 or 1 427 923 +972 or 1 971 963 +973 input 1 f81 +974 or 1 972 -973 +975 and 1 970 974 +976 input 1 f82 +977 or 1 429 973 +978 and 1 -954 977 +979 or 1 -976 978 +980 and 1 975 979 +981 input 1 f83 +982 and 1 977 -976 +983 and 1 954 982 +984 or 1 -981 983 +985 and 1 980 984 +986 or 1 431 981 +987 input 1 f84 +988 or 1 986 -987 +989 and 1 985 988 +990 or 1 435 449 +991 or 1 452 990 +992 or 1 459 991 +993 or 1 462 992 +994 or 1 470 993 +995 or 1 473 994 +996 or 1 478 995 +997 or 1 504 996 +998 or 1 511 997 +999 or 1 516 998 +1000 or 1 526 999 +1001 or 1 529 1000 +1002 or 1 534 1001 +1003 or 1 540 1002 +1004 or 1 543 1003 +1005 or 1 546 1004 +1006 or 1 554 1005 +1007 or 1 557 1006 +1008 or 1 565 1007 +1009 or 1 568 1008 +1010 or 1 573 1009 +1011 or 1 593 1010 +1012 or 1 600 1011 +1013 or 1 605 1012 +1014 or 1 615 1013 +1015 or 1 618 1014 +1016 or 1 623 1015 +1017 or 1 629 1016 +1018 or 1 632 1017 +1019 or 1 635 1018 +1020 or 1 643 1019 +1021 or 1 646 1020 +1022 or 1 654 1021 +1023 or 1 657 1022 +1024 or 1 662 1023 +1025 or 1 682 1024 +1026 or 1 689 1025 +1027 or 1 694 1026 +1028 or 1 704 1027 +1029 or 1 707 1028 +1030 or 1 712 1029 +1031 or 1 718 1030 +1032 or 1 721 1031 +1033 or 1 724 1032 +1034 or 1 732 1033 +1035 or 1 735 1034 +1036 or 1 744 1035 +1037 or 1 747 1036 +1038 or 1 752 1037 +1039 or 1 772 1038 +1040 or 1 779 1039 +1041 or 1 784 1040 +1042 or 1 794 1041 +1043 or 1 797 1042 +1044 or 1 802 1043 +1045 or 1 808 1044 +1046 or 1 811 1045 +1047 or 1 814 1046 +1048 or 1 822 1047 +1049 or 1 825 1048 +1050 or 1 834 1049 +1051 or 1 837 1050 +1052 or 1 842 1051 +1053 or 1 862 1052 +1054 or 1 869 1053 +1055 or 1 874 1054 +1056 or 1 884 1055 +1057 or 1 887 1056 +1058 or 1 892 1057 +1059 or 1 898 1058 +1060 or 1 901 1059 +1061 or 1 904 1060 +1062 or 1 912 1061 +1063 or 1 915 1062 +1064 or 1 923 1063 +1065 or 1 926 1064 +1066 or 1 931 1065 +1067 or 1 951 1066 +1068 or 1 958 1067 +1069 or 1 963 1068 +1070 or 1 973 1069 +1071 or 1 976 1070 +1072 or 1 981 1071 +1073 or 1 987 1072 +1074 and 1 989 1073 +1075 and 1 289 291 +1076 or 1 289 291 +1077 and 1 293 1076 +1078 or 1 1075 1077 +1079 or 1 293 1076 +1080 and 1 295 1079 +1081 or 1 1078 1080 +1082 or 1 295 1079 +1083 and 1 297 1082 +1084 or 1 1081 1083 +1085 or 1 297 1082 +1086 and 1 299 1085 +1087 or 1 1084 1086 +1088 or 1 299 1085 +1089 and 1 301 1088 +1090 or 1 1087 1089 +1091 or 1 301 1088 +1092 and 1 303 1091 +1093 or 1 1090 1092 +1094 or 1 303 1091 +1095 and 1 305 1094 +1096 or 1 1093 1095 +1097 or 1 305 1094 +1098 and 1 307 1097 +1099 or 1 1096 1098 +1100 or 1 307 1097 +1101 and 1 309 1100 +1102 or 1 1099 1101 +1103 or 1 309 1100 +1104 and 1 311 1103 +1105 or 1 1102 1104 +1106 and 1 287 -1105 +1107 or 1 311 1103 +1108 and 1 1106 1107 +1109 and 1 313 315 +1110 or 1 313 315 +1111 and 1 317 1110 +1112 or 1 1109 1111 +1113 or 1 317 1110 +1114 and 1 319 1113 +1115 or 1 1112 1114 +1116 or 1 319 1113 +1117 and 1 321 1116 +1118 or 1 1115 1117 +1119 or 1 321 1116 +1120 and 1 323 1119 +1121 or 1 1118 1120 +1122 or 1 323 1119 +1123 and 1 325 1122 +1124 or 1 1121 1123 +1125 or 1 325 1122 +1126 and 1 327 1125 +1127 or 1 1124 1126 +1128 or 1 327 1125 +1129 and 1 329 1128 +1130 or 1 1127 1129 +1131 or 1 329 1128 +1132 and 1 331 1131 +1133 or 1 1130 1132 +1134 or 1 331 1131 +1135 and 1 333 1134 +1136 or 1 1133 1135 +1137 or 1 333 1134 +1138 and 1 335 1137 +1139 or 1 1136 1138 +1140 and 1 1108 -1139 +1141 or 1 335 1137 +1142 and 1 1140 1141 +1143 and 1 337 339 +1144 or 1 337 339 +1145 and 1 341 1144 +1146 or 1 1143 1145 +1147 or 1 341 1144 +1148 and 1 343 1147 +1149 or 1 1146 1148 +1150 or 1 343 1147 +1151 and 1 345 1150 +1152 or 1 1149 1151 +1153 or 1 345 1150 +1154 and 1 347 1153 +1155 or 1 1152 1154 +1156 or 1 347 1153 +1157 and 1 349 1156 +1158 or 1 1155 1157 +1159 or 1 349 1156 +1160 and 1 351 1159 +1161 or 1 1158 1160 +1162 or 1 351 1159 +1163 and 1 353 1162 +1164 or 1 1161 1163 +1165 or 1 353 1162 +1166 and 1 355 1165 +1167 or 1 1164 1166 +1168 or 1 355 1165 +1169 and 1 357 1168 +1170 or 1 1167 1169 +1171 or 1 357 1168 +1172 and 1 359 1171 +1173 or 1 1170 1172 +1174 and 1 1142 -1173 +1175 or 1 359 1171 +1176 and 1 1174 1175 +1177 and 1 361 363 +1178 or 1 361 363 +1179 and 1 365 1178 +1180 or 1 1177 1179 +1181 or 1 365 1178 +1182 and 1 367 1181 +1183 or 1 1180 1182 +1184 or 1 367 1181 +1185 and 1 369 1184 +1186 or 1 1183 1185 +1187 or 1 369 1184 +1188 and 1 371 1187 +1189 or 1 1186 1188 +1190 or 1 371 1187 +1191 and 1 373 1190 +1192 or 1 1189 1191 +1193 or 1 373 1190 +1194 and 1 375 1193 +1195 or 1 1192 1194 +1196 or 1 375 1193 +1197 and 1 377 1196 +1198 or 1 1195 1197 +1199 or 1 377 1196 +1200 and 1 379 1199 +1201 or 1 1198 1200 +1202 or 1 379 1199 +1203 and 1 381 1202 +1204 or 1 1201 1203 +1205 or 1 381 1202 +1206 and 1 383 1205 +1207 or 1 1204 1206 +1208 and 1 1176 -1207 +1209 or 1 383 1205 +1210 and 1 1208 1209 +1211 and 1 385 387 +1212 or 1 385 387 +1213 and 1 389 1212 +1214 or 1 1211 1213 +1215 or 1 389 1212 +1216 and 1 391 1215 +1217 or 1 1214 1216 +1218 or 1 391 1215 +1219 and 1 393 1218 +1220 or 1 1217 1219 +1221 or 1 393 1218 +1222 and 1 395 1221 +1223 or 1 1220 1222 +1224 or 1 395 1221 +1225 and 1 397 1224 +1226 or 1 1223 1225 +1227 or 1 397 1224 +1228 and 1 399 1227 +1229 or 1 1226 1228 +1230 or 1 399 1227 +1231 and 1 401 1230 +1232 or 1 1229 1231 +1233 or 1 401 1230 +1234 and 1 403 1233 +1235 or 1 1232 1234 +1236 or 1 403 1233 +1237 and 1 405 1236 +1238 or 1 1235 1237 +1239 or 1 405 1236 +1240 and 1 407 1239 +1241 or 1 1238 1240 +1242 and 1 1210 -1241 +1243 or 1 407 1239 +1244 and 1 1242 1243 +1245 and 1 409 411 +1246 or 1 409 411 +1247 and 1 413 1246 +1248 or 1 1245 1247 +1249 or 1 413 1246 +1250 and 1 415 1249 +1251 or 1 1248 1250 +1252 or 1 415 1249 +1253 and 1 417 1252 +1254 or 1 1251 1253 +1255 or 1 417 1252 +1256 and 1 419 1255 +1257 or 1 1254 1256 +1258 or 1 419 1255 +1259 and 1 421 1258 +1260 or 1 1257 1259 +1261 or 1 421 1258 +1262 and 1 423 1261 +1263 or 1 1260 1262 +1264 or 1 423 1261 +1265 and 1 425 1264 +1266 or 1 1263 1265 +1267 or 1 425 1264 +1268 and 1 427 1267 +1269 or 1 1266 1268 +1270 or 1 427 1267 +1271 and 1 429 1270 +1272 or 1 1269 1271 +1273 or 1 429 1270 +1274 and 1 431 1273 +1275 or 1 1272 1274 +1276 and 1 1244 -1275 +1277 or 1 431 1273 +1278 and 1 1276 1277 +1279 and 1 1074 1278 +1280 and 1 289 -449 +1281 or 1 1280 504 +1282 or 1 1281 529 +1283 or 1 1282 540 +1284 and 1 291 1283 +1285 and 1 453 -452 +1286 or 1 291 1283 +1287 and 1 1285 1286 +1288 or 1 1284 1287 +1289 and 1 458 -459 +1290 or 1 1285 1286 +1291 and 1 1289 1290 +1292 or 1 1288 1291 +1293 and 1 474 -473 +1294 or 1 1289 1290 +1295 and 1 1293 1294 +1296 or 1 1292 1295 +1297 and 1 479 -478 +1298 or 1 1293 1294 +1299 and 1 1297 1298 +1300 or 1 1296 1299 +1301 and 1 512 -511 +1302 or 1 1297 1298 +1303 and 1 1301 1302 +1304 or 1 1300 1303 +1305 and 1 517 -516 +1306 or 1 1301 1302 +1307 and 1 1305 1306 +1308 or 1 1304 1307 +1309 and 1 469 -470 +1310 or 1 1305 1306 +1311 and 1 1309 1310 +1312 or 1 1308 1311 +1313 and 1 525 -526 +1314 or 1 1309 1310 +1315 and 1 1313 1314 +1316 or 1 1312 1315 +1317 and 1 535 -534 +1318 or 1 1313 1314 +1319 and 1 1317 1318 +1320 or 1 1316 1319 +1321 and 1 539 -540 +1322 or 1 1317 1318 +1323 and 1 1321 1322 +1324 or 1 1320 1323 +1325 and 1 287 -1324 +1326 or 1 1321 1322 +1327 and 1 1325 1326 +1328 and 1 313 -543 +1329 or 1 1328 593 +1330 or 1 1329 618 +1331 or 1 1330 629 +1332 and 1 315 1331 +1333 and 1 547 -546 +1334 or 1 315 1331 +1335 and 1 1333 1334 +1336 or 1 1332 1335 +1337 and 1 553 -554 +1338 or 1 1333 1334 +1339 and 1 1337 1338 +1340 or 1 1336 1339 +1341 and 1 569 -568 +1342 or 1 1337 1338 +1343 and 1 1341 1342 +1344 or 1 1340 1343 +1345 and 1 574 -573 +1346 or 1 1341 1342 +1347 and 1 1345 1346 +1348 or 1 1344 1347 +1349 and 1 601 -600 +1350 or 1 1345 1346 +1351 and 1 1349 1350 +1352 or 1 1348 1351 +1353 and 1 606 -605 +1354 or 1 1349 1350 +1355 and 1 1353 1354 +1356 or 1 1352 1355 +1357 and 1 564 -565 +1358 or 1 1353 1354 +1359 and 1 1357 1358 +1360 or 1 1356 1359 +1361 and 1 614 -615 +1362 or 1 1357 1358 +1363 and 1 1361 1362 +1364 or 1 1360 1363 +1365 and 1 624 -623 +1366 or 1 1361 1362 +1367 and 1 1365 1366 +1368 or 1 1364 1367 +1369 and 1 628 -629 +1370 or 1 1365 1366 +1371 and 1 1369 1370 +1372 or 1 1368 1371 +1373 and 1 1327 -1372 +1374 or 1 1369 1370 +1375 and 1 1373 1374 +1376 and 1 337 -632 +1377 or 1 1376 682 +1378 or 1 1377 707 +1379 or 1 1378 718 +1380 and 1 339 1379 +1381 and 1 636 -635 +1382 or 1 339 1379 +1383 and 1 1381 1382 +1384 or 1 1380 1383 +1385 and 1 642 -643 +1386 or 1 1381 1382 +1387 and 1 1385 1386 +1388 or 1 1384 1387 +1389 and 1 658 -657 +1390 or 1 1385 1386 +1391 and 1 1389 1390 +1392 or 1 1388 1391 +1393 and 1 663 -662 +1394 or 1 1389 1390 +1395 and 1 1393 1394 +1396 or 1 1392 1395 +1397 and 1 690 -689 +1398 or 1 1393 1394 +1399 and 1 1397 1398 +1400 or 1 1396 1399 +1401 and 1 695 -694 +1402 or 1 1397 1398 +1403 and 1 1401 1402 +1404 or 1 1400 1403 +1405 and 1 653 -654 +1406 or 1 1401 1402 +1407 and 1 1405 1406 +1408 or 1 1404 1407 +1409 and 1 703 -704 +1410 or 1 1405 1406 +1411 and 1 1409 1410 +1412 or 1 1408 1411 +1413 and 1 713 -712 +1414 or 1 1409 1410 +1415 and 1 1413 1414 +1416 or 1 1412 1415 +1417 and 1 717 -718 +1418 or 1 1413 1414 +1419 and 1 1417 1418 +1420 or 1 1416 1419 +1421 and 1 1375 -1420 +1422 or 1 1417 1418 +1423 and 1 1421 1422 +1424 and 1 361 -721 +1425 or 1 1424 772 +1426 or 1 1425 797 +1427 or 1 1426 808 +1428 and 1 363 1427 +1429 and 1 725 -724 +1430 or 1 363 1427 +1431 and 1 1429 1430 +1432 or 1 1428 1431 +1433 and 1 731 -732 +1434 or 1 1429 1430 +1435 and 1 1433 1434 +1436 or 1 1432 1435 +1437 and 1 748 -747 +1438 or 1 1433 1434 +1439 and 1 1437 1438 +1440 or 1 1436 1439 +1441 and 1 753 -752 +1442 or 1 1437 1438 +1443 and 1 1441 1442 +1444 or 1 1440 1443 +1445 and 1 780 -779 +1446 or 1 1441 1442 +1447 and 1 1445 1446 +1448 or 1 1444 1447 +1449 and 1 785 -784 +1450 or 1 1445 1446 +1451 and 1 1449 1450 +1452 or 1 1448 1451 +1453 and 1 743 -744 +1454 or 1 1449 1450 +1455 and 1 1453 1454 +1456 or 1 1452 1455 +1457 and 1 793 -794 +1458 or 1 1453 1454 +1459 and 1 1457 1458 +1460 or 1 1456 1459 +1461 and 1 803 -802 +1462 or 1 1457 1458 +1463 and 1 1461 1462 +1464 or 1 1460 1463 +1465 and 1 807 -808 +1466 or 1 1461 1462 +1467 and 1 1465 1466 +1468 or 1 1464 1467 +1469 and 1 1423 -1468 +1470 or 1 1465 1466 +1471 and 1 1469 1470 +1472 and 1 385 -811 +1473 or 1 1472 862 +1474 or 1 1473 887 +1475 or 1 1474 898 +1476 and 1 387 1475 +1477 and 1 815 -814 +1478 or 1 387 1475 +1479 and 1 1477 1478 +1480 or 1 1476 1479 +1481 and 1 821 -822 +1482 or 1 1477 1478 +1483 and 1 1481 1482 +1484 or 1 1480 1483 +1485 and 1 838 -837 +1486 or 1 1481 1482 +1487 and 1 1485 1486 +1488 or 1 1484 1487 +1489 and 1 843 -842 +1490 or 1 1485 1486 +1491 and 1 1489 1490 +1492 or 1 1488 1491 +1493 and 1 870 -869 +1494 or 1 1489 1490 +1495 and 1 1493 1494 +1496 or 1 1492 1495 +1497 and 1 875 -874 +1498 or 1 1493 1494 +1499 and 1 1497 1498 +1500 or 1 1496 1499 +1501 and 1 833 -834 +1502 or 1 1497 1498 +1503 and 1 1501 1502 +1504 or 1 1500 1503 +1505 and 1 883 -884 +1506 or 1 1501 1502 +1507 and 1 1505 1506 +1508 or 1 1504 1507 +1509 and 1 893 -892 +1510 or 1 1505 1506 +1511 and 1 1509 1510 +1512 or 1 1508 1511 +1513 and 1 897 -898 +1514 or 1 1509 1510 +1515 and 1 1513 1514 +1516 or 1 1512 1515 +1517 and 1 1471 -1516 +1518 or 1 1513 1514 +1519 and 1 1517 1518 +1520 and 1 409 -901 +1521 or 1 1520 951 +1522 or 1 1521 976 +1523 or 1 1522 987 +1524 and 1 411 1523 +1525 and 1 905 -904 +1526 or 1 411 1523 +1527 and 1 1525 1526 +1528 or 1 1524 1527 +1529 and 1 911 -912 +1530 or 1 1525 1526 +1531 and 1 1529 1530 +1532 or 1 1528 1531 +1533 and 1 927 -926 +1534 or 1 1529 1530 +1535 and 1 1533 1534 +1536 or 1 1532 1535 +1537 and 1 932 -931 +1538 or 1 1533 1534 +1539 and 1 1537 1538 +1540 or 1 1536 1539 +1541 and 1 959 -958 +1542 or 1 1537 1538 +1543 and 1 1541 1542 +1544 or 1 1540 1543 +1545 and 1 964 -963 +1546 or 1 1541 1542 +1547 and 1 1545 1546 +1548 or 1 1544 1547 +1549 and 1 922 -923 +1550 or 1 1545 1546 +1551 and 1 1549 1550 +1552 or 1 1548 1551 +1553 and 1 972 -973 +1554 or 1 1549 1550 +1555 and 1 1553 1554 +1556 or 1 1552 1555 +1557 and 1 982 -981 +1558 or 1 1553 1554 +1559 and 1 1557 1558 +1560 or 1 1556 1559 +1561 and 1 986 -987 +1562 or 1 1557 1558 +1563 and 1 1561 1562 +1564 or 1 1560 1563 +1565 and 1 1519 -1564 +1566 or 1 1561 1562 +1567 and 1 1565 1566 +1568 and 1 1279 1567 +1569 eq 1 917 6 +1570 and 1 1568 1569 +1571 ite 2 987 250 953 +1572 eq 1 1571 8 +1573 and 1 1570 1572 +1574 ite 2 973 247 966 +1575 eq 1 1574 10 +1576 and 1 1573 1575 +1577 ite 2 478 481 499 +1578 ite 2 504 481 1577 +1579 ite 2 511 250 1578 +1580 ite 2 526 481 1579 +1581 ite 2 529 250 1580 +1582 ite 2 534 481 1581 +1583 ite 2 540 250 1582 +1584 eq 1 1583 12 +1585 and 1 1576 1584 +1586 ite 2 573 481 588 +1587 ite 2 593 481 1586 +1588 ite 2 600 250 1587 +1589 ite 2 615 481 1588 +1590 ite 2 618 250 1589 +1591 ite 2 623 481 1590 +1592 ite 2 629 250 1591 +1593 eq 1 1592 14 +1594 and 1 1585 1593 +1595 ite 2 662 481 677 +1596 ite 2 682 481 1595 +1597 ite 2 689 250 1596 +1598 ite 2 704 481 1597 +1599 ite 2 707 250 1598 +1600 ite 2 712 481 1599 +1601 ite 2 718 250 1600 +1602 eq 1 1601 16 +1603 and 1 1594 1602 +1604 ite 2 752 481 767 +1605 ite 2 772 481 1604 +1606 ite 2 779 250 1605 +1607 ite 2 794 481 1606 +1608 ite 2 797 250 1607 +1609 ite 2 802 481 1608 +1610 ite 2 808 250 1609 +1611 eq 1 1610 18 +1612 and 1 1603 1611 +1613 ite 2 842 481 857 +1614 ite 2 862 481 1613 +1615 ite 2 869 250 1614 +1616 ite 2 884 481 1615 +1617 ite 2 887 250 1616 +1618 ite 2 892 481 1617 +1619 ite 2 898 250 1618 +1620 eq 1 1619 20 +1621 and 1 1612 1620 +1622 ite 2 931 481 946 +1623 ite 2 951 481 1622 +1624 ite 2 958 250 1623 +1625 ite 2 973 481 1624 +1626 ite 2 976 250 1625 +1627 ite 2 981 481 1626 +1628 ite 2 987 250 1627 +1629 eq 1 1628 22 +1630 and 1 1621 1629 +1631 eq 1 287 25 +1632 and 1 1630 1631 +1633 eq 1 1283 27 +1634 and 1 1632 1633 +1635 eq 1 291 29 +1636 and 1 1634 1635 +1637 eq 1 1285 31 +1638 and 1 1636 1637 +1639 eq 1 1289 33 +1640 and 1 1638 1639 +1641 eq 1 1293 35 +1642 and 1 1640 1641 +1643 eq 1 1297 37 +1644 and 1 1642 1643 +1645 eq 1 1301 39 +1646 and 1 1644 1645 +1647 eq 1 1305 41 +1648 and 1 1646 1647 +1649 eq 1 1309 43 +1650 and 1 1648 1649 +1651 eq 1 1313 45 +1652 and 1 1650 1651 +1653 eq 1 1317 47 +1654 and 1 1652 1653 +1655 eq 1 1321 49 +1656 and 1 1654 1655 +1657 eq 1 1331 51 +1658 and 1 1656 1657 +1659 eq 1 315 53 +1660 and 1 1658 1659 +1661 eq 1 1333 55 +1662 and 1 1660 1661 +1663 eq 1 1337 57 +1664 and 1 1662 1663 +1665 eq 1 1341 59 +1666 and 1 1664 1665 +1667 eq 1 1345 61 +1668 and 1 1666 1667 +1669 eq 1 1349 63 +1670 and 1 1668 1669 +1671 eq 1 1353 65 +1672 and 1 1670 1671 +1673 eq 1 1357 67 +1674 and 1 1672 1673 +1675 eq 1 1361 69 +1676 and 1 1674 1675 +1677 eq 1 1365 71 +1678 and 1 1676 1677 +1679 eq 1 1369 73 +1680 and 1 1678 1679 +1681 eq 1 1379 75 +1682 and 1 1680 1681 +1683 eq 1 339 77 +1684 and 1 1682 1683 +1685 eq 1 1381 79 +1686 and 1 1684 1685 +1687 eq 1 1385 81 +1688 and 1 1686 1687 +1689 eq 1 1389 83 +1690 and 1 1688 1689 +1691 eq 1 1393 85 +1692 and 1 1690 1691 +1693 eq 1 1397 87 +1694 and 1 1692 1693 +1695 eq 1 1401 89 +1696 and 1 1694 1695 +1697 eq 1 1405 91 +1698 and 1 1696 1697 +1699 eq 1 1409 93 +1700 and 1 1698 1699 +1701 eq 1 1413 95 +1702 and 1 1700 1701 +1703 eq 1 1417 97 +1704 and 1 1702 1703 +1705 eq 1 1427 99 +1706 and 1 1704 1705 +1707 eq 1 363 101 +1708 and 1 1706 1707 +1709 eq 1 1429 103 +1710 and 1 1708 1709 +1711 eq 1 1433 105 +1712 and 1 1710 1711 +1713 eq 1 1437 107 +1714 and 1 1712 1713 +1715 eq 1 1441 109 +1716 and 1 1714 1715 +1717 eq 1 1445 111 +1718 and 1 1716 1717 +1719 eq 1 1449 113 +1720 and 1 1718 1719 +1721 eq 1 1453 115 +1722 and 1 1720 1721 +1723 eq 1 1457 117 +1724 and 1 1722 1723 +1725 eq 1 1461 119 +1726 and 1 1724 1725 +1727 eq 1 1465 121 +1728 and 1 1726 1727 +1729 eq 1 1475 123 +1730 and 1 1728 1729 +1731 eq 1 387 125 +1732 and 1 1730 1731 +1733 eq 1 1477 127 +1734 and 1 1732 1733 +1735 eq 1 1481 129 +1736 and 1 1734 1735 +1737 eq 1 1485 131 +1738 and 1 1736 1737 +1739 eq 1 1489 133 +1740 and 1 1738 1739 +1741 eq 1 1493 135 +1742 and 1 1740 1741 +1743 eq 1 1497 137 +1744 and 1 1742 1743 +1745 eq 1 1501 139 +1746 and 1 1744 1745 +1747 eq 1 1505 141 +1748 and 1 1746 1747 +1749 eq 1 1509 143 +1750 and 1 1748 1749 +1751 eq 1 1513 145 +1752 and 1 1750 1751 +1753 eq 1 1523 147 +1754 and 1 1752 1753 +1755 eq 1 411 149 +1756 and 1 1754 1755 +1757 eq 1 1525 151 +1758 and 1 1756 1757 +1759 eq 1 1529 153 +1760 and 1 1758 1759 +1761 eq 1 1533 155 +1762 and 1 1760 1761 +1763 eq 1 1537 157 +1764 and 1 1762 1763 +1765 eq 1 1541 159 +1766 and 1 1764 1765 +1767 eq 1 1545 161 +1768 and 1 1766 1767 +1769 eq 1 1549 163 +1770 and 1 1768 1769 +1771 eq 1 1553 165 +1772 and 1 1770 1771 +1773 eq 1 1557 167 +1774 and 1 1772 1773 +1775 eq 1 1561 169 +1776 and 1 1774 1775 +1777 and 1 1776 173 +1778 ite 4 307 484 488 +1779 ite 4 331 484 488 +1780 add 4 1778 1779 +1781 ite 4 355 484 488 +1782 add 4 1780 1781 +1783 ite 4 379 484 488 +1784 add 4 1782 1783 +1785 ite 4 403 484 488 +1786 add 4 1784 1785 +1787 ite 4 427 484 488 +1788 add 4 1786 1787 +1789 ulte 1 1788 484 +1790 ite 1 171 1777 -1789 +1791 next 1 173 1790 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-func-interl.btor2 new file mode 100644 index 0000000000..d8c2aa30de --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-func-interl.btor2 @@ -0,0 +1,1621 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_x +7 init 2 6 5 +8 state 2 v_y +9 init 2 8 5 +10 state 2 v_z +11 init 2 10 5 +12 state 2 v_t_0 +13 init 2 12 5 +14 state 2 v_t_1 +15 init 2 14 5 +16 state 2 v_t_2 +17 init 2 16 5 +18 state 2 v_t_3 +19 init 2 18 5 +20 state 2 v_t_4 +21 init 2 20 5 +22 state 2 v_t_5 +23 init 2 22 5 +24 zero 1 +25 state 1 a_q +26 init 1 25 24 +27 state 1 a_NCS_P_0 +28 init 1 27 24 +29 state 1 a_p2_P_0 +30 init 1 29 24 +31 state 1 a_p3_P_0 +32 init 1 31 24 +33 state 1 a_p4_P_0 +34 init 1 33 24 +35 state 1 a_p5_P_0 +36 init 1 35 24 +37 state 1 a_p6_P_0 +38 init 1 37 24 +39 state 1 a_p7_P_0 +40 init 1 39 24 +41 state 1 a_p8_P_0 +42 init 1 41 24 +43 state 1 a_p9_P_0 +44 init 1 43 24 +45 state 1 a_CS_P_0 +46 init 1 45 24 +47 state 1 a_p12_P_0 +48 init 1 47 24 +49 state 1 a_p13_P_0 +50 init 1 49 24 +51 state 1 a_NCS_P_1 +52 init 1 51 24 +53 state 1 a_p2_P_1 +54 init 1 53 24 +55 state 1 a_p3_P_1 +56 init 1 55 24 +57 state 1 a_p4_P_1 +58 init 1 57 24 +59 state 1 a_p5_P_1 +60 init 1 59 24 +61 state 1 a_p6_P_1 +62 init 1 61 24 +63 state 1 a_p7_P_1 +64 init 1 63 24 +65 state 1 a_p8_P_1 +66 init 1 65 24 +67 state 1 a_p9_P_1 +68 init 1 67 24 +69 state 1 a_CS_P_1 +70 init 1 69 24 +71 state 1 a_p12_P_1 +72 init 1 71 24 +73 state 1 a_p13_P_1 +74 init 1 73 24 +75 state 1 a_NCS_P_2 +76 init 1 75 24 +77 state 1 a_p2_P_2 +78 init 1 77 24 +79 state 1 a_p3_P_2 +80 init 1 79 24 +81 state 1 a_p4_P_2 +82 init 1 81 24 +83 state 1 a_p5_P_2 +84 init 1 83 24 +85 state 1 a_p6_P_2 +86 init 1 85 24 +87 state 1 a_p7_P_2 +88 init 1 87 24 +89 state 1 a_p8_P_2 +90 init 1 89 24 +91 state 1 a_p9_P_2 +92 init 1 91 24 +93 state 1 a_CS_P_2 +94 init 1 93 24 +95 state 1 a_p12_P_2 +96 init 1 95 24 +97 state 1 a_p13_P_2 +98 init 1 97 24 +99 state 1 a_NCS_P_3 +100 init 1 99 24 +101 state 1 a_p2_P_3 +102 init 1 101 24 +103 state 1 a_p3_P_3 +104 init 1 103 24 +105 state 1 a_p4_P_3 +106 init 1 105 24 +107 state 1 a_p5_P_3 +108 init 1 107 24 +109 state 1 a_p6_P_3 +110 init 1 109 24 +111 state 1 a_p7_P_3 +112 init 1 111 24 +113 state 1 a_p8_P_3 +114 init 1 113 24 +115 state 1 a_p9_P_3 +116 init 1 115 24 +117 state 1 a_CS_P_3 +118 init 1 117 24 +119 state 1 a_p12_P_3 +120 init 1 119 24 +121 state 1 a_p13_P_3 +122 init 1 121 24 +123 state 1 a_NCS_P_4 +124 init 1 123 24 +125 state 1 a_p2_P_4 +126 init 1 125 24 +127 state 1 a_p3_P_4 +128 init 1 127 24 +129 state 1 a_p4_P_4 +130 init 1 129 24 +131 state 1 a_p5_P_4 +132 init 1 131 24 +133 state 1 a_p6_P_4 +134 init 1 133 24 +135 state 1 a_p7_P_4 +136 init 1 135 24 +137 state 1 a_p8_P_4 +138 init 1 137 24 +139 state 1 a_p9_P_4 +140 init 1 139 24 +141 state 1 a_CS_P_4 +142 init 1 141 24 +143 state 1 a_p12_P_4 +144 init 1 143 24 +145 state 1 a_p13_P_4 +146 init 1 145 24 +147 state 1 a_NCS_P_5 +148 init 1 147 24 +149 state 1 a_p2_P_5 +150 init 1 149 24 +151 state 1 a_p3_P_5 +152 init 1 151 24 +153 state 1 a_p4_P_5 +154 init 1 153 24 +155 state 1 a_p5_P_5 +156 init 1 155 24 +157 state 1 a_p6_P_5 +158 init 1 157 24 +159 state 1 a_p7_P_5 +160 init 1 159 24 +161 state 1 a_p8_P_5 +162 init 1 161 24 +163 state 1 a_p9_P_5 +164 init 1 163 24 +165 state 1 a_CS_P_5 +166 init 1 165 24 +167 state 1 a_p12_P_5 +168 init 1 167 24 +169 state 1 a_p13_P_5 +170 init 1 169 24 +171 state 1 dve_invalid +172 init 1 171 24 +173 constd 4 1 +174 constd 4 0 +175 ite 4 45 173 174 +176 ite 4 69 173 174 +177 add 4 175 176 +178 ite 4 93 173 174 +179 add 4 177 178 +180 ite 4 117 173 174 +181 add 4 179 180 +182 ite 4 141 173 174 +183 add 4 181 182 +184 ite 4 165 173 174 +185 add 4 183 184 +186 ulte 1 185 173 +187 and 1 -171 -186 +188 bad 187 +189 input 1 f71 +190 constd 2 5 +191 input 1 f57 +192 constd 2 4 +193 input 1 f43 +194 constd 2 3 +195 input 1 f29 +196 constd 2 2 +197 input 1 f15 +198 constd 2 1 +199 input 1 f01 +200 constd 2 0 +201 ite 2 199 200 6 +202 ite 2 197 198 201 +203 ite 2 195 196 202 +204 ite 2 193 194 203 +205 ite 2 191 192 204 +206 ite 2 189 190 205 +207 next 2 6 206 +208 constd 2 255 +209 input 1 f84 +210 input 1 f73 +211 input 1 f70 +212 input 1 f59 +213 input 1 f56 +214 input 1 f45 +215 input 1 f42 +216 input 1 f31 +217 input 1 f28 +218 input 1 f17 +219 input 1 f14 +220 input 1 f03 +221 xor 2 208 8 +222 ite 2 220 200 221 +223 ite 2 219 208 222 +224 ite 2 218 198 223 +225 ite 2 217 208 224 +226 ite 2 216 196 225 +227 ite 2 215 208 226 +228 ite 2 214 194 227 +229 ite 2 213 208 228 +230 ite 2 212 192 229 +231 ite 2 211 208 230 +232 ite 2 210 190 231 +233 ite 2 209 208 232 +234 xor 2 208 233 +235 next 2 8 234 +236 input 1 f81 +237 input 1 f75 +238 input 1 f67 +239 input 1 f61 +240 input 1 f53 +241 input 1 f47 +242 input 1 f39 +243 input 1 f33 +244 input 1 f25 +245 input 1 f19 +246 input 1 f11 +247 input 1 f05 +248 ite 2 247 198 10 +249 ite 2 246 200 248 +250 ite 2 245 198 249 +251 ite 2 244 200 250 +252 ite 2 243 198 251 +253 ite 2 242 200 252 +254 ite 2 241 198 253 +255 ite 2 240 200 254 +256 ite 2 239 198 255 +257 ite 2 238 200 256 +258 ite 2 237 198 257 +259 ite 2 236 200 258 +260 next 2 10 259 +261 input 1 f13 +262 input 1 f12 +263 input 1 f09 +264 input 1 f08 +265 input 1 f07 +266 input 1 f06 +267 input 1 f04 +268 input 1 f02 +269 input 1 f00 +270 constd 3 0 +271 xor 2 208 12 +272 concat 4 270 271 +273 sub 4 272 173 +274 constd 4 255 +275 eq 1 208 271 +276 ite 4 275 173 174 +277 mul 4 274 276 +278 or 4 273 277 +279 slice 2 278 7 0 +280 ite 2 269 279 271 +281 ite 2 199 208 280 +282 ite 2 268 196 281 +283 ite 2 220 196 282 +284 ite 2 267 196 283 +285 ite 2 247 208 284 +286 ite 2 266 190 285 +287 ite 2 265 196 286 +288 ite 2 264 196 287 +289 ite 2 263 208 288 +290 ite 2 246 196 289 +291 ite 2 262 208 290 +292 ite 2 261 196 291 +293 ite 2 219 208 292 +294 xor 2 208 293 +295 next 2 12 294 +296 input 1 f27 +297 input 1 f26 +298 input 1 f23 +299 input 1 f22 +300 input 1 f21 +301 input 1 f20 +302 input 1 f18 +303 input 1 f16 +304 xor 2 208 14 +305 concat 4 270 304 +306 sub 4 305 173 +307 eq 1 208 304 +308 ite 4 307 173 174 +309 mul 4 274 308 +310 or 4 306 309 +311 slice 2 310 7 0 +312 ite 2 269 311 304 +313 ite 2 197 208 312 +314 ite 2 303 196 313 +315 ite 2 218 196 314 +316 ite 2 302 196 315 +317 ite 2 245 208 316 +318 ite 2 301 190 317 +319 ite 2 300 196 318 +320 ite 2 299 196 319 +321 ite 2 298 208 320 +322 ite 2 244 196 321 +323 ite 2 297 208 322 +324 ite 2 296 196 323 +325 ite 2 217 208 324 +326 xor 2 208 325 +327 next 2 14 326 +328 input 1 f41 +329 input 1 f40 +330 input 1 f37 +331 input 1 f36 +332 input 1 f35 +333 input 1 f34 +334 input 1 f32 +335 input 1 f30 +336 xor 2 208 16 +337 concat 4 270 336 +338 sub 4 337 173 +339 eq 1 208 336 +340 ite 4 339 173 174 +341 mul 4 274 340 +342 or 4 338 341 +343 slice 2 342 7 0 +344 ite 2 269 343 336 +345 ite 2 195 208 344 +346 ite 2 335 196 345 +347 ite 2 216 196 346 +348 ite 2 334 196 347 +349 ite 2 243 208 348 +350 ite 2 333 190 349 +351 ite 2 332 196 350 +352 ite 2 331 196 351 +353 ite 2 330 208 352 +354 ite 2 242 196 353 +355 ite 2 329 208 354 +356 ite 2 328 196 355 +357 ite 2 215 208 356 +358 xor 2 208 357 +359 next 2 16 358 +360 input 1 f55 +361 input 1 f54 +362 input 1 f51 +363 input 1 f50 +364 input 1 f49 +365 input 1 f48 +366 input 1 f46 +367 input 1 f44 +368 xor 2 208 18 +369 concat 4 270 368 +370 sub 4 369 173 +371 eq 1 208 368 +372 ite 4 371 173 174 +373 mul 4 274 372 +374 or 4 370 373 +375 slice 2 374 7 0 +376 ite 2 269 375 368 +377 ite 2 193 208 376 +378 ite 2 367 196 377 +379 ite 2 214 196 378 +380 ite 2 366 196 379 +381 ite 2 241 208 380 +382 ite 2 365 190 381 +383 ite 2 364 196 382 +384 ite 2 363 196 383 +385 ite 2 362 208 384 +386 ite 2 240 196 385 +387 ite 2 361 208 386 +388 ite 2 360 196 387 +389 ite 2 213 208 388 +390 xor 2 208 389 +391 next 2 18 390 +392 input 1 f69 +393 input 1 f68 +394 input 1 f65 +395 input 1 f64 +396 input 1 f63 +397 input 1 f62 +398 input 1 f60 +399 input 1 f58 +400 xor 2 208 20 +401 concat 4 270 400 +402 sub 4 401 173 +403 eq 1 208 400 +404 ite 4 403 173 174 +405 mul 4 274 404 +406 or 4 402 405 +407 slice 2 406 7 0 +408 ite 2 269 407 400 +409 ite 2 191 208 408 +410 ite 2 399 196 409 +411 ite 2 212 196 410 +412 ite 2 398 196 411 +413 ite 2 239 208 412 +414 ite 2 397 190 413 +415 ite 2 396 196 414 +416 ite 2 395 196 415 +417 ite 2 394 208 416 +418 ite 2 238 196 417 +419 ite 2 393 208 418 +420 ite 2 392 196 419 +421 ite 2 211 208 420 +422 xor 2 208 421 +423 next 2 20 422 +424 input 1 f83 +425 input 1 f82 +426 input 1 f79 +427 input 1 f78 +428 input 1 f77 +429 input 1 f76 +430 input 1 f74 +431 input 1 f72 +432 xor 2 208 22 +433 concat 4 270 432 +434 sub 4 433 173 +435 eq 1 208 432 +436 ite 4 435 173 174 +437 mul 4 274 436 +438 or 4 434 437 +439 slice 2 438 7 0 +440 ite 2 269 439 432 +441 ite 2 189 208 440 +442 ite 2 431 196 441 +443 ite 2 210 196 442 +444 ite 2 430 196 443 +445 ite 2 237 208 444 +446 ite 2 429 190 445 +447 ite 2 428 196 446 +448 ite 2 427 196 447 +449 ite 2 426 208 448 +450 ite 2 236 196 449 +451 ite 2 425 208 450 +452 ite 2 424 196 451 +453 ite 2 209 208 452 +454 xor 2 208 453 +455 next 2 22 454 +456 next 1 25 25 +457 and 1 -27 -199 +458 or 1 457 264 +459 or 1 458 262 +460 or 1 459 219 +461 next 1 27 -460 +462 next 1 29 29 +463 or 1 31 199 +464 and 1 463 -268 +465 next 1 31 464 +466 or 1 33 268 +467 and 1 466 -220 +468 next 1 33 467 +469 or 1 35 220 +470 and 1 469 -267 +471 and 1 470 -266 +472 next 1 35 471 +473 or 1 37 266 +474 and 1 473 -265 +475 next 1 37 474 +476 or 1 39 265 +477 and 1 476 -264 +478 and 1 477 -263 +479 next 1 39 478 +480 or 1 41 263 +481 input 1 f10 +482 and 1 480 -481 +483 next 1 41 482 +484 or 1 43 267 +485 and 1 484 -247 +486 next 1 43 485 +487 or 1 45 247 +488 or 1 487 481 +489 and 1 488 -246 +490 next 1 45 489 +491 or 1 47 246 +492 and 1 491 -262 +493 and 1 492 -261 +494 next 1 47 493 +495 or 1 49 261 +496 and 1 495 -219 +497 next 1 49 496 +498 and 1 -51 -197 +499 or 1 498 299 +500 or 1 499 297 +501 or 1 500 217 +502 next 1 51 -501 +503 next 1 53 53 +504 or 1 55 197 +505 and 1 504 -303 +506 next 1 55 505 +507 or 1 57 303 +508 and 1 507 -218 +509 next 1 57 508 +510 or 1 59 218 +511 and 1 510 -302 +512 and 1 511 -301 +513 next 1 59 512 +514 or 1 61 301 +515 and 1 514 -300 +516 next 1 61 515 +517 or 1 63 300 +518 and 1 517 -299 +519 and 1 518 -298 +520 next 1 63 519 +521 or 1 65 298 +522 input 1 f24 +523 and 1 521 -522 +524 next 1 65 523 +525 or 1 67 302 +526 and 1 525 -245 +527 next 1 67 526 +528 or 1 69 245 +529 or 1 528 522 +530 and 1 529 -244 +531 next 1 69 530 +532 or 1 71 244 +533 and 1 532 -297 +534 and 1 533 -296 +535 next 1 71 534 +536 or 1 73 296 +537 and 1 536 -217 +538 next 1 73 537 +539 and 1 -75 -195 +540 or 1 539 331 +541 or 1 540 329 +542 or 1 541 215 +543 next 1 75 -542 +544 next 1 77 77 +545 or 1 79 195 +546 and 1 545 -335 +547 next 1 79 546 +548 or 1 81 335 +549 and 1 548 -216 +550 next 1 81 549 +551 or 1 83 216 +552 and 1 551 -334 +553 and 1 552 -333 +554 next 1 83 553 +555 or 1 85 333 +556 and 1 555 -332 +557 next 1 85 556 +558 or 1 87 332 +559 and 1 558 -331 +560 and 1 559 -330 +561 next 1 87 560 +562 or 1 89 330 +563 input 1 f38 +564 and 1 562 -563 +565 next 1 89 564 +566 or 1 91 334 +567 and 1 566 -243 +568 next 1 91 567 +569 or 1 93 243 +570 or 1 569 563 +571 and 1 570 -242 +572 next 1 93 571 +573 or 1 95 242 +574 and 1 573 -329 +575 and 1 574 -328 +576 next 1 95 575 +577 or 1 97 328 +578 and 1 577 -215 +579 next 1 97 578 +580 and 1 -99 -193 +581 or 1 580 363 +582 or 1 581 361 +583 or 1 582 213 +584 next 1 99 -583 +585 next 1 101 101 +586 or 1 103 193 +587 and 1 586 -367 +588 next 1 103 587 +589 or 1 105 367 +590 and 1 589 -214 +591 next 1 105 590 +592 or 1 107 214 +593 and 1 592 -366 +594 and 1 593 -365 +595 next 1 107 594 +596 or 1 109 365 +597 and 1 596 -364 +598 next 1 109 597 +599 or 1 111 364 +600 and 1 599 -363 +601 and 1 600 -362 +602 next 1 111 601 +603 or 1 113 362 +604 input 1 f52 +605 and 1 603 -604 +606 next 1 113 605 +607 or 1 115 366 +608 and 1 607 -241 +609 next 1 115 608 +610 or 1 117 241 +611 or 1 610 604 +612 and 1 611 -240 +613 next 1 117 612 +614 or 1 119 240 +615 and 1 614 -361 +616 and 1 615 -360 +617 next 1 119 616 +618 or 1 121 360 +619 and 1 618 -213 +620 next 1 121 619 +621 and 1 -123 -191 +622 or 1 621 395 +623 or 1 622 393 +624 or 1 623 211 +625 next 1 123 -624 +626 next 1 125 125 +627 or 1 127 191 +628 and 1 627 -399 +629 next 1 127 628 +630 or 1 129 399 +631 and 1 630 -212 +632 next 1 129 631 +633 or 1 131 212 +634 and 1 633 -398 +635 and 1 634 -397 +636 next 1 131 635 +637 or 1 133 397 +638 and 1 637 -396 +639 next 1 133 638 +640 or 1 135 396 +641 and 1 640 -395 +642 and 1 641 -394 +643 next 1 135 642 +644 or 1 137 394 +645 input 1 f66 +646 and 1 644 -645 +647 next 1 137 646 +648 or 1 139 398 +649 and 1 648 -239 +650 next 1 139 649 +651 or 1 141 239 +652 or 1 651 645 +653 and 1 652 -238 +654 next 1 141 653 +655 or 1 143 238 +656 and 1 655 -393 +657 and 1 656 -392 +658 next 1 143 657 +659 or 1 145 392 +660 and 1 659 -211 +661 next 1 145 660 +662 and 1 -147 -189 +663 or 1 662 427 +664 or 1 663 425 +665 or 1 664 209 +666 next 1 147 -665 +667 next 1 149 149 +668 or 1 151 189 +669 and 1 668 -431 +670 next 1 151 669 +671 or 1 153 431 +672 and 1 671 -210 +673 next 1 153 672 +674 or 1 155 210 +675 and 1 674 -430 +676 and 1 675 -429 +677 next 1 155 676 +678 or 1 157 429 +679 and 1 678 -428 +680 next 1 157 679 +681 or 1 159 428 +682 and 1 681 -427 +683 and 1 682 -426 +684 next 1 159 683 +685 or 1 161 426 +686 input 1 f80 +687 and 1 685 -686 +688 next 1 161 687 +689 or 1 163 430 +690 and 1 689 -237 +691 next 1 163 690 +692 or 1 165 237 +693 or 1 692 686 +694 and 1 693 -236 +695 next 1 165 694 +696 or 1 167 236 +697 and 1 696 -425 +698 and 1 697 -424 +699 next 1 167 698 +700 or 1 169 424 +701 and 1 700 -209 +702 next 1 169 701 +703 eq 1 200 271 +704 eq 1 200 304 +705 and 1 -703 -704 +706 eq 1 200 336 +707 and 1 705 -706 +708 eq 1 200 368 +709 and 1 707 -708 +710 eq 1 200 400 +711 and 1 709 -710 +712 eq 1 200 432 +713 and 1 711 -712 +714 and 1 -25 713 +715 or 1 -269 714 +716 or 1 -27 -199 +717 and 1 715 716 +718 eq 1 208 221 +719 and 1 31 718 +720 or 1 -268 719 +721 and 1 717 720 +722 or 1 33 -220 +723 and 1 721 722 +724 eq 1 200 6 +725 and 1 35 724 +726 or 1 -267 725 +727 and 1 723 726 +728 or 1 43 -247 +729 and 1 727 728 +730 and 1 35 -724 +731 or 1 -266 730 +732 and 1 729 731 +733 and 1 37 703 +734 or 1 -265 733 +735 and 1 732 734 +736 eq 1 200 221 +737 and 1 39 -736 +738 or 1 -264 737 +739 and 1 735 738 +740 and 1 39 736 +741 or 1 -263 740 +742 and 1 739 741 +743 eq 1 200 10 +744 and 1 41 743 +745 or 1 -481 744 +746 and 1 742 745 +747 or 1 45 -246 +748 and 1 746 747 +749 and 1 47 -736 +750 or 1 -262 749 +751 and 1 748 750 +752 and 1 47 736 +753 or 1 -261 752 +754 and 1 751 753 +755 or 1 49 -219 +756 and 1 754 755 +757 or 1 -51 -197 +758 and 1 756 757 +759 and 1 55 718 +760 or 1 -303 759 +761 and 1 758 760 +762 or 1 57 -218 +763 and 1 761 762 +764 eq 1 198 6 +765 and 1 59 764 +766 or 1 -302 765 +767 and 1 763 766 +768 or 1 67 -245 +769 and 1 767 768 +770 and 1 59 -764 +771 or 1 -301 770 +772 and 1 769 771 +773 and 1 61 704 +774 or 1 -300 773 +775 and 1 772 774 +776 eq 1 198 221 +777 and 1 63 -776 +778 or 1 -299 777 +779 and 1 775 778 +780 and 1 63 776 +781 or 1 -298 780 +782 and 1 779 781 +783 and 1 65 743 +784 or 1 -522 783 +785 and 1 782 784 +786 or 1 69 -244 +787 and 1 785 786 +788 and 1 71 -776 +789 or 1 -297 788 +790 and 1 787 789 +791 and 1 71 776 +792 or 1 -296 791 +793 and 1 790 792 +794 or 1 73 -217 +795 and 1 793 794 +796 or 1 -75 -195 +797 and 1 795 796 +798 and 1 79 718 +799 or 1 -335 798 +800 and 1 797 799 +801 or 1 81 -216 +802 and 1 800 801 +803 eq 1 196 6 +804 and 1 83 803 +805 or 1 -334 804 +806 and 1 802 805 +807 or 1 91 -243 +808 and 1 806 807 +809 and 1 83 -803 +810 or 1 -333 809 +811 and 1 808 810 +812 and 1 85 706 +813 or 1 -332 812 +814 and 1 811 813 +815 eq 1 196 221 +816 and 1 87 -815 +817 or 1 -331 816 +818 and 1 814 817 +819 and 1 87 815 +820 or 1 -330 819 +821 and 1 818 820 +822 and 1 89 743 +823 or 1 -563 822 +824 and 1 821 823 +825 or 1 93 -242 +826 and 1 824 825 +827 and 1 95 -815 +828 or 1 -329 827 +829 and 1 826 828 +830 and 1 95 815 +831 or 1 -328 830 +832 and 1 829 831 +833 or 1 97 -215 +834 and 1 832 833 +835 or 1 -99 -193 +836 and 1 834 835 +837 and 1 103 718 +838 or 1 -367 837 +839 and 1 836 838 +840 or 1 105 -214 +841 and 1 839 840 +842 eq 1 194 6 +843 and 1 107 842 +844 or 1 -366 843 +845 and 1 841 844 +846 or 1 115 -241 +847 and 1 845 846 +848 and 1 107 -842 +849 or 1 -365 848 +850 and 1 847 849 +851 and 1 109 708 +852 or 1 -364 851 +853 and 1 850 852 +854 eq 1 194 221 +855 and 1 111 -854 +856 or 1 -363 855 +857 and 1 853 856 +858 and 1 111 854 +859 or 1 -362 858 +860 and 1 857 859 +861 and 1 113 743 +862 or 1 -604 861 +863 and 1 860 862 +864 or 1 117 -240 +865 and 1 863 864 +866 and 1 119 -854 +867 or 1 -361 866 +868 and 1 865 867 +869 and 1 119 854 +870 or 1 -360 869 +871 and 1 868 870 +872 or 1 121 -213 +873 and 1 871 872 +874 or 1 -123 -191 +875 and 1 873 874 +876 and 1 127 718 +877 or 1 -399 876 +878 and 1 875 877 +879 or 1 129 -212 +880 and 1 878 879 +881 eq 1 192 6 +882 and 1 131 881 +883 or 1 -398 882 +884 and 1 880 883 +885 or 1 139 -239 +886 and 1 884 885 +887 and 1 131 -881 +888 or 1 -397 887 +889 and 1 886 888 +890 and 1 133 710 +891 or 1 -396 890 +892 and 1 889 891 +893 eq 1 192 221 +894 and 1 135 -893 +895 or 1 -395 894 +896 and 1 892 895 +897 and 1 135 893 +898 or 1 -394 897 +899 and 1 896 898 +900 and 1 137 743 +901 or 1 -645 900 +902 and 1 899 901 +903 or 1 141 -238 +904 and 1 902 903 +905 and 1 143 -893 +906 or 1 -393 905 +907 and 1 904 906 +908 and 1 143 893 +909 or 1 -392 908 +910 and 1 907 909 +911 or 1 145 -211 +912 and 1 910 911 +913 or 1 -147 -189 +914 and 1 912 913 +915 and 1 151 718 +916 or 1 -431 915 +917 and 1 914 916 +918 or 1 153 -210 +919 and 1 917 918 +920 eq 1 190 6 +921 and 1 155 920 +922 or 1 -430 921 +923 and 1 919 922 +924 or 1 163 -237 +925 and 1 923 924 +926 and 1 155 -920 +927 or 1 -429 926 +928 and 1 925 927 +929 and 1 157 712 +930 or 1 -428 929 +931 and 1 928 930 +932 eq 1 190 221 +933 and 1 159 -932 +934 or 1 -427 933 +935 and 1 931 934 +936 and 1 159 932 +937 or 1 -426 936 +938 and 1 935 937 +939 and 1 161 743 +940 or 1 -686 939 +941 and 1 938 940 +942 or 1 165 -236 +943 and 1 941 942 +944 and 1 167 -932 +945 or 1 -425 944 +946 and 1 943 945 +947 and 1 167 932 +948 or 1 -424 947 +949 and 1 946 948 +950 or 1 169 -209 +951 and 1 949 950 +952 or 1 269 199 +953 or 1 268 952 +954 or 1 220 953 +955 or 1 267 954 +956 or 1 247 955 +957 or 1 266 956 +958 or 1 265 957 +959 or 1 264 958 +960 or 1 263 959 +961 or 1 481 960 +962 or 1 246 961 +963 or 1 262 962 +964 or 1 261 963 +965 or 1 219 964 +966 or 1 197 965 +967 or 1 303 966 +968 or 1 218 967 +969 or 1 302 968 +970 or 1 245 969 +971 or 1 301 970 +972 or 1 300 971 +973 or 1 299 972 +974 or 1 298 973 +975 or 1 522 974 +976 or 1 244 975 +977 or 1 297 976 +978 or 1 296 977 +979 or 1 217 978 +980 or 1 195 979 +981 or 1 335 980 +982 or 1 216 981 +983 or 1 334 982 +984 or 1 243 983 +985 or 1 333 984 +986 or 1 332 985 +987 or 1 331 986 +988 or 1 330 987 +989 or 1 563 988 +990 or 1 242 989 +991 or 1 329 990 +992 or 1 328 991 +993 or 1 215 992 +994 or 1 193 993 +995 or 1 367 994 +996 or 1 214 995 +997 or 1 366 996 +998 or 1 241 997 +999 or 1 365 998 +1000 or 1 364 999 +1001 or 1 363 1000 +1002 or 1 362 1001 +1003 or 1 604 1002 +1004 or 1 240 1003 +1005 or 1 361 1004 +1006 or 1 360 1005 +1007 or 1 213 1006 +1008 or 1 191 1007 +1009 or 1 399 1008 +1010 or 1 212 1009 +1011 or 1 398 1010 +1012 or 1 239 1011 +1013 or 1 397 1012 +1014 or 1 396 1013 +1015 or 1 395 1014 +1016 or 1 394 1015 +1017 or 1 645 1016 +1018 or 1 238 1017 +1019 or 1 393 1018 +1020 or 1 392 1019 +1021 or 1 211 1020 +1022 or 1 189 1021 +1023 or 1 431 1022 +1024 or 1 210 1023 +1025 or 1 430 1024 +1026 or 1 237 1025 +1027 or 1 429 1026 +1028 or 1 428 1027 +1029 or 1 427 1028 +1030 or 1 426 1029 +1031 or 1 686 1030 +1032 or 1 236 1031 +1033 or 1 425 1032 +1034 or 1 424 1033 +1035 or 1 209 1034 +1036 and 1 951 1035 +1037 and 1 269 199 +1038 and 1 268 952 +1039 or 1 1037 1038 +1040 and 1 220 953 +1041 or 1 1039 1040 +1042 and 1 267 954 +1043 or 1 1041 1042 +1044 and 1 247 955 +1045 or 1 1043 1044 +1046 and 1 266 956 +1047 or 1 1045 1046 +1048 and 1 265 957 +1049 or 1 1047 1048 +1050 and 1 264 958 +1051 or 1 1049 1050 +1052 and 1 263 959 +1053 or 1 1051 1052 +1054 and 1 481 960 +1055 or 1 1053 1054 +1056 and 1 246 961 +1057 or 1 1055 1056 +1058 and 1 262 962 +1059 or 1 1057 1058 +1060 and 1 261 963 +1061 or 1 1059 1060 +1062 and 1 219 964 +1063 or 1 1061 1062 +1064 and 1 197 965 +1065 or 1 1063 1064 +1066 and 1 303 966 +1067 or 1 1065 1066 +1068 and 1 218 967 +1069 or 1 1067 1068 +1070 and 1 302 968 +1071 or 1 1069 1070 +1072 and 1 245 969 +1073 or 1 1071 1072 +1074 and 1 301 970 +1075 or 1 1073 1074 +1076 and 1 300 971 +1077 or 1 1075 1076 +1078 and 1 299 972 +1079 or 1 1077 1078 +1080 and 1 298 973 +1081 or 1 1079 1080 +1082 and 1 522 974 +1083 or 1 1081 1082 +1084 and 1 244 975 +1085 or 1 1083 1084 +1086 and 1 297 976 +1087 or 1 1085 1086 +1088 and 1 296 977 +1089 or 1 1087 1088 +1090 and 1 217 978 +1091 or 1 1089 1090 +1092 and 1 195 979 +1093 or 1 1091 1092 +1094 and 1 335 980 +1095 or 1 1093 1094 +1096 and 1 216 981 +1097 or 1 1095 1096 +1098 and 1 334 982 +1099 or 1 1097 1098 +1100 and 1 243 983 +1101 or 1 1099 1100 +1102 and 1 333 984 +1103 or 1 1101 1102 +1104 and 1 332 985 +1105 or 1 1103 1104 +1106 and 1 331 986 +1107 or 1 1105 1106 +1108 and 1 330 987 +1109 or 1 1107 1108 +1110 and 1 563 988 +1111 or 1 1109 1110 +1112 and 1 242 989 +1113 or 1 1111 1112 +1114 and 1 329 990 +1115 or 1 1113 1114 +1116 and 1 328 991 +1117 or 1 1115 1116 +1118 and 1 215 992 +1119 or 1 1117 1118 +1120 and 1 193 993 +1121 or 1 1119 1120 +1122 and 1 367 994 +1123 or 1 1121 1122 +1124 and 1 214 995 +1125 or 1 1123 1124 +1126 and 1 366 996 +1127 or 1 1125 1126 +1128 and 1 241 997 +1129 or 1 1127 1128 +1130 and 1 365 998 +1131 or 1 1129 1130 +1132 and 1 364 999 +1133 or 1 1131 1132 +1134 and 1 363 1000 +1135 or 1 1133 1134 +1136 and 1 362 1001 +1137 or 1 1135 1136 +1138 and 1 604 1002 +1139 or 1 1137 1138 +1140 and 1 240 1003 +1141 or 1 1139 1140 +1142 and 1 361 1004 +1143 or 1 1141 1142 +1144 and 1 360 1005 +1145 or 1 1143 1144 +1146 and 1 213 1006 +1147 or 1 1145 1146 +1148 and 1 191 1007 +1149 or 1 1147 1148 +1150 and 1 399 1008 +1151 or 1 1149 1150 +1152 and 1 212 1009 +1153 or 1 1151 1152 +1154 and 1 398 1010 +1155 or 1 1153 1154 +1156 and 1 239 1011 +1157 or 1 1155 1156 +1158 and 1 397 1012 +1159 or 1 1157 1158 +1160 and 1 396 1013 +1161 or 1 1159 1160 +1162 and 1 395 1014 +1163 or 1 1161 1162 +1164 and 1 394 1015 +1165 or 1 1163 1164 +1166 and 1 645 1016 +1167 or 1 1165 1166 +1168 and 1 238 1017 +1169 or 1 1167 1168 +1170 and 1 393 1018 +1171 or 1 1169 1170 +1172 and 1 392 1019 +1173 or 1 1171 1172 +1174 and 1 211 1020 +1175 or 1 1173 1174 +1176 and 1 189 1021 +1177 or 1 1175 1176 +1178 and 1 431 1022 +1179 or 1 1177 1178 +1180 and 1 210 1023 +1181 or 1 1179 1180 +1182 and 1 430 1024 +1183 or 1 1181 1182 +1184 and 1 237 1025 +1185 or 1 1183 1184 +1186 and 1 429 1026 +1187 or 1 1185 1186 +1188 and 1 428 1027 +1189 or 1 1187 1188 +1190 and 1 427 1028 +1191 or 1 1189 1190 +1192 and 1 426 1029 +1193 or 1 1191 1192 +1194 and 1 686 1030 +1195 or 1 1193 1194 +1196 and 1 236 1031 +1197 or 1 1195 1196 +1198 and 1 425 1032 +1199 or 1 1197 1198 +1200 and 1 424 1033 +1201 or 1 1199 1200 +1202 and 1 209 1034 +1203 or 1 1201 1202 +1204 and 1 1036 -1203 +1205 and 1 -27 29 +1206 or 1 -27 29 +1207 and 1 31 1206 +1208 or 1 1205 1207 +1209 or 1 31 1206 +1210 and 1 33 1209 +1211 or 1 1208 1210 +1212 or 1 33 1209 +1213 and 1 35 1212 +1214 or 1 1211 1213 +1215 or 1 35 1212 +1216 and 1 37 1215 +1217 or 1 1214 1216 +1218 or 1 37 1215 +1219 and 1 39 1218 +1220 or 1 1217 1219 +1221 or 1 39 1218 +1222 and 1 41 1221 +1223 or 1 1220 1222 +1224 or 1 41 1221 +1225 and 1 43 1224 +1226 or 1 1223 1225 +1227 or 1 43 1224 +1228 and 1 45 1227 +1229 or 1 1226 1228 +1230 or 1 45 1227 +1231 and 1 47 1230 +1232 or 1 1229 1231 +1233 or 1 47 1230 +1234 and 1 49 1233 +1235 or 1 1232 1234 +1236 and 1 -25 -1235 +1237 or 1 49 1233 +1238 and 1 1236 1237 +1239 and 1 -51 53 +1240 or 1 -51 53 +1241 and 1 55 1240 +1242 or 1 1239 1241 +1243 or 1 55 1240 +1244 and 1 57 1243 +1245 or 1 1242 1244 +1246 or 1 57 1243 +1247 and 1 59 1246 +1248 or 1 1245 1247 +1249 or 1 59 1246 +1250 and 1 61 1249 +1251 or 1 1248 1250 +1252 or 1 61 1249 +1253 and 1 63 1252 +1254 or 1 1251 1253 +1255 or 1 63 1252 +1256 and 1 65 1255 +1257 or 1 1254 1256 +1258 or 1 65 1255 +1259 and 1 67 1258 +1260 or 1 1257 1259 +1261 or 1 67 1258 +1262 and 1 69 1261 +1263 or 1 1260 1262 +1264 or 1 69 1261 +1265 and 1 71 1264 +1266 or 1 1263 1265 +1267 or 1 71 1264 +1268 and 1 73 1267 +1269 or 1 1266 1268 +1270 and 1 1238 -1269 +1271 or 1 73 1267 +1272 and 1 1270 1271 +1273 and 1 -75 77 +1274 or 1 -75 77 +1275 and 1 79 1274 +1276 or 1 1273 1275 +1277 or 1 79 1274 +1278 and 1 81 1277 +1279 or 1 1276 1278 +1280 or 1 81 1277 +1281 and 1 83 1280 +1282 or 1 1279 1281 +1283 or 1 83 1280 +1284 and 1 85 1283 +1285 or 1 1282 1284 +1286 or 1 85 1283 +1287 and 1 87 1286 +1288 or 1 1285 1287 +1289 or 1 87 1286 +1290 and 1 89 1289 +1291 or 1 1288 1290 +1292 or 1 89 1289 +1293 and 1 91 1292 +1294 or 1 1291 1293 +1295 or 1 91 1292 +1296 and 1 93 1295 +1297 or 1 1294 1296 +1298 or 1 93 1295 +1299 and 1 95 1298 +1300 or 1 1297 1299 +1301 or 1 95 1298 +1302 and 1 97 1301 +1303 or 1 1300 1302 +1304 and 1 1272 -1303 +1305 or 1 97 1301 +1306 and 1 1304 1305 +1307 and 1 -99 101 +1308 or 1 -99 101 +1309 and 1 103 1308 +1310 or 1 1307 1309 +1311 or 1 103 1308 +1312 and 1 105 1311 +1313 or 1 1310 1312 +1314 or 1 105 1311 +1315 and 1 107 1314 +1316 or 1 1313 1315 +1317 or 1 107 1314 +1318 and 1 109 1317 +1319 or 1 1316 1318 +1320 or 1 109 1317 +1321 and 1 111 1320 +1322 or 1 1319 1321 +1323 or 1 111 1320 +1324 and 1 113 1323 +1325 or 1 1322 1324 +1326 or 1 113 1323 +1327 and 1 115 1326 +1328 or 1 1325 1327 +1329 or 1 115 1326 +1330 and 1 117 1329 +1331 or 1 1328 1330 +1332 or 1 117 1329 +1333 and 1 119 1332 +1334 or 1 1331 1333 +1335 or 1 119 1332 +1336 and 1 121 1335 +1337 or 1 1334 1336 +1338 and 1 1306 -1337 +1339 or 1 121 1335 +1340 and 1 1338 1339 +1341 and 1 -123 125 +1342 or 1 -123 125 +1343 and 1 127 1342 +1344 or 1 1341 1343 +1345 or 1 127 1342 +1346 and 1 129 1345 +1347 or 1 1344 1346 +1348 or 1 129 1345 +1349 and 1 131 1348 +1350 or 1 1347 1349 +1351 or 1 131 1348 +1352 and 1 133 1351 +1353 or 1 1350 1352 +1354 or 1 133 1351 +1355 and 1 135 1354 +1356 or 1 1353 1355 +1357 or 1 135 1354 +1358 and 1 137 1357 +1359 or 1 1356 1358 +1360 or 1 137 1357 +1361 and 1 139 1360 +1362 or 1 1359 1361 +1363 or 1 139 1360 +1364 and 1 141 1363 +1365 or 1 1362 1364 +1366 or 1 141 1363 +1367 and 1 143 1366 +1368 or 1 1365 1367 +1369 or 1 143 1366 +1370 and 1 145 1369 +1371 or 1 1368 1370 +1372 and 1 1340 -1371 +1373 or 1 145 1369 +1374 and 1 1372 1373 +1375 and 1 -147 149 +1376 or 1 -147 149 +1377 and 1 151 1376 +1378 or 1 1375 1377 +1379 or 1 151 1376 +1380 and 1 153 1379 +1381 or 1 1378 1380 +1382 or 1 153 1379 +1383 and 1 155 1382 +1384 or 1 1381 1383 +1385 or 1 155 1382 +1386 and 1 157 1385 +1387 or 1 1384 1386 +1388 or 1 157 1385 +1389 and 1 159 1388 +1390 or 1 1387 1389 +1391 or 1 159 1388 +1392 and 1 161 1391 +1393 or 1 1390 1392 +1394 or 1 161 1391 +1395 and 1 163 1394 +1396 or 1 1393 1395 +1397 or 1 163 1394 +1398 and 1 165 1397 +1399 or 1 1396 1398 +1400 or 1 165 1397 +1401 and 1 167 1400 +1402 or 1 1399 1401 +1403 or 1 167 1400 +1404 and 1 169 1403 +1405 or 1 1402 1404 +1406 and 1 1374 -1405 +1407 or 1 169 1403 +1408 and 1 1406 1407 +1409 and 1 1204 1408 +1410 and 1 29 460 +1411 or 1 29 460 +1412 and 1 464 1411 +1413 or 1 1410 1412 +1414 or 1 464 1411 +1415 and 1 467 1414 +1416 or 1 1413 1415 +1417 or 1 467 1414 +1418 and 1 471 1417 +1419 or 1 1416 1418 +1420 or 1 471 1417 +1421 and 1 474 1420 +1422 or 1 1419 1421 +1423 or 1 474 1420 +1424 and 1 478 1423 +1425 or 1 1422 1424 +1426 or 1 478 1423 +1427 and 1 482 1426 +1428 or 1 1425 1427 +1429 or 1 482 1426 +1430 and 1 485 1429 +1431 or 1 1428 1430 +1432 or 1 485 1429 +1433 and 1 489 1432 +1434 or 1 1431 1433 +1435 or 1 489 1432 +1436 and 1 493 1435 +1437 or 1 1434 1436 +1438 or 1 493 1435 +1439 and 1 496 1438 +1440 or 1 1437 1439 +1441 and 1 -25 -1440 +1442 or 1 496 1438 +1443 and 1 1441 1442 +1444 and 1 53 501 +1445 or 1 53 501 +1446 and 1 505 1445 +1447 or 1 1444 1446 +1448 or 1 505 1445 +1449 and 1 508 1448 +1450 or 1 1447 1449 +1451 or 1 508 1448 +1452 and 1 512 1451 +1453 or 1 1450 1452 +1454 or 1 512 1451 +1455 and 1 515 1454 +1456 or 1 1453 1455 +1457 or 1 515 1454 +1458 and 1 519 1457 +1459 or 1 1456 1458 +1460 or 1 519 1457 +1461 and 1 523 1460 +1462 or 1 1459 1461 +1463 or 1 523 1460 +1464 and 1 526 1463 +1465 or 1 1462 1464 +1466 or 1 526 1463 +1467 and 1 530 1466 +1468 or 1 1465 1467 +1469 or 1 530 1466 +1470 and 1 534 1469 +1471 or 1 1468 1470 +1472 or 1 534 1469 +1473 and 1 537 1472 +1474 or 1 1471 1473 +1475 and 1 1443 -1474 +1476 or 1 537 1472 +1477 and 1 1475 1476 +1478 and 1 77 542 +1479 or 1 77 542 +1480 and 1 546 1479 +1481 or 1 1478 1480 +1482 or 1 546 1479 +1483 and 1 549 1482 +1484 or 1 1481 1483 +1485 or 1 549 1482 +1486 and 1 553 1485 +1487 or 1 1484 1486 +1488 or 1 553 1485 +1489 and 1 556 1488 +1490 or 1 1487 1489 +1491 or 1 556 1488 +1492 and 1 560 1491 +1493 or 1 1490 1492 +1494 or 1 560 1491 +1495 and 1 564 1494 +1496 or 1 1493 1495 +1497 or 1 564 1494 +1498 and 1 567 1497 +1499 or 1 1496 1498 +1500 or 1 567 1497 +1501 and 1 571 1500 +1502 or 1 1499 1501 +1503 or 1 571 1500 +1504 and 1 575 1503 +1505 or 1 1502 1504 +1506 or 1 575 1503 +1507 and 1 578 1506 +1508 or 1 1505 1507 +1509 and 1 1477 -1508 +1510 or 1 578 1506 +1511 and 1 1509 1510 +1512 and 1 101 583 +1513 or 1 101 583 +1514 and 1 587 1513 +1515 or 1 1512 1514 +1516 or 1 587 1513 +1517 and 1 590 1516 +1518 or 1 1515 1517 +1519 or 1 590 1516 +1520 and 1 594 1519 +1521 or 1 1518 1520 +1522 or 1 594 1519 +1523 and 1 597 1522 +1524 or 1 1521 1523 +1525 or 1 597 1522 +1526 and 1 601 1525 +1527 or 1 1524 1526 +1528 or 1 601 1525 +1529 and 1 605 1528 +1530 or 1 1527 1529 +1531 or 1 605 1528 +1532 and 1 608 1531 +1533 or 1 1530 1532 +1534 or 1 608 1531 +1535 and 1 612 1534 +1536 or 1 1533 1535 +1537 or 1 612 1534 +1538 and 1 616 1537 +1539 or 1 1536 1538 +1540 or 1 616 1537 +1541 and 1 619 1540 +1542 or 1 1539 1541 +1543 and 1 1511 -1542 +1544 or 1 619 1540 +1545 and 1 1543 1544 +1546 and 1 125 624 +1547 or 1 125 624 +1548 and 1 628 1547 +1549 or 1 1546 1548 +1550 or 1 628 1547 +1551 and 1 631 1550 +1552 or 1 1549 1551 +1553 or 1 631 1550 +1554 and 1 635 1553 +1555 or 1 1552 1554 +1556 or 1 635 1553 +1557 and 1 638 1556 +1558 or 1 1555 1557 +1559 or 1 638 1556 +1560 and 1 642 1559 +1561 or 1 1558 1560 +1562 or 1 642 1559 +1563 and 1 646 1562 +1564 or 1 1561 1563 +1565 or 1 646 1562 +1566 and 1 649 1565 +1567 or 1 1564 1566 +1568 or 1 649 1565 +1569 and 1 653 1568 +1570 or 1 1567 1569 +1571 or 1 653 1568 +1572 and 1 657 1571 +1573 or 1 1570 1572 +1574 or 1 657 1571 +1575 and 1 660 1574 +1576 or 1 1573 1575 +1577 and 1 1545 -1576 +1578 or 1 660 1574 +1579 and 1 1577 1578 +1580 and 1 149 665 +1581 or 1 149 665 +1582 and 1 669 1581 +1583 or 1 1580 1582 +1584 or 1 669 1581 +1585 and 1 672 1584 +1586 or 1 1583 1585 +1587 or 1 672 1584 +1588 and 1 676 1587 +1589 or 1 1586 1588 +1590 or 1 676 1587 +1591 and 1 679 1590 +1592 or 1 1589 1591 +1593 or 1 679 1590 +1594 and 1 683 1593 +1595 or 1 1592 1594 +1596 or 1 683 1593 +1597 and 1 687 1596 +1598 or 1 1595 1597 +1599 or 1 687 1596 +1600 and 1 690 1599 +1601 or 1 1598 1600 +1602 or 1 690 1599 +1603 and 1 694 1602 +1604 or 1 1601 1603 +1605 or 1 694 1602 +1606 and 1 698 1605 +1607 or 1 1604 1606 +1608 or 1 698 1605 +1609 and 1 701 1608 +1610 or 1 1607 1609 +1611 and 1 1579 -1610 +1612 or 1 701 1608 +1613 and 1 1611 1612 +1614 and 1 1409 1613 +1615 and 1 1614 -171 +1616 next 1 171 -1615 +; End + + From 3a62b6275a3c3bb87df269fb443dcd2c88e895db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sun, 6 Jul 2025 18:44:47 +0200 Subject: [PATCH 36/72] Binary operations improvement? --- .../theta/frontend/models/Btor2Operation.kt | 47 ++++++++++--------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index d9d3470beb..ec157334ba 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -132,26 +132,29 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor } override fun getExpr(): Expr<*> { - val op1_expr = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr - val op2_expr = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr + + val op1ExprLogical = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr + val op2ExprLogical = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr + val op1ExprArithmetic = if (opd1_negated) BvNegExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr + val op2ExprArithmetic = if (opd2_negated) BvNegExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr return when(operator) { - Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) - Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) - Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr))) - Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) - Btor2BinaryOperator.SUB -> BvSubExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.UREM -> BvURemExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1_expr as Expr, op2_expr as Expr)) + Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) + Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) + Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) + Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) + Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) + Btor2BinaryOperator.SUB -> BvSubExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.UREM -> BvURemExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") @@ -159,11 +162,11 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") - Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1_expr as Expr, op2_expr as Expr) - Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1_expr as Expr, op2_expr as Expr) + Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") } } From 643161cfee075ddcc5462e92b9cefbc1178f7f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Mon, 7 Jul 2025 01:12:33 +0200 Subject: [PATCH 37/72] ITE operation is the bane of my existence --- .../java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index ec157334ba..82064592c3 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -293,8 +293,8 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor //checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) val op1Expr = if (negated1) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) - val op2Expr = if (negated2) BvNotExpr.create(op2.getExpr() as Expr) else (op2.getExpr() as Expr ) - val op3Expr = if (negated3) BvNotExpr.create(op3.getExpr() as Expr) else (op3.getExpr() as Expr ) + val op2Expr = if (negated2) BvNegExpr.create(op2.getExpr() as Expr) else (op2.getExpr() as Expr ) + val op3Expr = if (negated3) BvNegExpr.create(op3.getExpr() as Expr) else (op3.getExpr() as Expr ) return when(operator) { From abb4c24ef241c1fb23580e17795463cdd09a9eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Mon, 7 Jul 2025 17:15:42 +0200 Subject: [PATCH 38/72] Unary ops statement added --- .../java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 82064592c3..dd5c4f7fc4 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -63,7 +63,7 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 } override fun getStmt(negate: Boolean): Stmt { - TODO("Not yet implemented") + return AssignStmt.of(value, getExpr() as Expr) } fun valueByBits() : List> { From 11a285f59c0eeee52300fe17f8aa9586a5d7d8ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Mon, 7 Jul 2025 17:47:25 +0200 Subject: [PATCH 39/72] Refactored Expressions and Stmts --- .../mit/theta/frontend/models/Btor2Const.kt | 3 ++- .../mit/theta/frontend/models/Btor2Model.kt | 6 ++++- .../theta/frontend/models/Btor2Operation.kt | 25 ++++++++++--------- .../theta/frontend/models/Btor2Stateful.kt | 23 ++++++++++++++++- .../Btor2XcfaBuilder.kt | 8 +++--- 5 files changed, 46 insertions(+), 19 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt index c0be2ddc97..68bf7688c0 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt @@ -21,6 +21,7 @@ import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.LitExpr import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.bvtype.BvLitExpr +import hu.bme.mit.theta.core.type.bvtype.BvType import hu.bme.mit.theta.core.type.inttype.IntLitExpr data class Btor2Const( @@ -32,7 +33,7 @@ data class Btor2Const( return null } - override fun getExpr(): Expr<*> { + override fun getExpr(): Expr { return BvLitExpr.of(value) } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index eb038bd3f6..b4dba02002 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -55,6 +55,10 @@ abstract class Btor2Node(id: UInt, btor2Sort: Btor2Sort? = null) { } abstract fun accept(visitor: Btor2NodeVisitor, param : P): R + // Constants give back a BvLitExpr + // Operations give back an Expr vagyish sokfélét de az kell nekik + // Statefuls give back RefExpr + // Properties Expr abstract fun getExpr(): Expr<*> } @@ -63,5 +67,5 @@ abstract class Btor2Sort(sid: UInt, width: UInt) { abstract val sid: UInt abstract val width: UInt } - +// Ezt egyelőre nem használjuk mert csak bitvektoraink vannak data class Btor2BitvecSort(override val sid: UInt, override val width: UInt) : Btor2Sort(sid, width) \ No newline at end of file diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index dd5c4f7fc4..4a8c78556a 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -33,7 +33,8 @@ import java.math.BigInteger abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) { - abstract fun getStmt(negate: Boolean): Stmt + // Ebben volt egy negálás de hát szinte felesleges + abstract fun getStmt(): Stmt } // Operators @@ -45,7 +46,7 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 return value } - override fun getExpr(): Expr<*> { + override fun getExpr(): Expr { val one = BvExprs.Bv(booleanArrayOf(true)) as Expr return when(operator) { @@ -62,7 +63,7 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 return visitor.visit(this, param) } - override fun getStmt(negate: Boolean): Stmt { + override fun getStmt(): Stmt { return AssignStmt.of(value, getExpr() as Expr) } @@ -85,7 +86,7 @@ data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2So return value } - override fun getExpr(): Expr<*> { + override fun getExpr(): Expr { return when(operator) { Btor2ExtOperator.SEXT -> TODO("Signed extension not implemented yet") @@ -96,7 +97,7 @@ data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2So return visitor.visit(this, param) } - override fun getStmt(negate: Boolean): Stmt { + override fun getStmt(): Stmt { TODO("Ext not yet implemented") } } @@ -109,7 +110,7 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 return value } - override fun getExpr(): Expr<*> { + override fun getExpr(): Expr { val newU : BigInteger = u + BigInteger.valueOf(1) return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(newU)) } @@ -118,7 +119,7 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 return visitor.visit(this, param) } - override fun getStmt(negate: Boolean): Stmt { + override fun getStmt(): Stmt { return AssignStmt.of(value, getExpr() as Expr) } } @@ -131,7 +132,7 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor return value } - override fun getExpr(): Expr<*> { + override fun getExpr(): Expr { val op1ExprLogical = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr val op2ExprLogical = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr @@ -175,7 +176,7 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor return visitor.visit(this, param) } - override fun getStmt(negate: Boolean): Stmt { + override fun getStmt(): Stmt { return when(operator) { Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) @@ -218,7 +219,7 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort return value } - override fun getExpr(): Expr<*> { + override fun getExpr(): Expr { val op1_expr = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr val op2_expr = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr return when(operator) @@ -261,7 +262,7 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort return visitor.visit(this, param) } - override fun getStmt(negate: Boolean): Stmt { + override fun getStmt(): Stmt { return when(operator) { Btor2ComparisonOperator.EQ -> AssignStmt.of(value,getExpr() as Expr) @@ -307,7 +308,7 @@ data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor return visitor.visit(this, param) } - override fun getStmt(negate: Boolean): Stmt { + override fun getStmt(): Stmt { return when(operator) { Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr() as Expr) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt index c7493b476e..2cc5212ec6 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt @@ -18,6 +18,9 @@ package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.Decls import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.stmt.AssignStmt +import hu.bme.mit.theta.core.stmt.HavocStmt +import hu.bme.mit.theta.core.stmt.Stmt import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.bvtype.BvExprs @@ -26,6 +29,8 @@ import hu.bme.mit.theta.core.type.bvtype.BvType abstract class Btor2Stateful(id: UInt, sort: Btor2Sort, state: Btor2State?, value: Btor2Node?) : Btor2Node(id, sort) { abstract val state: Btor2State? abstract val value: Btor2Node? + + abstract fun getStmt(): Stmt } // Inputs and States @@ -39,7 +44,11 @@ data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort, over } override fun getExpr(): Expr<*> { - return RefExpr.of(declsVar) // Valamilyen Bool type kellene? nem + return RefExpr.of(declsVar) + } + + override fun getStmt(): Stmt { + return HavocStmt.of(declsVar) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { @@ -59,6 +68,10 @@ data class Btor2State(override val nid: UInt, override val sort: Btor2Sort, over return RefExpr.of(declsVar) } + override fun getStmt(): Stmt { + TODO("We might not even need this Stmt for states") + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } @@ -77,6 +90,10 @@ data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, overr TODO("Not yet implemented") } + override fun getStmt(): Stmt { + return AssignStmt.of(state.getVar(), value.getExpr() as Expr) + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } @@ -94,6 +111,10 @@ data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, overr return RefExpr.of(declsVar) } + override fun getStmt(): Stmt { + return AssignStmt.of(state.getVar(), value.getExpr() as Expr) + } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 172b3001bc..68b6c08041 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -45,7 +45,7 @@ object Btor2XcfaBuilder{ Btor2Circuit.states.forEach { it.value.getVar()?.let{varDecl -> if(varDecl.name.startsWith(("init_"))){ - val edge = XcfaEdge(lastLoc,newLoc, StmtLabel(AssignStmt.of(it.value.state?.getVar(), it.value.value?.getExpr() as Expr)), EmptyMetaData) + val edge = XcfaEdge(lastLoc,newLoc, StmtLabel(it.value.getStmt()), EmptyMetaData) procBuilder.addEdge(edge) // Amit tudunk 1 élre helyezzük, tehát az első élen vannak az initek } @@ -62,7 +62,7 @@ object Btor2XcfaBuilder{ Btor2Circuit.states.forEach { it.value.getVar()?.let{ varDecl -> if(varDecl.name.startsWith(("input_"))){ - val edge = XcfaEdge(lastLoc, newLoc, StmtLabel(HavocStmt.of(varDecl)), EmptyMetaData) + val edge = XcfaEdge(lastLoc, newLoc, StmtLabel(it.value.getStmt()), EmptyMetaData) procBuilder.addEdge(edge) } } @@ -79,7 +79,7 @@ object Btor2XcfaBuilder{ procBuilder.addLoc(loc) - val edge = XcfaEdge(lastLoc, loc, StmtLabel(it.value.getStmt(false)), EmptyMetaData) + val edge = XcfaEdge(lastLoc, loc, StmtLabel(it.value.getStmt()), EmptyMetaData) procBuilder.addEdge(edge) i++ lastLoc=loc @@ -100,7 +100,7 @@ object Btor2XcfaBuilder{ it.value.getVar()?.let{varDecl -> if(varDecl.name.startsWith(("next_"))){ val firstLoc = procBuilder.getLocs().elementAt(1) - procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(AssignStmt.of(it.value.state?.getVar(), it.value.getExpr() as Expr)),EmptyMetaData)) + procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(it.value.getStmt()),EmptyMetaData)) } } From 828e8ca1b4e19fa2b4f80109364cf642bee23e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Mon, 7 Jul 2025 18:08:55 +0200 Subject: [PATCH 40/72] Added some resources --- .../btor2xcfa/src/test/resources/93.c.btor2 | 66 +++++++++++++++++++ .../btor2xcfa/src/test/resources/fib_30.btor2 | 40 +++++++++++ .../btor2xcfa/src/test/resources/fib_37.btor2 | 44 +++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/93.c.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/fib_30.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/fib_37.btor2 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/93.c.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/93.c.btor2 new file mode 100644 index 0000000000..20bed0191a --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/93.c.btor2 @@ -0,0 +1,66 @@ +; source: https://doi.org/10.5281/zenodo.14156844 +; BTOR description generated by Yosys 0.29+34 (git sha1 57c9eb70f, clang 10.0.0-4ubuntu1 -fPIC -Os) for module top. +1 sort bitvec 1 +2 input 1 clk ; 93.c.v:3.16-3.19 +3 input 1 rst ; 93.c.v:4.16-4.19 +4 input 1 selector ; 93.c.v:2.16-2.24 +5 sort bitvec 11 +6 const 5 00000000000 +7 state 5 i +8 init 5 7 6 +9 const 5 00000101000 +10 state 5 n +11 init 5 10 9 +12 ugte 1 7 10 +13 sort bitvec 13 +14 uext 13 10 2 +15 sort bitvec 2 +16 const 15 11 +17 uext 13 16 11 +18 mul 13 14 17 +19 sort bitvec 12 +20 state 5 x +21 init 5 20 6 +22 uext 19 20 1 +23 state 5 y +24 init 5 23 6 +25 uext 19 23 1 +26 add 19 22 25 +27 uext 13 26 1 +28 neq 1 18 27 +29 and 1 12 28 +30 not 1 29 +31 const 1 1 +32 not 1 30 +33 and 1 31 32 +34 uext 5 31 10 +35 add 5 7 34 +36 not 1 4 +37 ult 1 7 10 +38 and 1 36 37 +39 ite 5 38 35 7 +40 and 1 4 37 +41 ite 5 40 35 39 +42 ite 5 3 6 41 +43 next 5 7 42 +44 ite 5 3 9 10 +45 next 5 10 44 +46 const 15 10 +47 uext 5 46 9 +48 add 5 20 47 +49 ite 5 38 48 20 +50 uext 5 31 10 +51 add 5 20 50 +52 ite 5 40 51 49 +53 ite 5 3 6 52 +54 next 5 20 53 +55 uext 5 31 10 +56 add 5 23 55 +57 ite 5 38 56 23 +58 uext 5 46 9 +59 add 5 23 58 +60 ite 5 40 59 57 +61 ite 5 3 6 60 +62 next 5 23 61 +63 bad 33 +; end of yosys output diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/fib_30.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/fib_30.btor2 new file mode 100644 index 0000000000..38ce5f4cfe --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/fib_30.btor2 @@ -0,0 +1,40 @@ +; source: https://doi.org/10.5281/zenodo.14156844 +; BTOR description generated by Yosys 0.29+34 (git sha1 57c9eb70f, clang 10.0.0-4ubuntu1 -fPIC -Os) for module top. +1 sort bitvec 1 +2 input 1 clk ; fib_30.v:3.16-3.19 +3 input 1 rst ; fib_30.v:4.16-4.19 +4 input 1 selector ; fib_30.v:2.16-2.24 +5 sort bitvec 19 +6 const 5 0000000000000000000 +7 state 5 +8 init 5 7 6 +9 output 7 c ; fib_30.v:9.23-9.24 +10 state 5 +11 init 5 10 6 +12 output 10 i ; fib_30.v:7.23-7.24 +13 const 5 0000000000010010110 +14 state 5 +15 init 5 14 13 +16 output 14 n ; fib_30.v:8.23-8.24 +17 ult 1 10 14 +18 const 1 0 +19 uext 5 18 18 +20 ugt 1 7 19 +21 or 1 17 20 +22 const 1 1 +23 not 1 21 +24 and 1 22 23 +25 add 5 7 10 +26 ugte 1 10 14 +27 ite 5 26 7 25 +28 ite 5 3 6 27 +29 next 5 7 28 +30 uext 5 22 18 +31 add 5 10 30 +32 ite 5 26 10 31 +33 ite 5 3 6 32 +34 next 5 10 33 +35 ite 5 3 13 14 +36 next 5 14 35 +37 bad 24 +; end of yosys output diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/fib_37.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/fib_37.btor2 new file mode 100644 index 0000000000..e28b8531eb --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/fib_37.btor2 @@ -0,0 +1,44 @@ +; source: https://doi.org/10.5281/zenodo.14156844 +; BTOR description generated by Yosys 0.29+34 (git sha1 57c9eb70f, clang 10.0.0-4ubuntu1 -fPIC -Os) for module top. +1 sort bitvec 1 +2 input 1 clk ; fib_37.v:3.16-3.19 +3 input 1 rst ; fib_37.v:4.16-4.19 +4 input 1 selector ; fib_37.v:2.16-2.24 +5 sort bitvec 19 +6 const 5 0000000000000000000 +7 state 5 +8 init 5 7 6 +9 output 7 m ; fib_37.v:6.23-6.24 +10 const 5 0000000000011001000 +11 state 5 +12 init 5 11 10 +13 output 11 n ; fib_37.v:7.23-7.24 +14 state 5 +15 init 5 14 6 +16 output 14 x ; fib_37.v:8.23-8.24 +17 ult 1 14 11 +18 ult 1 7 11 +19 const 1 0 +20 uext 5 19 18 +21 ugte 1 7 20 +22 and 1 18 21 +23 or 1 17 22 +24 const 1 1 +25 not 1 23 +26 and 1 24 25 +27 ite 5 4 14 7 +28 ite 5 17 27 7 +29 ugte 1 14 11 +30 ite 5 29 7 28 +31 ite 5 3 6 30 +32 next 5 7 31 +33 ite 5 3 10 11 +34 next 5 11 33 +35 uext 5 24 18 +36 add 5 14 35 +37 ite 5 17 36 14 +38 ite 5 29 14 37 +39 ite 5 3 6 38 +40 next 5 14 39 +41 bad 26 +; end of yosys output From 5101678b69adc5cbb2183930e01c154eb2bb23c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 8 Jul 2025 16:41:15 +0200 Subject: [PATCH 41/72] Fixed some operators, bad property, decimal numbers --- .../mit/theta/frontend/models/Btor2Model.kt | 1 + .../theta/frontend/models/Btor2Operation.kt | 66 ++++++++++++++++--- .../frontend/visitors/ConstantVisitor.kt | 10 +-- .../frontend/visitors/OperationVisitor.kt | 13 +++- .../theta/frontend/visitors/StateVisitor.kt | 11 +++- 5 files changed, 83 insertions(+), 18 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index b4dba02002..823662e792 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -26,6 +26,7 @@ interface Btor2NodeVisitor { fun visit(node: Btor2SliceOperation, param: P) : R fun visit(node: Btor2ExtOperation, param: P) : R fun visit(node: Btor2Comparison, param: P) : R + fun visit(node: Btor2Boolean, param: P) : R fun visit(node: Btor2BitvecSort, param: P) : R fun visit(node: Btor2Input, param: P) : R fun visit(node: Btor2State, param: P) : R diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 4a8c78556a..e678b5d4ab 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -23,6 +23,8 @@ import hu.bme.mit.theta.core.stmt.Stmt import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.anytype.IteExpr import hu.bme.mit.theta.core.type.booltype.BoolType +import hu.bme.mit.theta.core.type.booltype.IffExpr +import hu.bme.mit.theta.core.type.booltype.ImplyExpr import hu.bme.mit.theta.core.type.bvtype.* import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg @@ -68,13 +70,14 @@ data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2 } fun valueByBits() : List> { - val expr = operand.getExpr() as BvLitExpr - val value = expr.value // BooleanArray - val cut = mutableListOf>() - for (i in value.indices) { - cut.add(BvLitExpr.of(booleanArrayOf(value[i]))) - } - return cut + //val expr = operand.getExpr() as BvLitExpr + //val value = expr.value // BooleanArray + //val cut = mutableListOf>() + //for (i in value.indices) { + // cut.add(BvLitExpr.of(booleanArrayOf(value[i]))) + //} + //return cut + TODO() } } @@ -87,18 +90,22 @@ data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2So } override fun getExpr(): Expr { + val ogLength = operand.sort?.width?.toInt() + val wLength = w.toInt() + val newLength = ogLength?.plus(wLength) ?: throw IllegalArgumentException("Operand sort width is null or not defined") return when(operator) { - Btor2ExtOperator.SEXT -> TODO("Signed extension not implemented yet") - Btor2ExtOperator.UEXT -> TODO("Unsigned extension not implemented yet") + Btor2ExtOperator.SEXT -> BvSExtExpr.create(operand.getExpr(), BvType.of(newLength)) + Btor2ExtOperator.UEXT -> BvZExtExpr.create(operand.getExpr(), BvType.of(newLength)) } } + override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } override fun getStmt(): Stmt { - TODO("Ext not yet implemented") + return AssignStmt.of(value, getExpr()) } } @@ -279,6 +286,45 @@ data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort } } +data class Btor2Boolean(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2BooleanOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) { + + val value = Decls.Var("boolean_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + return when(operator) + { + Btor2BooleanOperator.IFF -> IteExpr.of( + IffExpr.create( + if (opd1_negated) BvNotExpr.create(op1.getExpr()) else op1.getExpr(), + if (opd2_negated) BvNotExpr.create(op2.getExpr()) else op2.getExpr() + ), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }) + ) + Btor2BooleanOperator.IMPLIES -> IteExpr.of( + ImplyExpr.create( + if (opd1_negated) BvNotExpr.create(op1.getExpr()) else op1.getExpr(), + if (opd2_negated) BvNotExpr.create(op2.getExpr()) else op2.getExpr() + ), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }) + ) + } + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } + + override fun getStmt(): Stmt { + return AssignStmt.of(value, getExpr()) + } +} + // Ehhez a nidhez vezetünk be egy változót, bekötjük data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor2Sort, val operator: Btor2TernaryOperator, val op1: Btor2Node, val op2: Btor2Node, val op3: Btor2Node, diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt index 10266277f4..9c70605cd3 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -20,6 +20,7 @@ import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts +import java.math.BigInteger class ConstantVisitor : Btor2BaseVisitor() { val idVisitor = IdVisitor() @@ -48,10 +49,11 @@ class ConstantVisitor : Btor2BaseVisitor() { val nid = idVisitor.visit(ctx.id) val sid = idVisitor.visit(ctx.sid()) val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - val value = ctx.NUM().text.toInt() - val size = sort.width.toInt() - val binArray = BooleanArray(size) { index -> - ((value and ((1 shl size) - 1)) shr (size - 1 - index)) and 1 == 1 + val value = ctx.NUM().text.toBigInteger() + val size = sort.width.toLong().toBigInteger() + val binArray = BooleanArray(size.toInt()) { index -> + ((value and ((BigInteger.ONE.shiftLeft(size.toInt())) - BigInteger.ONE)) + .shiftRight(size.toInt() - 1 - index) and BigInteger.ONE) == BigInteger.ONE } var node = Btor2Const(nid, binArray, sort) Btor2Circuit.constants[nid] = node diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 6a8814fe2b..b1487d414e 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -116,8 +116,13 @@ class OperationVisitor : Btor2BaseVisitor() { "ulte" -> Btor2ComparisonOperator.ULTE "ugt" -> Btor2ComparisonOperator.UGT "ugte" -> Btor2ComparisonOperator.UGTE - else -> throw RuntimeException("Binary operator unknown") + "iff" -> Btor2BooleanOperator.IFF + "implies" -> Btor2BooleanOperator.IMPLIES + + else -> throw RuntimeException("Binary operator unknown: ${ctx.BINOP().text}") } + + if (op is Btor2ComparisonOperator) { val node = Btor2Comparison(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) Btor2Circuit.nodes[nid] = node @@ -129,6 +134,12 @@ class OperationVisitor : Btor2BaseVisitor() { Btor2Circuit.ops[nid] = node return node } + else if (op is Btor2BooleanOperator) { + // Boolean operators are not operations, but comparisons + val node = Btor2Boolean(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) + Btor2Circuit.nodes[nid] = node + return node + } else { throw RuntimeException("Binary operator unknown") } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index c0646bb885..7ef692999b 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -79,8 +79,13 @@ class StateVisitor : Btor2BaseVisitor() { override fun visitProperty(ctx: Btor2Parser.PropertyContext): Btor2Node { val nid = idVisitor.visit(ctx.id) val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) - Btor2Circuit.properties[nid] = node - Btor2Circuit.nodes[nid] = node - return node + when (ctx.property_type.text) { + "bad" -> { + Btor2Circuit.properties[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + else -> throw IllegalArgumentException("Not implemented property type: ${ctx.property_type.text}") + } } } \ No newline at end of file From 2014d7dede85235a977aeb7e763ce322cc3921d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 8 Jul 2025 16:57:42 +0200 Subject: [PATCH 42/72] Bad now has getStmt --- .../hu/bme/mit/theta/frontend/models/Btor2Properties.kt | 7 +++++++ .../java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 235e7271ba..1800067537 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -17,9 +17,12 @@ package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.stmt.AssumeStmt +import hu.bme.mit.theta.core.stmt.Stmt import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.abstracttype.EqExpr import hu.bme.mit.theta.core.type.anytype.RefExpr +import hu.bme.mit.theta.core.type.booltype.BoolExprs import hu.bme.mit.theta.core.type.booltype.BoolType import hu.bme.mit.theta.core.type.bvtype.BvEqExpr import hu.bme.mit.theta.core.type.bvtype.BvExprs @@ -41,4 +44,8 @@ data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val o override fun accept(visitor: Btor2NodeVisitor, param : P): R { return visitor.visit(this, param) } + + fun getStmt(): Stmt { + return AssumeStmt.of(BoolExprs.Not(getExpr())) + } } \ No newline at end of file diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 68b6c08041..1fb15a48d6 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -92,7 +92,7 @@ object Btor2XcfaBuilder{ procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(AssumeStmt.of(bad.getExpr())),EmptyMetaData)) newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) - procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(AssumeStmt.of(Not(bad.getExpr()))),EmptyMetaData)) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(bad.getStmt()),EmptyMetaData)) //Circuit folytatása // ha nincsen next akkor azt el kelll havocolni From c4007aaa77b5fa1ce2a72f306048c56f30ec464e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Wed, 9 Jul 2025 12:48:18 +0200 Subject: [PATCH 43/72] Slice works in some cases --- .../theta/frontend/models/Btor2Operation.kt | 5 +- .../resources/gsv2008.c.i.p+cfa-reducer.btor2 | 126 ++++++++++++++++++ 2 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/gsv2008.c.i.p+cfa-reducer.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index e678b5d4ab..474cf5fa17 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -118,8 +118,9 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 } override fun getExpr(): Expr { - val newU : BigInteger = u + BigInteger.valueOf(1) - return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(newU)) + //val newU : BigInteger = u + BigInteger.valueOf(1) + //val newL : BigInteger = l + BigInteger.valueOf(1) + return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(u)) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/gsv2008.c.i.p+cfa-reducer.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/gsv2008.c.i.p+cfa-reducer.btor2 new file mode 100644 index 0000000000..6e02071f34 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/gsv2008.c.i.p+cfa-reducer.btor2 @@ -0,0 +1,126 @@ +; source: https://gitlab.com/sosy-lab/research/data/sv-benchmarks-translation/-/tree/b404abc8f1ce5436ab1dd0532ce6a8e932f47a68 +1 sort bitvec 32 +2 sort bitvec 1 +3 sort bitvec 1 +4 constd 2 0 +5 constd 2 1 +6 input 1 !{$(in_main#0)<$(in___VERIFIER_nondet_int#0)>>} +7 input 1 !{$(in_main#0)}.next +8 input 1 !{$(in_main#0)}.next +9 input 1 !{__return_144}.next +10 input 1 !{__return_main}.next +11 input 2 !pc[0].next +12 input 2 !pc[1].next +13 input 2 !pc[2].next +14 state 1 !{$(in_main#0)} +15 state 1 !{$(in_main#0)} +16 state 1 !{__return_144} +17 state 1 !{__return_main} +18 state 2 !pc[0] +19 state 2 !pc[1] +20 state 2 !pc[2] +21 state 2 reset0 +22 state 2 valid +23 not 2 21 +24 and 2 11 12 +25 not 2 13 +26 and 2 25 24 +27 not 2 18 +28 and 2 19 27 +29 not 2 20 +30 and 2 29 28 +31 and 2 30 26 +32 constd 1 0 +33 constd 1 1 +34 slt 2 32 15 +35 ite 1 34 33 32 +36 eq 2 35 32 +37 eq 2 14 7 +38 and 2 37 36 +39 eq 2 15 8 +40 and 2 39 38 +41 eq 2 16 9 +42 and 2 41 40 +43 eq 2 17 10 +44 and 2 43 42 +45 constd 3 1 +46 slice 3 14 31 31 +47 eq 2 46 45 +48 not 2 47 +49 and 2 48 44 +50 and 2 49 31 +51 not 2 11 +52 and 2 12 51 +53 and 2 25 52 +54 and 2 53 30 +55 add 1 33 15 +56 eq 2 8 55 +57 add 1 14 15 +58 eq 2 7 57 +59 and 2 58 56 +60 and 2 41 59 +61 and 2 43 60 +62 and 2 47 61 +63 and 2 62 54 +64 or 2 63 50 +65 and 2 18 19 +66 and 2 29 65 +67 not 2 12 +68 and 2 11 67 +69 and 2 68 25 +70 and 2 69 66 +71 and 2 37 39 +72 and 2 71 41 +73 and 2 72 43 +74 and 2 73 70 +75 not 2 19 +76 and 2 27 75 +77 and 2 76 29 +78 and 2 77 53 +79 eq 2 8 6 +80 constd 1 4294967246 +81 eq 2 7 80 +82 and 2 81 79 +83 eq 2 9 32 +84 and 2 83 82 +85 eq 2 10 32 +86 and 2 85 84 +87 constd 1 1000000 +88 slt 2 6 87 +89 and 2 88 86 +90 constd 1 4294966296 +91 slt 2 90 6 +92 and 2 91 89 +93 and 2 92 78 +94 and 2 77 69 +95 not 2 88 +96 and 2 91 95 +97 not 2 91 +98 or 2 97 96 +99 and 2 98 81 +100 and 2 99 79 +101 and 2 100 83 +102 and 2 101 85 +103 and 2 102 94 +104 or 2 103 93 +105 or 2 104 74 +106 or 2 105 64 +107 and 2 106 22 +108 or 2 107 23 +109 and 2 67 51 +110 and 2 25 109 +111 or 2 21 110 +112 and 2 111 108 +113 and 2 66 22 +114 next 1 14 7 +115 next 1 15 8 +116 next 1 16 9 +117 next 1 17 10 +118 next 2 18 11 +119 next 2 19 12 +120 next 2 20 13 +121 init 2 21 4 +122 next 2 21 5 +123 init 2 22 4 +124 next 2 22 112 +125 bad 113 From cad4348928db46540e9a35bf17b9f8b60d9b318b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Wed, 9 Jul 2025 19:48:15 +0200 Subject: [PATCH 44/72] Resource added, slice might be fixed --- .../theta/frontend/models/Btor2Operation.kt | 4 +- .../theta/frontend/visitors/Btor2Visitor.kt | 10 +- .../minepump_spec4_product01.cil.btor2 | 330 ++++++++++++++++++ 3 files changed, 337 insertions(+), 7 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/minepump_spec4_product01.cil.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 474cf5fa17..66b5771bf2 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -119,8 +119,8 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 override fun getExpr(): Expr { //val newU : BigInteger = u + BigInteger.valueOf(1) - //val newL : BigInteger = l + BigInteger.valueOf(1) - return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(u)) + val newU: BigInteger = if (u == l) u + BigInteger.valueOf(1) else u + return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(newU)) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index 02b97f827c..c0f3afbba5 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -28,7 +28,7 @@ class Btor2Visitor : Btor2BaseVisitor() { private val constantVisitor = ConstantVisitor() private val operationVisitor = OperationVisitor() private val statefulVisitor = StateVisitor() - //private val logger = ConsoleLogger(Logger.Level.VERBOSE) + private val logger = ConsoleLogger(Logger.Level.VERBOSE) override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { for (child in ctx?.children!!) { @@ -39,26 +39,26 @@ class Btor2Visitor : Btor2BaseVisitor() { override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { val result = sortVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Sort visited \t") + logger.write(Logger.Level.VERBOSE, "Sort visited \t") Btor2Circuit.sorts[result.sid] = result return Btor2Circuit } override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { val result = constantVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Constant visited \t") + logger.write(Logger.Level.VERBOSE, "Constant visited \t") return Btor2Circuit } override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { val result = operationVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Operation visited \t") + logger.write(Logger.Level.VERBOSE, "Operation visited \t") return Btor2Circuit } override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { val result = statefulVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Stateful visited \t") + logger.write(Logger.Level.VERBOSE, "Stateful visited \t") return Btor2Circuit } diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/minepump_spec4_product01.cil.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/minepump_spec4_product01.cil.btor2 new file mode 100644 index 0000000000..c606c1b186 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/minepump_spec4_product01.cil.btor2 @@ -0,0 +1,330 @@ +; source: https://gitlab.com/sosy-lab/research/data/sv-benchmarks-translation/-/tree/b404abc8f1ce5436ab1dd0532ce6a8e932f47a68 +1 sort bitvec 32 +2 sort bitvec 1 +3 constd 2 0 +4 constd 2 1 +5 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in___VERIFIER_nondet_int#0)>>>>} +6 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in___VERIFIER_nondet_int#2)>>>>} +7 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in___VERIFIER_nondet_int#4)>>>>} +8 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in___VERIFIER_nondet_int#5)>>>>} +9 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_timeShift#6)<$(in___utac_acc__Specification4_spec__1#2)>>>>} +10 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_timeShift#6)<$(in___utac_acc__Specification4_spec__1#2)<$tmp.1>>>>>} +11 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#0)<$(in___utac_acc__Specification4_spec__1#2)>>>>>} +12 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#0)<$(in___utac_acc__Specification4_spec__1#2)<$tmp.1>>>>>>} +13 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#1)<$(in___utac_acc__Specification4_spec__1#2)>>>>>} +14 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#1)<$(in___utac_acc__Specification4_spec__1#2)<$tmp.1>>>>>>} +15 input 1 %{waterLevel}#2 +16 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#1)<$(in___utac_acc__Specification4_spec__1#2)<$temp.1>>>>>>}#4 +17 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#1)<$(in___utac_acc__Specification4_spec__1#2)>>>>>}#3 +18 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#1)<$(in___utac_acc__Specification4_spec__1#2)<$tmp.1>>>>>>}#3 +19 input 1 %{methaneLevelCritical}#2 +20 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$temp.1>>>}#5 +21 input 1 %{waterLevel}#4 +22 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_timeShift#6)<$(in___utac_acc__Specification4_spec__1#2)<$temp.1>>>>>}#4 +23 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_timeShift#6)<$(in___utac_acc__Specification4_spec__1#2)>>>>}#3 +24 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_timeShift#6)<$(in___utac_acc__Specification4_spec__1#2)<$tmp.1>>>>>}#3 +25 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)>>>}#1 +26 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#0)<$(in___utac_acc__Specification4_spec__1#2)<$temp.1>>>>>>}#4 +27 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#0)<$(in___utac_acc__Specification4_spec__1#2)>>>>>}#3 +28 input 1 %{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)<$(in_timeShift#0)<$(in___utac_acc__Specification4_spec__1#2)<$tmp.1>>>>>>}#3 +29 input 1 !{waterLevel}.next +30 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)>>>}.next +31 input 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)>>}.next +32 input 1 !{cleanupTimeShifts}.next +33 input 1 !{methaneLevelCritical}.next +34 input 1 !{pumpRunning}.next +35 input 1 !{systemActive}.next +36 input 2 !pc[0].next +37 input 2 !pc[1].next +38 input 2 !pc[2].next +39 state 1 !{waterLevel} +40 state 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)<$(in_cleanup#7)>>>} +41 state 1 !{$(in_main#0)<$(in_runTest#4)<$(in_test#0)>>} +42 state 1 !{cleanupTimeShifts} +43 state 1 !{methaneLevelCritical} +44 state 1 !{pumpRunning} +45 state 1 !{systemActive} +46 state 2 !pc[0] +47 state 2 !pc[1] +48 state 2 !pc[2] +49 state 2 reset0 +50 state 2 valid +51 not 2 49 +52 not 2 47 +53 and 2 46 52 +54 not 2 48 +55 and 2 54 53 +56 and 2 36 37 +57 not 2 38 +58 and 2 57 56 +59 and 2 58 55 +60 constd 1 0 +61 eq 2 30 60 +62 eq 2 29 15 +63 and 2 62 61 +64 eq 2 41 31 +65 and 2 64 63 +66 eq 2 42 32 +67 and 2 66 65 +68 eq 2 43 33 +69 and 2 68 67 +70 eq 2 44 34 +71 and 2 70 69 +72 eq 2 45 35 +73 and 2 72 71 +74 eq 2 44 28 +75 eq 2 44 27 +76 eq 2 44 26 +77 eq 2 15 60 +78 eq 2 44 60 +79 and 2 78 77 +80 and 2 79 76 +81 and 2 80 75 +82 and 2 81 74 +83 eq 2 12 28 +84 eq 2 11 27 +85 eq 2 15 26 +86 not 2 77 +87 and 2 86 85 +88 and 2 87 84 +89 and 2 88 83 +90 or 2 89 82 +91 and 2 90 73 +92 eq 2 39 15 +93 and 2 78 92 +94 constd 1 4294967295 +95 add 1 94 39 +96 eq 2 95 15 +97 slt 2 60 39 +98 and 2 97 96 +99 not 2 97 +100 and 2 99 92 +101 or 2 100 98 +102 not 2 78 +103 and 2 102 101 +104 or 2 103 93 +105 and 2 104 91 +106 constd 1 4 +107 slt 2 41 106 +108 not 2 107 +109 and 2 108 105 +110 and 2 109 59 +111 not 2 37 +112 and 2 36 111 +113 and 2 38 112 +114 and 2 55 113 +115 eq 2 30 25 +116 and 2 102 62 +117 and 2 116 115 +118 and 2 64 117 +119 and 2 66 118 +120 and 2 68 119 +121 and 2 70 120 +122 and 2 72 121 +123 and 2 77 122 +124 and 2 104 123 +125 and 2 108 124 +126 and 2 125 114 +127 and 2 112 57 +128 and 2 127 55 +129 eq 2 29 21 +130 eq 2 40 30 +131 and 2 130 129 +132 and 2 64 131 +133 and 2 66 132 +134 eq 2 33 19 +135 and 2 134 133 +136 and 2 70 135 +137 and 2 72 136 +138 eq 2 44 24 +139 eq 2 44 23 +140 eq 2 44 22 +141 eq 2 21 60 +142 and 2 78 141 +143 and 2 142 140 +144 and 2 143 139 +145 and 2 144 138 +146 eq 2 10 24 +147 eq 2 9 23 +148 eq 2 21 22 +149 not 2 141 +150 and 2 149 148 +151 and 2 150 147 +152 and 2 151 146 +153 or 2 152 145 +154 and 2 153 137 +155 eq 2 15 21 +156 and 2 78 155 +157 add 1 94 15 +158 eq 2 157 21 +159 slt 2 60 15 +160 and 2 159 158 +161 not 2 159 +162 and 2 161 155 +163 or 2 162 160 +164 and 2 102 163 +165 or 2 164 156 +166 and 2 165 154 +167 eq 2 8 20 +168 eq 2 7 60 +169 and 2 168 167 +170 eq 2 7 20 +171 not 2 168 +172 and 2 171 170 +173 or 2 172 169 +174 and 2 173 166 +175 eq 2 43 19 +176 eq 2 6 60 +177 and 2 176 175 +178 constd 1 1 +179 eq 2 19 178 +180 eq 2 43 60 +181 and 2 180 179 +182 eq 2 19 60 +183 not 2 180 +184 and 2 183 182 +185 or 2 184 181 +186 not 2 176 +187 and 2 186 185 +188 or 2 187 177 +189 and 2 188 174 +190 eq 2 5 60 +191 and 2 92 190 +192 add 1 178 39 +193 eq 2 15 192 +194 constd 1 2 +195 slt 2 39 194 +196 and 2 195 193 +197 not 2 195 +198 and 2 92 197 +199 or 2 198 196 +200 not 2 190 +201 and 2 200 199 +202 or 2 201 191 +203 and 2 202 189 +204 and 2 107 203 +205 and 2 204 128 +206 not 2 36 +207 and 2 37 206 +208 and 2 38 207 +209 and 2 55 208 +210 and 2 102 129 +211 and 2 130 210 +212 and 2 64 211 +213 and 2 66 212 +214 and 2 213 134 +215 and 2 70 214 +216 and 2 72 215 +217 and 2 141 216 +218 and 2 165 217 +219 and 2 173 218 +220 and 2 188 219 +221 and 2 202 220 +222 and 2 107 221 +223 and 2 222 209 +224 or 2 223 205 +225 or 2 224 126 +226 or 2 225 110 +227 and 2 46 47 +228 and 2 54 227 +229 and 2 57 207 +230 and 2 229 228 +231 eq 2 39 29 +232 and 2 130 231 +233 and 2 64 232 +234 and 2 66 233 +235 and 2 68 234 +236 and 2 70 235 +237 and 2 72 236 +238 add 1 94 42 +239 slt 2 40 238 +240 not 2 239 +241 and 2 240 237 +242 and 2 241 230 +243 and 2 228 58 +244 add 1 178 40 +245 eq 2 30 244 +246 and 2 62 245 +247 and 2 64 246 +248 and 2 66 247 +249 and 2 68 248 +250 and 2 70 249 +251 and 2 72 250 +252 eq 2 44 18 +253 eq 2 44 17 +254 eq 2 44 16 +255 and 2 79 254 +256 and 2 255 253 +257 and 2 256 252 +258 eq 2 14 18 +259 eq 2 13 17 +260 eq 2 15 16 +261 and 2 86 260 +262 and 2 261 259 +263 and 2 262 258 +264 or 2 263 257 +265 and 2 264 251 +266 and 2 104 265 +267 and 2 239 266 +268 and 2 267 243 +269 and 2 111 206 +270 and 2 38 269 +271 and 2 228 270 +272 and 2 130 116 +273 and 2 64 272 +274 and 2 273 66 +275 and 2 274 68 +276 and 2 275 70 +277 and 2 276 72 +278 and 2 77 277 +279 and 2 104 278 +280 and 2 239 279 +281 and 2 280 271 +282 or 2 281 268 +283 or 2 282 242 +284 not 2 46 +285 and 2 284 52 +286 and 2 285 54 +287 and 2 286 127 +288 eq 2 35 178 +289 eq 2 34 60 +290 eq 2 33 60 +291 eq 2 32 106 +292 eq 2 31 60 +293 eq 2 29 178 +294 and 2 293 130 +295 and 2 294 292 +296 and 2 295 291 +297 and 2 296 290 +298 and 2 297 289 +299 and 2 298 288 +300 and 2 299 287 +301 or 2 300 283 +302 or 2 301 226 +303 and 2 302 50 +304 or 2 303 51 +305 and 2 57 269 +306 or 2 49 305 +307 and 2 306 304 +308 and 2 48 53 +309 and 2 48 285 +310 or 2 309 308 +311 and 2 47 284 +312 and 2 48 311 +313 or 2 312 310 +314 and 2 313 50 +315 next 1 39 29 +316 next 1 40 30 +317 next 1 41 31 +318 next 1 42 32 +319 next 1 43 33 +320 next 1 44 34 +321 next 1 45 35 +322 next 2 46 36 +323 next 2 47 37 +324 next 2 48 38 +325 init 2 49 3 +326 next 2 49 4 +327 init 2 50 3 +328 next 2 50 307 +329 bad 314 From 98598f8fcfe96cd1c90e013c93beda12317f5989 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 9 Jul 2025 22:30:49 +0200 Subject: [PATCH 45/72] fix typo in grammar --- subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index aef8ddedbe..f8d1cecc91 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -21,7 +21,7 @@ BINOP: 'and' | 'nand' | 'nor' | 'or' | 'xnor' | 'xor' | 'iff' | 'implies' NUM: (MINUS)? (HEX | BIN | DEC); HEX: [0-9a-fA-F]+; BIN: [0-1]+; -DEC: [0-9]; +DEC: [0-9]+; PLUS: '+'; MINUS: '-'; SYMBOL: ~[ \r\n]+; From ca86a27090c0955d3cef17386ac75b6ab0359947 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 9 Jul 2025 23:13:41 +0200 Subject: [PATCH 46/72] patched btor2 grammar symbol issue; improved check message --- .../frontends/btor2-frontend/src/main/antlr/Btor2.g4 | 7 ++++--- .../java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 index f8d1cecc91..3668cbccdd 100644 --- a/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 +++ b/subprojects/frontends/btor2-frontend/src/main/antlr/Btor2.g4 @@ -24,11 +24,12 @@ BIN: [0-1]+; DEC: [0-9]+; PLUS: '+'; MINUS: '-'; -SYMBOL: ~[ \r\n]+; COMMENT: ';' ~[\r\n]+; +SYMBOL: ~[ \r\n]+; +NEWLINE: [\r\n]+; // Parser rules -btor2: (line '\n')* line ('\n')*; +btor2: (line NEWLINE)* line (NEWLINE)* EOF; line: comment | node (symbol)? (comment)?; @@ -70,4 +71,4 @@ constant_d: id=nid 'constd' sid dec=NUM; constant_h: id=nid 'consth' sid hex=NUM; filled_constant: id=nid fill=('one' | 'ones' | 'zero') sid; -symbol: SYMBOL; \ No newline at end of file +symbol: (SYMBOL | NUM); \ No newline at end of file diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 1fb15a48d6..ff7ed34ff9 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -15,7 +15,8 @@ import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager object Btor2XcfaBuilder{ fun btor2xcfa(circuit: Btor2Circuit) : XCFA { // checks fontos: nodes, ops, properties csak 1 legyen - check(Btor2Circuit.properties.size == 1, { "More than 1 bad isn't allowed" }) + check(Btor2Circuit.properties.size != 0, { "Circuit has no error property" }) + check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) val ops = Btor2Circuit.ops.values.toList() for(i in 1 until ops.size) { check(ops[i].nid > ops[i - 1].nid, { "Ops are not in increasing order" }) From 2f5b06e24c2e51eb6f54bbc895f864d951af4b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Thu, 10 Jul 2025 22:24:00 +0200 Subject: [PATCH 47/72] Slice, next update --- .../theta/frontend/models/Btor2Operation.kt | 4 +- .../theta/frontend/models/Btor2Stateful.kt | 7 +- .../theta/frontend/visitors/Btor2Visitor.kt | 10 +- .../theta/frontend/visitors/StateVisitor.kt | 8 +- .../btor2xcfa/src/test/resources/93.c.btor2 | 66 - .../adding.1.prop1-back-serstep.btor2 | 179 ++ .../adding.1.prop1-func-interl.btor2 | 144 ++ .../anderson.1.prop1-back-serstep.btor2 | 340 ---- .../anderson.1.prop1-func-interl.btor2 | 286 --- .../anderson.2.prop1-back-serstep.btor2 | 504 ----- .../anderson.2.prop1-func-interl.btor2 | 422 ---- .../anderson.3.prop1-back-serstep.btor2 | 519 ----- .../anderson.3.prop1-func-interl.btor2 | 440 ---- .../anderson.4.prop1-back-serstep.btor2 | 690 ------- .../anderson.4.prop1-func-interl.btor2 | 582 ------ .../anderson.5.prop1-back-serstep.btor2 | 925 --------- .../anderson.5.prop1-func-interl.btor2 | 796 -------- .../anderson.6.prop1-back-serstep.btor2 | 1104 ---------- .../anderson.6.prop1-func-interl.btor2 | 944 --------- .../anderson.7.prop1-back-serstep.btor2 | 1152 ----------- .../anderson.7.prop1-func-interl.btor2 | 998 --------- .../anderson.8.prop1-back-serstep.btor2 | 1332 ------------ .../anderson.8.prop1-func-interl.btor2 | 1146 ----------- .../resources/at.6.prop1-back-serstep.btor2 | 1508 -------------- .../resources/at.6.prop1-func-interl.btor2 | 1359 ------------- .../resources/at.7.prop1-back-serstep.btor2 | 1796 ----------------- .../resources/at.7.prop1-func-interl.btor2 | 1621 --------------- .../btor2xcfa/src/test/resources/fib_30.btor2 | 40 - .../btor2xcfa/src/test/resources/fib_37.btor2 | 44 - 29 files changed, 341 insertions(+), 18625 deletions(-) delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/93.c.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-back-serstep.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-func-interl.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/fib_30.btor2 delete mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/fib_37.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 66b5771bf2..7d31b46fc1 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -118,8 +118,8 @@ data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2 } override fun getExpr(): Expr { - //val newU : BigInteger = u + BigInteger.valueOf(1) - val newU: BigInteger = if (u == l) u + BigInteger.valueOf(1) else u + val newU : BigInteger = u + BigInteger.valueOf(1) + //val newU: BigInteger = if (u == l) u + BigInteger.valueOf(1) else u return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(newU)) } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt index 2cc5212ec6..b860147208 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt @@ -24,6 +24,7 @@ import hu.bme.mit.theta.core.stmt.Stmt import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.bvtype.BvExprs +import hu.bme.mit.theta.core.type.bvtype.BvNotExpr import hu.bme.mit.theta.core.type.bvtype.BvType abstract class Btor2Stateful(id: UInt, sort: Btor2Sort, state: Btor2State?, value: Btor2Node?) : Btor2Node(id, sort) { @@ -99,7 +100,8 @@ data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, overr } } -data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State, override val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) +data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State, override val value: Btor2Node, + val negated: Boolean) : Btor2Stateful(nid, sort, state, value) { val declsVar = Decls.Var("next_$nid", BvExprs.BvType(sort.width.toInt())) @@ -112,7 +114,8 @@ data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, overr } override fun getStmt(): Stmt { - return AssignStmt.of(state.getVar(), value.getExpr() as Expr) + return if (negated) AssignStmt.of(state.getVar(), BvNotExpr.create(value.getExpr())) else + AssignStmt.of(state.getVar(), value.getExpr() as Expr) } override fun accept(visitor: Btor2NodeVisitor, param : P): R { diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index c0f3afbba5..02b97f827c 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -28,7 +28,7 @@ class Btor2Visitor : Btor2BaseVisitor() { private val constantVisitor = ConstantVisitor() private val operationVisitor = OperationVisitor() private val statefulVisitor = StateVisitor() - private val logger = ConsoleLogger(Logger.Level.VERBOSE) + //private val logger = ConsoleLogger(Logger.Level.VERBOSE) override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { for (child in ctx?.children!!) { @@ -39,26 +39,26 @@ class Btor2Visitor : Btor2BaseVisitor() { override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { val result = sortVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Sort visited \t") + //logger.write(Logger.Level.VERBOSE, "Sort visited \t") Btor2Circuit.sorts[result.sid] = result return Btor2Circuit } override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { val result = constantVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Constant visited \t") + //logger.write(Logger.Level.VERBOSE, "Constant visited \t") return Btor2Circuit } override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { val result = operationVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Operation visited \t") + //logger.write(Logger.Level.VERBOSE, "Operation visited \t") return Btor2Circuit } override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { val result = statefulVisitor.visit(ctx) - logger.write(Logger.Level.VERBOSE, "Stateful visited \t") + //logger.write(Logger.Level.VERBOSE, "Stateful visited \t") return Btor2Circuit } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index 7ef692999b..1096a1818d 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -19,6 +19,7 @@ package hu.bme.mit.theta.frontend.visitors import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* +import kotlin.math.abs class StateVisitor : Btor2BaseVisitor() { private val idVisitor = IdVisitor() @@ -68,9 +69,12 @@ class StateVisitor : Btor2BaseVisitor() { val sid = idVisitor.visit(ctx.sid()) val sort = Btor2Circuit.sorts[sid] as Btor2Sort + val param2_id = ctx.param2.text.toInt() + + val param2_negated = param2_id < 0 val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State - val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Node - val node = Btor2Next(nid, sort, param1, param2) + val param2 = Btor2Circuit.nodes[abs(param2_id).toUInt()] as Btor2Node + val node = Btor2Next(nid, sort, param1, param2, param2_negated) Btor2Circuit.states[nid] = node Btor2Circuit.nodes[nid] = node return node diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/93.c.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/93.c.btor2 deleted file mode 100644 index 20bed0191a..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/93.c.btor2 +++ /dev/null @@ -1,66 +0,0 @@ -; source: https://doi.org/10.5281/zenodo.14156844 -; BTOR description generated by Yosys 0.29+34 (git sha1 57c9eb70f, clang 10.0.0-4ubuntu1 -fPIC -Os) for module top. -1 sort bitvec 1 -2 input 1 clk ; 93.c.v:3.16-3.19 -3 input 1 rst ; 93.c.v:4.16-4.19 -4 input 1 selector ; 93.c.v:2.16-2.24 -5 sort bitvec 11 -6 const 5 00000000000 -7 state 5 i -8 init 5 7 6 -9 const 5 00000101000 -10 state 5 n -11 init 5 10 9 -12 ugte 1 7 10 -13 sort bitvec 13 -14 uext 13 10 2 -15 sort bitvec 2 -16 const 15 11 -17 uext 13 16 11 -18 mul 13 14 17 -19 sort bitvec 12 -20 state 5 x -21 init 5 20 6 -22 uext 19 20 1 -23 state 5 y -24 init 5 23 6 -25 uext 19 23 1 -26 add 19 22 25 -27 uext 13 26 1 -28 neq 1 18 27 -29 and 1 12 28 -30 not 1 29 -31 const 1 1 -32 not 1 30 -33 and 1 31 32 -34 uext 5 31 10 -35 add 5 7 34 -36 not 1 4 -37 ult 1 7 10 -38 and 1 36 37 -39 ite 5 38 35 7 -40 and 1 4 37 -41 ite 5 40 35 39 -42 ite 5 3 6 41 -43 next 5 7 42 -44 ite 5 3 9 10 -45 next 5 10 44 -46 const 15 10 -47 uext 5 46 9 -48 add 5 20 47 -49 ite 5 38 48 20 -50 uext 5 31 10 -51 add 5 20 50 -52 ite 5 40 51 49 -53 ite 5 3 6 52 -54 next 5 20 53 -55 uext 5 31 10 -56 add 5 23 55 -57 ite 5 38 56 23 -58 uext 5 46 9 -59 add 5 23 58 -60 ite 5 40 59 57 -61 ite 5 3 6 60 -62 next 5 23 61 -63 bad 33 -; end of yosys output diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..00e7dd28a5 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-back-serstep.btor2 @@ -0,0 +1,179 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 nextv_c +7 init 3 6 5 +8 state 3 nextv_x1 +9 init 3 8 5 +10 state 3 nextv_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 nexta_Q_a1 +14 init 1 13 12 +15 state 1 nexta_R_a1 +16 init 1 15 12 +17 state 1 nexta_S_a1 +18 init 1 17 12 +19 state 1 nexta_Q_a2 +20 init 1 19 12 +21 state 1 nexta_R_a2 +22 init 1 21 12 +23 state 1 nexta_S_a2 +24 init 1 23 12 +25 state 1 dve_initialized +26 init 1 25 12 +27 state 1 dve_valid +28 init 1 27 12 +29 and 1 13 -15 +30 and 1 29 -17 +31 and 1 30 19 +32 and 1 31 -21 +33 and 1 32 -23 +34 constd 3 1 +35 eq 1 34 6 +36 and 1 33 35 +37 constd 3 0 +38 eq 1 37 8 +39 and 1 36 38 +40 eq 1 37 10 +41 and 1 39 40 +42 and 1 27 41 +43 bad 42 +44 input 3 v_c +45 next 3 6 44 +46 input 3 v_x1 +47 next 3 8 46 +48 input 3 v_x2 +49 next 3 10 48 +50 input 1 a_Q_a1 +51 next 1 13 50 +52 input 1 a_R_a1 +53 next 1 15 52 +54 input 1 a_S_a1 +55 next 1 17 54 +56 input 1 a_Q_a2 +57 next 1 19 56 +58 input 1 a_R_a2 +59 next 1 21 58 +60 input 1 a_S_a2 +61 next 1 23 60 +62 const 1 1 +63 next 1 25 62 +64 input 1 f0 +65 constd 4 20 +66 constd 3 0 +67 concat 4 44 66 +68 constd 4 16 +69 sra 4 67 68 +70 ulte 1 65 69 +71 and 1 50 -70 +72 or 1 -64 71 +73 or 1 52 64 +74 input 1 f1 +75 or 1 73 -74 +76 and 1 72 75 +77 or 1 54 74 +78 input 1 f2 +79 or 1 77 -78 +80 and 1 76 79 +81 input 1 f3 +82 ite 3 64 44 46 +83 concat 4 82 66 +84 sra 4 83 68 +85 add 4 69 84 +86 slice 3 85 15 0 +87 ite 3 74 86 82 +88 ite 3 78 87 44 +89 concat 4 88 66 +90 sra 4 89 68 +91 ulte 1 65 90 +92 and 1 56 -91 +93 or 1 -81 92 +94 and 1 80 93 +95 or 1 58 81 +96 input 1 f4 +97 or 1 95 -96 +98 and 1 94 97 +99 or 1 60 96 +100 input 1 f5 +101 or 1 99 -100 +102 and 1 98 101 +103 or 1 64 74 +104 or 1 78 103 +105 or 1 81 104 +106 or 1 96 105 +107 or 1 100 106 +108 and 1 102 107 +109 and 1 50 52 +110 or 1 50 52 +111 and 1 54 110 +112 or 1 109 111 +113 or 1 54 110 +114 and 1 -112 113 +115 and 1 56 58 +116 or 1 56 58 +117 and 1 60 116 +118 or 1 115 117 +119 and 1 114 -118 +120 or 1 60 116 +121 and 1 119 120 +122 and 1 108 121 +123 and 1 73 -74 +124 and 1 50 -64 +125 or 1 124 78 +126 and 1 123 125 +127 and 1 77 -78 +128 or 1 123 125 +129 and 1 127 128 +130 or 1 126 129 +131 or 1 127 128 +132 and 1 -130 131 +133 and 1 95 -96 +134 and 1 56 -81 +135 or 1 134 100 +136 and 1 133 135 +137 and 1 99 -100 +138 or 1 133 135 +139 and 1 137 138 +140 or 1 136 139 +141 and 1 132 -140 +142 or 1 137 138 +143 and 1 141 142 +144 and 1 122 143 +145 ite 3 81 88 48 +146 concat 4 145 66 +147 sra 4 146 68 +148 add 4 90 147 +149 slice 3 148 15 0 +150 ite 3 96 149 145 +151 ite 3 100 150 88 +152 eq 1 151 6 +153 and 1 144 152 +154 eq 1 87 8 +155 and 1 153 154 +156 eq 1 150 10 +157 and 1 155 156 +158 eq 1 125 13 +159 and 1 157 158 +160 eq 1 123 15 +161 and 1 159 160 +162 eq 1 127 17 +163 and 1 161 162 +164 eq 1 135 19 +165 and 1 163 164 +166 eq 1 133 21 +167 and 1 165 166 +168 eq 1 137 23 +169 and 1 167 168 +170 and 1 169 27 +171 constd 4 17 +172 eq 1 171 69 +173 ite 1 25 170 172 +174 next 1 27 173 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 new file mode 100644 index 0000000000..5b600358b7 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.1.prop1-func-interl.btor2 @@ -0,0 +1,144 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 v_c +7 init 3 6 5 +8 state 3 v_x1 +9 init 3 8 5 +10 state 3 v_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 a_Q_a1 +14 init 1 13 12 +15 state 1 a_R_a1 +16 init 1 15 12 +17 state 1 a_S_a1 +18 init 1 17 12 +19 state 1 a_Q_a2 +20 init 1 19 12 +21 state 1 a_R_a2 +22 init 1 21 12 +23 state 1 a_S_a2 +24 init 1 23 12 +25 state 1 dve_invalid +26 init 1 25 12 +27 constd 4 17 +28 constd 3 1 +29 xor 3 28 6 +30 constd 3 0 +31 concat 4 29 30 +32 constd 4 16 +33 sra 4 31 32 +34 eq 1 27 33 +35 and 1 -25 34 +36 bad 35 +37 input 1 f5 +38 input 1 f2 +39 ite 3 38 8 29 +40 ite 3 37 10 39 +41 xor 3 28 40 +42 next 3 6 41 +43 input 1 f1 +44 concat 4 8 30 +45 sra 4 44 32 +46 add 4 33 45 +47 slice 3 46 15 0 +48 input 1 f0 +49 ite 3 48 29 8 +50 ite 3 43 47 49 +51 next 3 8 50 +52 input 1 f4 +53 concat 4 10 30 +54 sra 4 53 32 +55 add 4 33 54 +56 slice 3 55 15 0 +57 input 1 f3 +58 ite 3 57 29 10 +59 ite 3 52 56 58 +60 next 3 10 59 +61 and 1 -13 -48 +62 or 1 61 38 +63 next 1 13 -62 +64 or 1 15 48 +65 and 1 64 -43 +66 next 1 15 65 +67 or 1 17 43 +68 and 1 67 -38 +69 next 1 17 68 +70 and 1 -19 -57 +71 or 1 70 37 +72 next 1 19 -71 +73 or 1 21 57 +74 and 1 73 -52 +75 next 1 21 74 +76 or 1 23 52 +77 and 1 76 -37 +78 next 1 23 77 +79 constd 4 20 +80 ulte 1 79 33 +81 and 1 -13 -80 +82 or 1 -48 81 +83 or 1 15 -43 +84 and 1 82 83 +85 or 1 17 -38 +86 and 1 84 85 +87 and 1 -19 -80 +88 or 1 -57 87 +89 and 1 86 88 +90 or 1 21 -52 +91 and 1 89 90 +92 or 1 23 -37 +93 and 1 91 92 +94 or 1 48 43 +95 or 1 38 94 +96 or 1 57 95 +97 or 1 52 96 +98 or 1 37 97 +99 and 1 93 98 +100 and 1 48 43 +101 and 1 38 94 +102 or 1 100 101 +103 and 1 57 95 +104 or 1 102 103 +105 and 1 52 96 +106 or 1 104 105 +107 and 1 37 97 +108 or 1 106 107 +109 and 1 99 -108 +110 and 1 -13 15 +111 or 1 -13 15 +112 and 1 17 111 +113 or 1 110 112 +114 or 1 17 111 +115 and 1 -113 114 +116 and 1 -19 21 +117 or 1 -19 21 +118 and 1 23 117 +119 or 1 116 118 +120 and 1 115 -119 +121 or 1 23 117 +122 and 1 120 121 +123 and 1 109 122 +124 and 1 65 62 +125 or 1 65 62 +126 and 1 68 125 +127 or 1 124 126 +128 or 1 68 125 +129 and 1 -127 128 +130 and 1 74 71 +131 or 1 74 71 +132 and 1 77 131 +133 or 1 130 132 +134 and 1 129 -133 +135 or 1 77 131 +136 and 1 134 135 +137 and 1 123 136 +138 and 1 137 -25 +139 next 1 25 -138 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 deleted file mode 100644 index 09f82a14cb..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 +++ /dev/null @@ -1,340 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_Slot_0 -7 init 2 6 5 -8 state 2 nextv_Slot_1 -9 init 2 8 5 -10 state 2 nextv_next -11 init 2 10 5 -12 state 2 nextv_my_place_P_0 -13 init 2 12 5 -14 state 2 nextv_my_place_P_1 -15 init 2 14 5 -16 zero 1 -17 state 1 nexta_NCS_P_0 -18 init 1 17 16 -19 state 1 nexta_p1_P_0 -20 init 1 19 16 -21 state 1 nexta_p2_P_0 -22 init 1 21 16 -23 state 1 nexta_p3_P_0 -24 init 1 23 16 -25 state 1 nexta_CS_P_0 -26 init 1 25 16 -27 state 1 nexta_NCS_P_1 -28 init 1 27 16 -29 state 1 nexta_p1_P_1 -30 init 1 29 16 -31 state 1 nexta_p2_P_1 -32 init 1 31 16 -33 state 1 nexta_p3_P_1 -34 init 1 33 16 -35 state 1 nexta_CS_P_1 -36 init 1 35 16 -37 state 1 dve_initialized -38 init 1 37 16 -39 state 1 dve_valid -40 init 1 39 16 -41 and 1 17 -19 -42 and 1 41 -21 -43 and 1 42 -23 -44 and 1 43 -25 -45 and 1 44 27 -46 and 1 45 -29 -47 and 1 46 -31 -48 and 1 47 -33 -49 and 1 48 -35 -50 constd 2 1 -51 eq 1 50 6 -52 and 1 49 51 -53 constd 2 0 -54 eq 1 53 8 -55 and 1 52 54 -56 eq 1 53 10 -57 and 1 55 56 -58 eq 1 53 12 -59 and 1 57 58 -60 eq 1 53 14 -61 and 1 59 60 -62 and 1 39 61 -63 bad 62 -64 input 2 v_Slot_0 -65 next 2 6 64 -66 input 2 v_Slot_1 -67 next 2 8 66 -68 input 2 v_next -69 next 2 10 68 -70 input 2 v_my_place_P_0 -71 next 2 12 70 -72 input 2 v_my_place_P_1 -73 next 2 14 72 -74 input 1 a_NCS_P_0 -75 next 1 17 74 -76 input 1 a_p1_P_0 -77 next 1 19 76 -78 input 1 a_p2_P_0 -79 next 1 21 78 -80 input 1 a_p3_P_0 -81 next 1 23 80 -82 input 1 a_CS_P_0 -83 next 1 25 82 -84 input 1 a_NCS_P_1 -85 next 1 27 84 -86 input 1 a_p1_P_1 -87 next 1 29 86 -88 input 1 a_p2_P_1 -89 next 1 31 88 -90 input 1 a_p3_P_1 -91 next 1 33 90 -92 input 1 a_CS_P_1 -93 next 1 35 92 -94 const 1 1 -95 next 1 37 94 -96 input 1 f00 -97 or 1 74 -96 -98 input 1 f01 -99 or 1 76 96 -100 ite 2 96 68 70 -101 eq 1 50 100 -102 and 1 99 101 -103 or 1 -98 102 -104 and 1 97 103 -105 input 1 f02 -106 and 1 99 -98 -107 and 1 -101 106 -108 or 1 -105 107 -109 and 1 104 108 -110 input 1 f03 -111 or 1 78 98 -112 or 1 111 105 -113 constd 3 0 -114 concat 4 113 100 -115 constd 4 2 -116 srem 4 114 115 -117 slice 2 116 7 0 -118 ite 2 105 117 100 -119 eq 1 53 118 -120 ite 2 119 64 66 -121 eq 1 50 120 -122 and 1 112 121 -123 or 1 -110 122 -124 and 1 109 123 -125 or 1 80 110 -126 input 1 f04 -127 or 1 125 -126 -128 and 1 124 127 -129 or 1 82 126 -130 input 1 f05 -131 or 1 129 -130 -132 and 1 128 131 -133 input 1 f06 -134 or 1 84 -133 -135 and 1 132 134 -136 input 1 f07 -137 or 1 86 133 -138 constd 4 1 -139 concat 4 113 68 -140 add 4 138 139 -141 slice 2 140 7 0 -142 ite 2 96 141 68 -143 concat 4 113 142 -144 sub 4 143 115 -145 slice 2 144 7 0 -146 ite 2 98 145 142 -147 ite 2 133 146 72 -148 eq 1 50 147 -149 and 1 137 148 -150 or 1 -136 149 -151 and 1 135 150 -152 input 1 f08 -153 and 1 137 -136 -154 and 1 -148 153 -155 or 1 -152 154 -156 and 1 151 155 -157 input 1 f09 -158 or 1 88 136 -159 or 1 158 152 -160 concat 4 113 147 -161 srem 4 160 115 -162 slice 2 161 7 0 -163 ite 2 152 162 147 -164 eq 1 53 163 -165 constd 4 0 -166 concat 4 113 118 -167 add 4 138 166 -168 srem 4 167 115 -169 eq 1 165 168 -170 and 1 130 169 -171 add 4 115 166 -172 sub 4 171 138 -173 srem 4 172 115 -174 eq 1 165 173 -175 and 1 126 174 -176 ite 2 175 53 64 -177 ite 2 170 50 176 -178 eq 1 138 168 -179 and 1 130 178 -180 eq 1 138 173 -181 and 1 126 180 -182 ite 2 181 53 66 -183 ite 2 179 50 182 -184 ite 2 164 177 183 -185 eq 1 50 184 -186 and 1 159 185 -187 or 1 -157 186 -188 and 1 156 187 -189 or 1 90 157 -190 input 1 f10 -191 or 1 189 -190 -192 and 1 188 191 -193 or 1 92 190 -194 input 1 f11 -195 or 1 193 -194 -196 and 1 192 195 -197 or 1 96 98 -198 or 1 105 197 -199 or 1 110 198 -200 or 1 126 199 -201 or 1 130 200 -202 or 1 133 201 -203 or 1 136 202 -204 or 1 152 203 -205 or 1 157 204 -206 or 1 190 205 -207 or 1 194 206 -208 and 1 196 207 -209 and 1 74 76 -210 or 1 74 76 -211 and 1 78 210 -212 or 1 209 211 -213 or 1 78 210 -214 and 1 80 213 -215 or 1 212 214 -216 or 1 80 213 -217 and 1 82 216 -218 or 1 215 217 -219 or 1 82 216 -220 and 1 -218 219 -221 and 1 84 86 -222 or 1 84 86 -223 and 1 88 222 -224 or 1 221 223 -225 or 1 88 222 -226 and 1 90 225 -227 or 1 224 226 -228 or 1 90 225 -229 and 1 92 228 -230 or 1 227 229 -231 and 1 220 -230 -232 or 1 92 228 -233 and 1 231 232 -234 and 1 208 233 -235 and 1 106 -105 -236 and 1 74 -96 -237 or 1 236 130 -238 and 1 235 237 -239 and 1 112 -110 -240 or 1 235 237 -241 and 1 239 240 -242 or 1 238 241 -243 and 1 125 -126 -244 or 1 239 240 -245 and 1 243 244 -246 or 1 242 245 -247 and 1 129 -130 -248 or 1 243 244 -249 and 1 247 248 -250 or 1 246 249 -251 or 1 247 248 -252 and 1 -250 251 -253 and 1 153 -152 -254 and 1 84 -133 -255 or 1 254 194 -256 and 1 253 255 -257 and 1 159 -157 -258 or 1 253 255 -259 and 1 257 258 -260 or 1 256 259 -261 and 1 189 -190 -262 or 1 257 258 -263 and 1 261 262 -264 or 1 260 263 -265 and 1 193 -194 -266 or 1 261 262 -267 and 1 265 266 -268 or 1 264 267 -269 and 1 252 -268 -270 or 1 265 266 -271 and 1 269 270 -272 and 1 234 271 -273 concat 4 113 163 -274 add 4 138 273 -275 srem 4 274 115 -276 eq 1 165 275 -277 and 1 194 276 -278 add 4 115 273 -279 sub 4 278 138 -280 srem 4 279 115 -281 eq 1 165 280 -282 and 1 190 281 -283 ite 2 282 53 177 -284 ite 2 277 50 283 -285 eq 1 284 6 -286 and 1 272 285 -287 eq 1 138 275 -288 and 1 194 287 -289 eq 1 138 280 -290 and 1 190 289 -291 ite 2 290 53 183 -292 ite 2 288 50 291 -293 eq 1 292 8 -294 and 1 286 293 -295 concat 4 113 146 -296 add 4 138 295 -297 slice 2 296 7 0 -298 ite 2 133 297 146 -299 concat 4 113 298 -300 sub 4 299 115 -301 slice 2 300 7 0 -302 ite 2 136 301 298 -303 eq 1 302 10 -304 and 1 294 303 -305 eq 1 118 12 -306 and 1 304 305 -307 eq 1 163 14 -308 and 1 306 307 -309 eq 1 237 17 -310 and 1 308 309 -311 eq 1 235 19 -312 and 1 310 311 -313 eq 1 239 21 -314 and 1 312 313 -315 eq 1 243 23 -316 and 1 314 315 -317 eq 1 247 25 -318 and 1 316 317 -319 eq 1 255 27 -320 and 1 318 319 -321 eq 1 253 29 -322 and 1 320 321 -323 eq 1 257 31 -324 and 1 322 323 -325 eq 1 261 33 -326 and 1 324 325 -327 eq 1 265 35 -328 and 1 326 327 -329 and 1 328 39 -330 ite 4 82 138 165 -331 ite 4 92 138 165 -332 add 4 330 331 -333 ulte 1 332 138 -334 ite 1 37 329 -333 -335 next 1 39 334 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-func-interl.btor2 deleted file mode 100644 index f266c2b286..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-func-interl.btor2 +++ /dev/null @@ -1,286 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_Slot_0 -7 init 2 6 5 -8 state 2 v_Slot_1 -9 init 2 8 5 -10 state 2 v_next -11 init 2 10 5 -12 state 2 v_my_place_P_0 -13 init 2 12 5 -14 state 2 v_my_place_P_1 -15 init 2 14 5 -16 zero 1 -17 state 1 a_NCS_P_0 -18 init 1 17 16 -19 state 1 a_p1_P_0 -20 init 1 19 16 -21 state 1 a_p2_P_0 -22 init 1 21 16 -23 state 1 a_p3_P_0 -24 init 1 23 16 -25 state 1 a_CS_P_0 -26 init 1 25 16 -27 state 1 a_NCS_P_1 -28 init 1 27 16 -29 state 1 a_p1_P_1 -30 init 1 29 16 -31 state 1 a_p2_P_1 -32 init 1 31 16 -33 state 1 a_p3_P_1 -34 init 1 33 16 -35 state 1 a_CS_P_1 -36 init 1 35 16 -37 state 1 dve_invalid -38 init 1 37 16 -39 constd 4 1 -40 constd 4 0 -41 ite 4 25 39 40 -42 ite 4 35 39 40 -43 add 4 41 42 -44 ulte 1 43 39 -45 and 1 -37 -44 -46 bad 45 -47 constd 2 1 -48 input 1 f11 -49 constd 3 0 -50 concat 4 49 14 -51 add 4 39 50 -52 constd 4 2 -53 srem 4 51 52 -54 eq 1 40 53 -55 and 1 48 54 -56 input 1 f10 -57 add 4 52 50 -58 sub 4 57 39 -59 srem 4 58 52 -60 eq 1 40 59 -61 and 1 56 60 -62 constd 2 0 -63 input 1 f05 -64 concat 4 49 12 -65 add 4 39 64 -66 srem 4 65 52 -67 eq 1 40 66 -68 and 1 63 67 -69 input 1 f04 -70 add 4 52 64 -71 sub 4 70 39 -72 srem 4 71 52 -73 eq 1 40 72 -74 and 1 69 73 -75 xor 2 47 6 -76 ite 2 74 62 75 -77 ite 2 68 47 76 -78 ite 2 61 62 77 -79 ite 2 55 47 78 -80 xor 2 47 79 -81 next 2 6 80 -82 eq 1 39 53 -83 and 1 48 82 -84 eq 1 39 59 -85 and 1 56 84 -86 eq 1 39 66 -87 and 1 63 86 -88 eq 1 39 72 -89 and 1 69 88 -90 ite 2 89 62 8 -91 ite 2 87 47 90 -92 ite 2 85 62 91 -93 ite 2 83 47 92 -94 next 2 8 93 -95 input 1 f07 -96 concat 4 49 10 -97 sub 4 96 52 -98 slice 2 97 7 0 -99 input 1 f06 -100 add 4 39 96 -101 slice 2 100 7 0 -102 input 1 f01 -103 input 1 f00 -104 ite 2 103 101 10 -105 ite 2 102 98 104 -106 ite 2 99 101 105 -107 ite 2 95 98 106 -108 next 2 10 107 -109 input 1 f02 -110 srem 4 64 52 -111 slice 2 110 7 0 -112 ite 2 103 10 12 -113 ite 2 109 111 112 -114 next 2 12 113 -115 input 1 f08 -116 srem 4 50 52 -117 slice 2 116 7 0 -118 ite 2 99 10 14 -119 ite 2 115 117 118 -120 next 2 14 119 -121 and 1 -17 -103 -122 or 1 121 63 -123 next 1 17 -122 -124 or 1 19 103 -125 and 1 124 -102 -126 and 1 125 -109 -127 next 1 19 126 -128 or 1 21 102 -129 or 1 128 109 -130 input 1 f03 -131 and 1 129 -130 -132 next 1 21 131 -133 or 1 23 130 -134 and 1 133 -69 -135 next 1 23 134 -136 or 1 25 69 -137 and 1 136 -63 -138 next 1 25 137 -139 and 1 -27 -99 -140 or 1 139 48 -141 next 1 27 -140 -142 or 1 29 99 -143 and 1 142 -95 -144 and 1 143 -115 -145 next 1 29 144 -146 or 1 31 95 -147 or 1 146 115 -148 input 1 f09 -149 and 1 147 -148 -150 next 1 31 149 -151 or 1 33 148 -152 and 1 151 -56 -153 next 1 33 152 -154 or 1 35 56 -155 and 1 154 -48 -156 next 1 35 155 -157 or 1 -17 -103 -158 eq 1 47 12 -159 and 1 19 158 -160 or 1 -102 159 -161 and 1 157 160 -162 and 1 19 -158 -163 or 1 -109 162 -164 and 1 161 163 -165 eq 1 62 12 -166 ite 2 165 75 8 -167 eq 1 47 166 -168 and 1 21 167 -169 or 1 -130 168 -170 and 1 164 169 -171 or 1 23 -69 -172 and 1 170 171 -173 or 1 25 -63 -174 and 1 172 173 -175 or 1 -27 -99 -176 and 1 174 175 -177 eq 1 47 14 -178 and 1 29 177 -179 or 1 -95 178 -180 and 1 176 179 -181 and 1 29 -177 -182 or 1 -115 181 -183 and 1 180 182 -184 eq 1 62 14 -185 ite 2 184 75 8 -186 eq 1 47 185 -187 and 1 31 186 -188 or 1 -148 187 -189 and 1 183 188 -190 or 1 33 -56 -191 and 1 189 190 -192 or 1 35 -48 -193 and 1 191 192 -194 or 1 103 102 -195 or 1 109 194 -196 or 1 130 195 -197 or 1 69 196 -198 or 1 63 197 -199 or 1 99 198 -200 or 1 95 199 -201 or 1 115 200 -202 or 1 148 201 -203 or 1 56 202 -204 or 1 48 203 -205 and 1 193 204 -206 and 1 103 102 -207 and 1 109 194 -208 or 1 206 207 -209 and 1 130 195 -210 or 1 208 209 -211 and 1 69 196 -212 or 1 210 211 -213 and 1 63 197 -214 or 1 212 213 -215 and 1 99 198 -216 or 1 214 215 -217 and 1 95 199 -218 or 1 216 217 -219 and 1 115 200 -220 or 1 218 219 -221 and 1 148 201 -222 or 1 220 221 -223 and 1 56 202 -224 or 1 222 223 -225 and 1 48 203 -226 or 1 224 225 -227 and 1 205 -226 -228 and 1 -17 19 -229 or 1 -17 19 -230 and 1 21 229 -231 or 1 228 230 -232 or 1 21 229 -233 and 1 23 232 -234 or 1 231 233 -235 or 1 23 232 -236 and 1 25 235 -237 or 1 234 236 -238 or 1 25 235 -239 and 1 -237 238 -240 and 1 -27 29 -241 or 1 -27 29 -242 and 1 31 241 -243 or 1 240 242 -244 or 1 31 241 -245 and 1 33 244 -246 or 1 243 245 -247 or 1 33 244 -248 and 1 35 247 -249 or 1 246 248 -250 and 1 239 -249 -251 or 1 35 247 -252 and 1 250 251 -253 and 1 227 252 -254 and 1 126 122 -255 or 1 126 122 -256 and 1 131 255 -257 or 1 254 256 -258 or 1 131 255 -259 and 1 134 258 -260 or 1 257 259 -261 or 1 134 258 -262 and 1 137 261 -263 or 1 260 262 -264 or 1 137 261 -265 and 1 -263 264 -266 and 1 144 140 -267 or 1 144 140 -268 and 1 149 267 -269 or 1 266 268 -270 or 1 149 267 -271 and 1 152 270 -272 or 1 269 271 -273 or 1 152 270 -274 and 1 155 273 -275 or 1 272 274 -276 and 1 265 -275 -277 or 1 155 273 -278 and 1 276 277 -279 and 1 253 278 -280 and 1 279 -37 -281 next 1 37 -280 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-back-serstep.btor2 deleted file mode 100644 index 6f7e688a62..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-back-serstep.btor2 +++ /dev/null @@ -1,504 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_Slot_0 -7 init 2 6 5 -8 state 2 nextv_Slot_1 -9 init 2 8 5 -10 state 2 nextv_Slot_2 -11 init 2 10 5 -12 state 2 nextv_next -13 init 2 12 5 -14 state 2 nextv_my_place_P_0 -15 init 2 14 5 -16 state 2 nextv_my_place_P_1 -17 init 2 16 5 -18 state 2 nextv_my_place_P_2 -19 init 2 18 5 -20 zero 1 -21 state 1 nexta_NCS_P_0 -22 init 1 21 20 -23 state 1 nexta_p1_P_0 -24 init 1 23 20 -25 state 1 nexta_p2_P_0 -26 init 1 25 20 -27 state 1 nexta_p3_P_0 -28 init 1 27 20 -29 state 1 nexta_CS_P_0 -30 init 1 29 20 -31 state 1 nexta_NCS_P_1 -32 init 1 31 20 -33 state 1 nexta_p1_P_1 -34 init 1 33 20 -35 state 1 nexta_p2_P_1 -36 init 1 35 20 -37 state 1 nexta_p3_P_1 -38 init 1 37 20 -39 state 1 nexta_CS_P_1 -40 init 1 39 20 -41 state 1 nexta_NCS_P_2 -42 init 1 41 20 -43 state 1 nexta_p1_P_2 -44 init 1 43 20 -45 state 1 nexta_p2_P_2 -46 init 1 45 20 -47 state 1 nexta_p3_P_2 -48 init 1 47 20 -49 state 1 nexta_CS_P_2 -50 init 1 49 20 -51 state 1 dve_initialized -52 init 1 51 20 -53 state 1 dve_valid -54 init 1 53 20 -55 and 1 21 -23 -56 and 1 55 -25 -57 and 1 56 -27 -58 and 1 57 -29 -59 and 1 58 31 -60 and 1 59 -33 -61 and 1 60 -35 -62 and 1 61 -37 -63 and 1 62 -39 -64 and 1 63 41 -65 and 1 64 -43 -66 and 1 65 -45 -67 and 1 66 -47 -68 and 1 67 -49 -69 constd 2 1 -70 eq 1 69 6 -71 and 1 68 70 -72 constd 2 0 -73 eq 1 72 8 -74 and 1 71 73 -75 eq 1 72 10 -76 and 1 74 75 -77 eq 1 72 12 -78 and 1 76 77 -79 eq 1 72 14 -80 and 1 78 79 -81 eq 1 72 16 -82 and 1 80 81 -83 eq 1 72 18 -84 and 1 82 83 -85 and 1 53 84 -86 bad 85 -87 input 2 v_Slot_0 -88 next 2 6 87 -89 input 2 v_Slot_1 -90 next 2 8 89 -91 input 2 v_Slot_2 -92 next 2 10 91 -93 input 2 v_next -94 next 2 12 93 -95 input 2 v_my_place_P_0 -96 next 2 14 95 -97 input 2 v_my_place_P_1 -98 next 2 16 97 -99 input 2 v_my_place_P_2 -100 next 2 18 99 -101 input 1 a_NCS_P_0 -102 next 1 21 101 -103 input 1 a_p1_P_0 -104 next 1 23 103 -105 input 1 a_p2_P_0 -106 next 1 25 105 -107 input 1 a_p3_P_0 -108 next 1 27 107 -109 input 1 a_CS_P_0 -110 next 1 29 109 -111 input 1 a_NCS_P_1 -112 next 1 31 111 -113 input 1 a_p1_P_1 -114 next 1 33 113 -115 input 1 a_p2_P_1 -116 next 1 35 115 -117 input 1 a_p3_P_1 -118 next 1 37 117 -119 input 1 a_CS_P_1 -120 next 1 39 119 -121 input 1 a_NCS_P_2 -122 next 1 41 121 -123 input 1 a_p1_P_2 -124 next 1 43 123 -125 input 1 a_p2_P_2 -126 next 1 45 125 -127 input 1 a_p3_P_2 -128 next 1 47 127 -129 input 1 a_CS_P_2 -130 next 1 49 129 -131 const 1 1 -132 next 1 51 131 -133 input 1 f00 -134 or 1 101 -133 -135 input 1 f01 -136 or 1 103 133 -137 constd 2 2 -138 ite 2 133 93 95 -139 eq 1 137 138 -140 and 1 136 139 -141 or 1 -135 140 -142 and 1 134 141 -143 input 1 f02 -144 and 1 136 -135 -145 and 1 -139 144 -146 or 1 -143 145 -147 and 1 142 146 -148 input 1 f03 -149 or 1 105 135 -150 or 1 149 143 -151 constd 3 0 -152 concat 4 151 138 -153 constd 4 3 -154 srem 4 152 153 -155 slice 2 154 7 0 -156 ite 2 143 155 138 -157 eq 1 72 156 -158 eq 1 69 156 -159 ite 2 158 89 91 -160 ite 2 157 87 159 -161 eq 1 69 160 -162 and 1 150 161 -163 or 1 -148 162 -164 and 1 147 163 -165 or 1 107 148 -166 input 1 f04 -167 or 1 165 -166 -168 and 1 164 167 -169 or 1 109 166 -170 input 1 f05 -171 or 1 169 -170 -172 and 1 168 171 -173 input 1 f06 -174 or 1 111 -173 -175 and 1 172 174 -176 input 1 f07 -177 or 1 113 173 -178 constd 4 1 -179 concat 4 151 93 -180 add 4 178 179 -181 slice 2 180 7 0 -182 ite 2 133 181 93 -183 concat 4 151 182 -184 sub 4 183 153 -185 slice 2 184 7 0 -186 ite 2 135 185 182 -187 ite 2 173 186 97 -188 eq 1 137 187 -189 and 1 177 188 -190 or 1 -176 189 -191 and 1 175 190 -192 input 1 f08 -193 and 1 177 -176 -194 and 1 -188 193 -195 or 1 -192 194 -196 and 1 191 195 -197 input 1 f09 -198 or 1 115 176 -199 or 1 198 192 -200 concat 4 151 187 -201 srem 4 200 153 -202 slice 2 201 7 0 -203 ite 2 192 202 187 -204 eq 1 72 203 -205 constd 4 0 -206 concat 4 151 156 -207 add 4 178 206 -208 srem 4 207 153 -209 eq 1 205 208 -210 and 1 170 209 -211 and 1 157 166 -212 ite 2 211 72 87 -213 ite 2 210 69 212 -214 eq 1 69 203 -215 eq 1 178 208 -216 and 1 170 215 -217 and 1 158 166 -218 ite 2 217 72 89 -219 ite 2 216 69 218 -220 constd 4 2 -221 eq 1 220 208 -222 and 1 170 221 -223 eq 1 137 156 -224 and 1 223 166 -225 ite 2 224 72 91 -226 ite 2 222 69 225 -227 ite 2 214 219 226 -228 ite 2 204 213 227 -229 eq 1 69 228 -230 and 1 199 229 -231 or 1 -197 230 -232 and 1 196 231 -233 or 1 117 197 -234 input 1 f10 -235 or 1 233 -234 -236 and 1 232 235 -237 or 1 119 234 -238 input 1 f11 -239 or 1 237 -238 -240 and 1 236 239 -241 input 1 f12 -242 or 1 121 -241 -243 and 1 240 242 -244 input 1 f13 -245 or 1 123 241 -246 concat 4 151 186 -247 add 4 178 246 -248 slice 2 247 7 0 -249 ite 2 173 248 186 -250 concat 4 151 249 -251 sub 4 250 153 -252 slice 2 251 7 0 -253 ite 2 176 252 249 -254 ite 2 241 253 99 -255 eq 1 137 254 -256 and 1 245 255 -257 or 1 -244 256 -258 and 1 243 257 -259 input 1 f14 -260 and 1 245 -244 -261 and 1 -255 260 -262 or 1 -259 261 -263 and 1 258 262 -264 input 1 f15 -265 or 1 125 244 -266 or 1 265 259 -267 concat 4 151 254 -268 srem 4 267 153 -269 slice 2 268 7 0 -270 ite 2 259 269 254 -271 eq 1 72 270 -272 concat 4 151 203 -273 add 4 178 272 -274 srem 4 273 153 -275 eq 1 205 274 -276 and 1 238 275 -277 and 1 204 234 -278 ite 2 277 72 213 -279 ite 2 276 69 278 -280 eq 1 69 270 -281 eq 1 178 274 -282 and 1 238 281 -283 and 1 214 234 -284 ite 2 283 72 219 -285 ite 2 282 69 284 -286 eq 1 220 274 -287 and 1 238 286 -288 eq 1 137 203 -289 and 1 288 234 -290 ite 2 289 72 226 -291 ite 2 287 69 290 -292 ite 2 280 285 291 -293 ite 2 271 279 292 -294 eq 1 69 293 -295 and 1 266 294 -296 or 1 -264 295 -297 and 1 263 296 -298 or 1 127 264 -299 input 1 f16 -300 or 1 298 -299 -301 and 1 297 300 -302 or 1 129 299 -303 input 1 f17 -304 or 1 302 -303 -305 and 1 301 304 -306 or 1 133 135 -307 or 1 143 306 -308 or 1 148 307 -309 or 1 166 308 -310 or 1 170 309 -311 or 1 173 310 -312 or 1 176 311 -313 or 1 192 312 -314 or 1 197 313 -315 or 1 234 314 -316 or 1 238 315 -317 or 1 241 316 -318 or 1 244 317 -319 or 1 259 318 -320 or 1 264 319 -321 or 1 299 320 -322 or 1 303 321 -323 and 1 305 322 -324 and 1 101 103 -325 or 1 101 103 -326 and 1 105 325 -327 or 1 324 326 -328 or 1 105 325 -329 and 1 107 328 -330 or 1 327 329 -331 or 1 107 328 -332 and 1 109 331 -333 or 1 330 332 -334 or 1 109 331 -335 and 1 -333 334 -336 and 1 111 113 -337 or 1 111 113 -338 and 1 115 337 -339 or 1 336 338 -340 or 1 115 337 -341 and 1 117 340 -342 or 1 339 341 -343 or 1 117 340 -344 and 1 119 343 -345 or 1 342 344 -346 and 1 335 -345 -347 or 1 119 343 -348 and 1 346 347 -349 and 1 121 123 -350 or 1 121 123 -351 and 1 125 350 -352 or 1 349 351 -353 or 1 125 350 -354 and 1 127 353 -355 or 1 352 354 -356 or 1 127 353 -357 and 1 129 356 -358 or 1 355 357 -359 and 1 348 -358 -360 or 1 129 356 -361 and 1 359 360 -362 and 1 323 361 -363 and 1 144 -143 -364 and 1 101 -133 -365 or 1 364 170 -366 and 1 363 365 -367 and 1 150 -148 -368 or 1 363 365 -369 and 1 367 368 -370 or 1 366 369 -371 and 1 165 -166 -372 or 1 367 368 -373 and 1 371 372 -374 or 1 370 373 -375 and 1 169 -170 -376 or 1 371 372 -377 and 1 375 376 -378 or 1 374 377 -379 or 1 375 376 -380 and 1 -378 379 -381 and 1 193 -192 -382 and 1 111 -173 -383 or 1 382 238 -384 and 1 381 383 -385 and 1 199 -197 -386 or 1 381 383 -387 and 1 385 386 -388 or 1 384 387 -389 and 1 233 -234 -390 or 1 385 386 -391 and 1 389 390 -392 or 1 388 391 -393 and 1 237 -238 -394 or 1 389 390 -395 and 1 393 394 -396 or 1 392 395 -397 and 1 380 -396 -398 or 1 393 394 -399 and 1 397 398 -400 and 1 260 -259 -401 and 1 121 -241 -402 or 1 401 303 -403 and 1 400 402 -404 and 1 266 -264 -405 or 1 400 402 -406 and 1 404 405 -407 or 1 403 406 -408 and 1 298 -299 -409 or 1 404 405 -410 and 1 408 409 -411 or 1 407 410 -412 and 1 302 -303 -413 or 1 408 409 -414 and 1 412 413 -415 or 1 411 414 -416 and 1 399 -415 -417 or 1 412 413 -418 and 1 416 417 -419 and 1 362 418 -420 concat 4 151 270 -421 add 4 178 420 -422 srem 4 421 153 -423 eq 1 205 422 -424 and 1 303 423 -425 and 1 271 299 -426 ite 2 425 72 279 -427 ite 2 424 69 426 -428 eq 1 427 6 -429 and 1 419 428 -430 eq 1 178 422 -431 and 1 303 430 -432 and 1 280 299 -433 ite 2 432 72 285 -434 ite 2 431 69 433 -435 eq 1 434 8 -436 and 1 429 435 -437 eq 1 220 422 -438 and 1 303 437 -439 eq 1 137 270 -440 and 1 439 299 -441 ite 2 440 72 291 -442 ite 2 438 69 441 -443 eq 1 442 10 -444 and 1 436 443 -445 concat 4 151 253 -446 add 4 178 445 -447 slice 2 446 7 0 -448 ite 2 241 447 253 -449 concat 4 151 448 -450 sub 4 449 153 -451 slice 2 450 7 0 -452 ite 2 244 451 448 -453 eq 1 452 12 -454 and 1 444 453 -455 eq 1 156 14 -456 and 1 454 455 -457 eq 1 203 16 -458 and 1 456 457 -459 eq 1 270 18 -460 and 1 458 459 -461 eq 1 365 21 -462 and 1 460 461 -463 eq 1 363 23 -464 and 1 462 463 -465 eq 1 367 25 -466 and 1 464 465 -467 eq 1 371 27 -468 and 1 466 467 -469 eq 1 375 29 -470 and 1 468 469 -471 eq 1 383 31 -472 and 1 470 471 -473 eq 1 381 33 -474 and 1 472 473 -475 eq 1 385 35 -476 and 1 474 475 -477 eq 1 389 37 -478 and 1 476 477 -479 eq 1 393 39 -480 and 1 478 479 -481 eq 1 402 41 -482 and 1 480 481 -483 eq 1 400 43 -484 and 1 482 483 -485 eq 1 404 45 -486 and 1 484 485 -487 eq 1 408 47 -488 and 1 486 487 -489 eq 1 412 49 -490 and 1 488 489 -491 and 1 490 53 -492 ite 4 109 178 205 -493 ite 4 119 178 205 -494 add 4 492 493 -495 ite 4 129 178 205 -496 add 4 494 495 -497 ulte 1 496 178 -498 ite 1 51 491 -497 -499 next 1 53 498 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-func-interl.btor2 deleted file mode 100644 index 1392fd7342..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.2.prop1-func-interl.btor2 +++ /dev/null @@ -1,422 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_Slot_0 -7 init 2 6 5 -8 state 2 v_Slot_1 -9 init 2 8 5 -10 state 2 v_Slot_2 -11 init 2 10 5 -12 state 2 v_next -13 init 2 12 5 -14 state 2 v_my_place_P_0 -15 init 2 14 5 -16 state 2 v_my_place_P_1 -17 init 2 16 5 -18 state 2 v_my_place_P_2 -19 init 2 18 5 -20 zero 1 -21 state 1 a_NCS_P_0 -22 init 1 21 20 -23 state 1 a_p1_P_0 -24 init 1 23 20 -25 state 1 a_p2_P_0 -26 init 1 25 20 -27 state 1 a_p3_P_0 -28 init 1 27 20 -29 state 1 a_CS_P_0 -30 init 1 29 20 -31 state 1 a_NCS_P_1 -32 init 1 31 20 -33 state 1 a_p1_P_1 -34 init 1 33 20 -35 state 1 a_p2_P_1 -36 init 1 35 20 -37 state 1 a_p3_P_1 -38 init 1 37 20 -39 state 1 a_CS_P_1 -40 init 1 39 20 -41 state 1 a_NCS_P_2 -42 init 1 41 20 -43 state 1 a_p1_P_2 -44 init 1 43 20 -45 state 1 a_p2_P_2 -46 init 1 45 20 -47 state 1 a_p3_P_2 -48 init 1 47 20 -49 state 1 a_CS_P_2 -50 init 1 49 20 -51 state 1 dve_invalid -52 init 1 51 20 -53 constd 4 1 -54 constd 4 0 -55 ite 4 29 53 54 -56 ite 4 39 53 54 -57 add 4 55 56 -58 ite 4 49 53 54 -59 add 4 57 58 -60 ulte 1 59 53 -61 and 1 -51 -60 -62 bad 61 -63 constd 2 1 -64 input 1 f17 -65 constd 3 0 -66 concat 4 65 18 -67 add 4 53 66 -68 constd 4 3 -69 srem 4 67 68 -70 eq 1 54 69 -71 and 1 64 70 -72 constd 2 0 -73 eq 1 72 18 -74 input 1 f16 -75 and 1 73 74 -76 input 1 f11 -77 concat 4 65 16 -78 add 4 53 77 -79 srem 4 78 68 -80 eq 1 54 79 -81 and 1 76 80 -82 eq 1 72 16 -83 input 1 f10 -84 and 1 82 83 -85 input 1 f05 -86 concat 4 65 14 -87 add 4 53 86 -88 srem 4 87 68 -89 eq 1 54 88 -90 and 1 85 89 -91 eq 1 72 14 -92 input 1 f04 -93 and 1 91 92 -94 xor 2 63 6 -95 ite 2 93 72 94 -96 ite 2 90 63 95 -97 ite 2 84 72 96 -98 ite 2 81 63 97 -99 ite 2 75 72 98 -100 ite 2 71 63 99 -101 xor 2 63 100 -102 next 2 6 101 -103 eq 1 53 69 -104 and 1 64 103 -105 eq 1 63 18 -106 and 1 105 74 -107 eq 1 53 79 -108 and 1 76 107 -109 eq 1 63 16 -110 and 1 109 83 -111 eq 1 53 88 -112 and 1 85 111 -113 eq 1 63 14 -114 and 1 113 92 -115 ite 2 114 72 8 -116 ite 2 112 63 115 -117 ite 2 110 72 116 -118 ite 2 108 63 117 -119 ite 2 106 72 118 -120 ite 2 104 63 119 -121 next 2 8 120 -122 constd 4 2 -123 eq 1 122 69 -124 and 1 64 123 -125 constd 2 2 -126 eq 1 125 18 -127 and 1 126 74 -128 eq 1 122 79 -129 and 1 76 128 -130 eq 1 125 16 -131 and 1 130 83 -132 eq 1 122 88 -133 and 1 85 132 -134 eq 1 125 14 -135 and 1 134 92 -136 ite 2 135 72 10 -137 ite 2 133 63 136 -138 ite 2 131 72 137 -139 ite 2 129 63 138 -140 ite 2 127 72 139 -141 ite 2 124 63 140 -142 next 2 10 141 -143 input 1 f13 -144 concat 4 65 12 -145 sub 4 144 68 -146 slice 2 145 7 0 -147 input 1 f12 -148 add 4 53 144 -149 slice 2 148 7 0 -150 input 1 f07 -151 input 1 f06 -152 input 1 f01 -153 input 1 f00 -154 ite 2 153 149 12 -155 ite 2 152 146 154 -156 ite 2 151 149 155 -157 ite 2 150 146 156 -158 ite 2 147 149 157 -159 ite 2 143 146 158 -160 next 2 12 159 -161 input 1 f02 -162 srem 4 86 68 -163 slice 2 162 7 0 -164 ite 2 153 12 14 -165 ite 2 161 163 164 -166 next 2 14 165 -167 input 1 f08 -168 srem 4 77 68 -169 slice 2 168 7 0 -170 ite 2 151 12 16 -171 ite 2 167 169 170 -172 next 2 16 171 -173 input 1 f14 -174 srem 4 66 68 -175 slice 2 174 7 0 -176 ite 2 147 12 18 -177 ite 2 173 175 176 -178 next 2 18 177 -179 and 1 -21 -153 -180 or 1 179 85 -181 next 1 21 -180 -182 or 1 23 153 -183 and 1 182 -152 -184 and 1 183 -161 -185 next 1 23 184 -186 or 1 25 152 -187 or 1 186 161 -188 input 1 f03 -189 and 1 187 -188 -190 next 1 25 189 -191 or 1 27 188 -192 and 1 191 -92 -193 next 1 27 192 -194 or 1 29 92 -195 and 1 194 -85 -196 next 1 29 195 -197 and 1 -31 -151 -198 or 1 197 76 -199 next 1 31 -198 -200 or 1 33 151 -201 and 1 200 -150 -202 and 1 201 -167 -203 next 1 33 202 -204 or 1 35 150 -205 or 1 204 167 -206 input 1 f09 -207 and 1 205 -206 -208 next 1 35 207 -209 or 1 37 206 -210 and 1 209 -83 -211 next 1 37 210 -212 or 1 39 83 -213 and 1 212 -76 -214 next 1 39 213 -215 and 1 -41 -147 -216 or 1 215 64 -217 next 1 41 -216 -218 or 1 43 147 -219 and 1 218 -143 -220 and 1 219 -173 -221 next 1 43 220 -222 or 1 45 143 -223 or 1 222 173 -224 input 1 f15 -225 and 1 223 -224 -226 next 1 45 225 -227 or 1 47 224 -228 and 1 227 -74 -229 next 1 47 228 -230 or 1 49 74 -231 and 1 230 -64 -232 next 1 49 231 -233 or 1 -21 -153 -234 and 1 23 134 -235 or 1 -152 234 -236 and 1 233 235 -237 and 1 23 -134 -238 or 1 -161 237 -239 and 1 236 238 -240 ite 2 113 8 10 -241 ite 2 91 94 240 -242 eq 1 63 241 -243 and 1 25 242 -244 or 1 -188 243 -245 and 1 239 244 -246 or 1 27 -92 -247 and 1 245 246 -248 or 1 29 -85 -249 and 1 247 248 -250 or 1 -31 -151 -251 and 1 249 250 -252 and 1 33 130 -253 or 1 -150 252 -254 and 1 251 253 -255 and 1 33 -130 -256 or 1 -167 255 -257 and 1 254 256 -258 ite 2 109 8 10 -259 ite 2 82 94 258 -260 eq 1 63 259 -261 and 1 35 260 -262 or 1 -206 261 -263 and 1 257 262 -264 or 1 37 -83 -265 and 1 263 264 -266 or 1 39 -76 -267 and 1 265 266 -268 or 1 -41 -147 -269 and 1 267 268 -270 and 1 43 126 -271 or 1 -143 270 -272 and 1 269 271 -273 and 1 43 -126 -274 or 1 -173 273 -275 and 1 272 274 -276 ite 2 105 8 10 -277 ite 2 73 94 276 -278 eq 1 63 277 -279 and 1 45 278 -280 or 1 -224 279 -281 and 1 275 280 -282 or 1 47 -74 -283 and 1 281 282 -284 or 1 49 -64 -285 and 1 283 284 -286 or 1 153 152 -287 or 1 161 286 -288 or 1 188 287 -289 or 1 92 288 -290 or 1 85 289 -291 or 1 151 290 -292 or 1 150 291 -293 or 1 167 292 -294 or 1 206 293 -295 or 1 83 294 -296 or 1 76 295 -297 or 1 147 296 -298 or 1 143 297 -299 or 1 173 298 -300 or 1 224 299 -301 or 1 74 300 -302 or 1 64 301 -303 and 1 285 302 -304 and 1 153 152 -305 and 1 161 286 -306 or 1 304 305 -307 and 1 188 287 -308 or 1 306 307 -309 and 1 92 288 -310 or 1 308 309 -311 and 1 85 289 -312 or 1 310 311 -313 and 1 151 290 -314 or 1 312 313 -315 and 1 150 291 -316 or 1 314 315 -317 and 1 167 292 -318 or 1 316 317 -319 and 1 206 293 -320 or 1 318 319 -321 and 1 83 294 -322 or 1 320 321 -323 and 1 76 295 -324 or 1 322 323 -325 and 1 147 296 -326 or 1 324 325 -327 and 1 143 297 -328 or 1 326 327 -329 and 1 173 298 -330 or 1 328 329 -331 and 1 224 299 -332 or 1 330 331 -333 and 1 74 300 -334 or 1 332 333 -335 and 1 64 301 -336 or 1 334 335 -337 and 1 303 -336 -338 and 1 -21 23 -339 or 1 -21 23 -340 and 1 25 339 -341 or 1 338 340 -342 or 1 25 339 -343 and 1 27 342 -344 or 1 341 343 -345 or 1 27 342 -346 and 1 29 345 -347 or 1 344 346 -348 or 1 29 345 -349 and 1 -347 348 -350 and 1 -31 33 -351 or 1 -31 33 -352 and 1 35 351 -353 or 1 350 352 -354 or 1 35 351 -355 and 1 37 354 -356 or 1 353 355 -357 or 1 37 354 -358 and 1 39 357 -359 or 1 356 358 -360 and 1 349 -359 -361 or 1 39 357 -362 and 1 360 361 -363 and 1 -41 43 -364 or 1 -41 43 -365 and 1 45 364 -366 or 1 363 365 -367 or 1 45 364 -368 and 1 47 367 -369 or 1 366 368 -370 or 1 47 367 -371 and 1 49 370 -372 or 1 369 371 -373 and 1 362 -372 -374 or 1 49 370 -375 and 1 373 374 -376 and 1 337 375 -377 and 1 184 180 -378 or 1 184 180 -379 and 1 189 378 -380 or 1 377 379 -381 or 1 189 378 -382 and 1 192 381 -383 or 1 380 382 -384 or 1 192 381 -385 and 1 195 384 -386 or 1 383 385 -387 or 1 195 384 -388 and 1 -386 387 -389 and 1 202 198 -390 or 1 202 198 -391 and 1 207 390 -392 or 1 389 391 -393 or 1 207 390 -394 and 1 210 393 -395 or 1 392 394 -396 or 1 210 393 -397 and 1 213 396 -398 or 1 395 397 -399 and 1 388 -398 -400 or 1 213 396 -401 and 1 399 400 -402 and 1 220 216 -403 or 1 220 216 -404 and 1 225 403 -405 or 1 402 404 -406 or 1 225 403 -407 and 1 228 406 -408 or 1 405 407 -409 or 1 228 406 -410 and 1 231 409 -411 or 1 408 410 -412 and 1 401 -411 -413 or 1 231 409 -414 and 1 412 413 -415 and 1 376 414 -416 and 1 415 -51 -417 next 1 51 -416 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-back-serstep.btor2 deleted file mode 100644 index 2652397887..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-back-serstep.btor2 +++ /dev/null @@ -1,519 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_Slot_0 -7 init 2 6 5 -8 state 2 nextv_Slot_1 -9 init 2 8 5 -10 state 2 nextv_Slot_2 -11 init 2 10 5 -12 state 2 nextv_next -13 init 2 12 5 -14 state 2 nextv_my_place_P_0 -15 init 2 14 5 -16 state 2 nextv_my_place_P_1 -17 init 2 16 5 -18 state 2 nextv_my_place_P_2 -19 init 2 18 5 -20 zero 1 -21 state 1 nexta_NCS_P_0 -22 init 1 21 20 -23 state 1 nexta_p1_P_0 -24 init 1 23 20 -25 state 1 nexta_p2_P_0 -26 init 1 25 20 -27 state 1 nexta_p3_P_0 -28 init 1 27 20 -29 state 1 nexta_CS_P_0 -30 init 1 29 20 -31 state 1 nexta_NCS_P_1 -32 init 1 31 20 -33 state 1 nexta_p1_P_1 -34 init 1 33 20 -35 state 1 nexta_p2_P_1 -36 init 1 35 20 -37 state 1 nexta_p3_P_1 -38 init 1 37 20 -39 state 1 nexta_CS_P_1 -40 init 1 39 20 -41 state 1 nexta_NCS_P_2 -42 init 1 41 20 -43 state 1 nexta_p1_P_2 -44 init 1 43 20 -45 state 1 nexta_p2_P_2 -46 init 1 45 20 -47 state 1 nexta_p3_P_2 -48 init 1 47 20 -49 state 1 nexta_CS_P_2 -50 init 1 49 20 -51 state 1 dve_initialized -52 init 1 51 20 -53 state 1 dve_valid -54 init 1 53 20 -55 and 1 21 -23 -56 and 1 55 -25 -57 and 1 56 -27 -58 and 1 57 -29 -59 and 1 58 31 -60 and 1 59 -33 -61 and 1 60 -35 -62 and 1 61 -37 -63 and 1 62 -39 -64 and 1 63 41 -65 and 1 64 -43 -66 and 1 65 -45 -67 and 1 66 -47 -68 and 1 67 -49 -69 constd 2 1 -70 eq 1 69 6 -71 and 1 68 70 -72 constd 2 0 -73 eq 1 72 8 -74 and 1 71 73 -75 eq 1 72 10 -76 and 1 74 75 -77 eq 1 72 12 -78 and 1 76 77 -79 eq 1 72 14 -80 and 1 78 79 -81 eq 1 72 16 -82 and 1 80 81 -83 eq 1 72 18 -84 and 1 82 83 -85 and 1 53 84 -86 bad 85 -87 input 2 v_Slot_0 -88 next 2 6 87 -89 input 2 v_Slot_1 -90 next 2 8 89 -91 input 2 v_Slot_2 -92 next 2 10 91 -93 input 2 v_next -94 next 2 12 93 -95 input 2 v_my_place_P_0 -96 next 2 14 95 -97 input 2 v_my_place_P_1 -98 next 2 16 97 -99 input 2 v_my_place_P_2 -100 next 2 18 99 -101 input 1 a_NCS_P_0 -102 next 1 21 101 -103 input 1 a_p1_P_0 -104 next 1 23 103 -105 input 1 a_p2_P_0 -106 next 1 25 105 -107 input 1 a_p3_P_0 -108 next 1 27 107 -109 input 1 a_CS_P_0 -110 next 1 29 109 -111 input 1 a_NCS_P_1 -112 next 1 31 111 -113 input 1 a_p1_P_1 -114 next 1 33 113 -115 input 1 a_p2_P_1 -116 next 1 35 115 -117 input 1 a_p3_P_1 -118 next 1 37 117 -119 input 1 a_CS_P_1 -120 next 1 39 119 -121 input 1 a_NCS_P_2 -122 next 1 41 121 -123 input 1 a_p1_P_2 -124 next 1 43 123 -125 input 1 a_p2_P_2 -126 next 1 45 125 -127 input 1 a_p3_P_2 -128 next 1 47 127 -129 input 1 a_CS_P_2 -130 next 1 49 129 -131 const 1 1 -132 next 1 51 131 -133 input 1 f00 -134 or 1 101 -133 -135 input 1 f01 -136 or 1 103 133 -137 constd 2 2 -138 ite 2 133 93 95 -139 eq 1 137 138 -140 and 1 136 139 -141 or 1 -135 140 -142 and 1 134 141 -143 input 1 f02 -144 and 1 136 -135 -145 and 1 -139 144 -146 or 1 -143 145 -147 and 1 142 146 -148 input 1 f03 -149 or 1 105 135 -150 or 1 149 143 -151 constd 3 0 -152 concat 4 151 138 -153 constd 4 3 -154 srem 4 152 153 -155 slice 2 154 7 0 -156 ite 2 143 155 138 -157 eq 1 72 156 -158 eq 1 69 156 -159 ite 2 158 89 91 -160 ite 2 157 87 159 -161 eq 1 69 160 -162 and 1 150 161 -163 or 1 -148 162 -164 and 1 147 163 -165 or 1 107 148 -166 input 1 f04 -167 or 1 165 -166 -168 and 1 164 167 -169 or 1 109 166 -170 input 1 f05 -171 or 1 169 -170 -172 and 1 168 171 -173 input 1 f06 -174 or 1 111 -173 -175 and 1 172 174 -176 input 1 f07 -177 or 1 113 173 -178 constd 4 1 -179 concat 4 151 93 -180 add 4 178 179 -181 slice 2 180 7 0 -182 ite 2 133 181 93 -183 concat 4 151 182 -184 sub 4 183 153 -185 slice 2 184 7 0 -186 ite 2 135 185 182 -187 ite 2 173 186 97 -188 eq 1 137 187 -189 and 1 177 188 -190 or 1 -176 189 -191 and 1 175 190 -192 input 1 f08 -193 and 1 177 -176 -194 and 1 -188 193 -195 or 1 -192 194 -196 and 1 191 195 -197 input 1 f09 -198 or 1 115 176 -199 or 1 198 192 -200 concat 4 151 187 -201 srem 4 200 153 -202 slice 2 201 7 0 -203 ite 2 192 202 187 -204 eq 1 72 203 -205 constd 4 0 -206 concat 4 151 156 -207 add 4 178 206 -208 srem 4 207 153 -209 eq 1 205 208 -210 and 1 170 209 -211 add 4 153 206 -212 sub 4 211 178 -213 srem 4 212 153 -214 eq 1 205 213 -215 and 1 166 214 -216 ite 2 215 72 87 -217 ite 2 210 69 216 -218 eq 1 69 203 -219 eq 1 178 208 -220 and 1 170 219 -221 eq 1 178 213 -222 and 1 166 221 -223 ite 2 222 72 89 -224 ite 2 220 69 223 -225 constd 4 2 -226 eq 1 225 208 -227 and 1 170 226 -228 eq 1 225 213 -229 and 1 166 228 -230 ite 2 229 72 91 -231 ite 2 227 69 230 -232 ite 2 218 224 231 -233 ite 2 204 217 232 -234 eq 1 69 233 -235 and 1 199 234 -236 or 1 -197 235 -237 and 1 196 236 -238 or 1 117 197 -239 input 1 f10 -240 or 1 238 -239 -241 and 1 237 240 -242 or 1 119 239 -243 input 1 f11 -244 or 1 242 -243 -245 and 1 241 244 -246 input 1 f12 -247 or 1 121 -246 -248 and 1 245 247 -249 input 1 f13 -250 or 1 123 246 -251 concat 4 151 186 -252 add 4 178 251 -253 slice 2 252 7 0 -254 ite 2 173 253 186 -255 concat 4 151 254 -256 sub 4 255 153 -257 slice 2 256 7 0 -258 ite 2 176 257 254 -259 ite 2 246 258 99 -260 eq 1 137 259 -261 and 1 250 260 -262 or 1 -249 261 -263 and 1 248 262 -264 input 1 f14 -265 and 1 250 -249 -266 and 1 -260 265 -267 or 1 -264 266 -268 and 1 263 267 -269 input 1 f15 -270 or 1 125 249 -271 or 1 270 264 -272 concat 4 151 259 -273 srem 4 272 153 -274 slice 2 273 7 0 -275 ite 2 264 274 259 -276 eq 1 72 275 -277 concat 4 151 203 -278 add 4 178 277 -279 srem 4 278 153 -280 eq 1 205 279 -281 and 1 243 280 -282 add 4 153 277 -283 sub 4 282 178 -284 srem 4 283 153 -285 eq 1 205 284 -286 and 1 239 285 -287 ite 2 286 72 217 -288 ite 2 281 69 287 -289 eq 1 69 275 -290 eq 1 178 279 -291 and 1 243 290 -292 eq 1 178 284 -293 and 1 239 292 -294 ite 2 293 72 224 -295 ite 2 291 69 294 -296 eq 1 225 279 -297 and 1 243 296 -298 eq 1 225 284 -299 and 1 239 298 -300 ite 2 299 72 231 -301 ite 2 297 69 300 -302 ite 2 289 295 301 -303 ite 2 276 288 302 -304 eq 1 69 303 -305 and 1 271 304 -306 or 1 -269 305 -307 and 1 268 306 -308 or 1 127 269 -309 input 1 f16 -310 or 1 308 -309 -311 and 1 307 310 -312 or 1 129 309 -313 input 1 f17 -314 or 1 312 -313 -315 and 1 311 314 -316 or 1 133 135 -317 or 1 143 316 -318 or 1 148 317 -319 or 1 166 318 -320 or 1 170 319 -321 or 1 173 320 -322 or 1 176 321 -323 or 1 192 322 -324 or 1 197 323 -325 or 1 239 324 -326 or 1 243 325 -327 or 1 246 326 -328 or 1 249 327 -329 or 1 264 328 -330 or 1 269 329 -331 or 1 309 330 -332 or 1 313 331 -333 and 1 315 332 -334 and 1 101 103 -335 or 1 101 103 -336 and 1 105 335 -337 or 1 334 336 -338 or 1 105 335 -339 and 1 107 338 -340 or 1 337 339 -341 or 1 107 338 -342 and 1 109 341 -343 or 1 340 342 -344 or 1 109 341 -345 and 1 -343 344 -346 and 1 111 113 -347 or 1 111 113 -348 and 1 115 347 -349 or 1 346 348 -350 or 1 115 347 -351 and 1 117 350 -352 or 1 349 351 -353 or 1 117 350 -354 and 1 119 353 -355 or 1 352 354 -356 and 1 345 -355 -357 or 1 119 353 -358 and 1 356 357 -359 and 1 121 123 -360 or 1 121 123 -361 and 1 125 360 -362 or 1 359 361 -363 or 1 125 360 -364 and 1 127 363 -365 or 1 362 364 -366 or 1 127 363 -367 and 1 129 366 -368 or 1 365 367 -369 and 1 358 -368 -370 or 1 129 366 -371 and 1 369 370 -372 and 1 333 371 -373 and 1 144 -143 -374 and 1 101 -133 -375 or 1 374 170 -376 and 1 373 375 -377 and 1 150 -148 -378 or 1 373 375 -379 and 1 377 378 -380 or 1 376 379 -381 and 1 165 -166 -382 or 1 377 378 -383 and 1 381 382 -384 or 1 380 383 -385 and 1 169 -170 -386 or 1 381 382 -387 and 1 385 386 -388 or 1 384 387 -389 or 1 385 386 -390 and 1 -388 389 -391 and 1 193 -192 -392 and 1 111 -173 -393 or 1 392 243 -394 and 1 391 393 -395 and 1 199 -197 -396 or 1 391 393 -397 and 1 395 396 -398 or 1 394 397 -399 and 1 238 -239 -400 or 1 395 396 -401 and 1 399 400 -402 or 1 398 401 -403 and 1 242 -243 -404 or 1 399 400 -405 and 1 403 404 -406 or 1 402 405 -407 and 1 390 -406 -408 or 1 403 404 -409 and 1 407 408 -410 and 1 265 -264 -411 and 1 121 -246 -412 or 1 411 313 -413 and 1 410 412 -414 and 1 271 -269 -415 or 1 410 412 -416 and 1 414 415 -417 or 1 413 416 -418 and 1 308 -309 -419 or 1 414 415 -420 and 1 418 419 -421 or 1 417 420 -422 and 1 312 -313 -423 or 1 418 419 -424 and 1 422 423 -425 or 1 421 424 -426 and 1 409 -425 -427 or 1 422 423 -428 and 1 426 427 -429 and 1 372 428 -430 concat 4 151 275 -431 add 4 178 430 -432 srem 4 431 153 -433 eq 1 205 432 -434 and 1 313 433 -435 add 4 153 430 -436 sub 4 435 178 -437 srem 4 436 153 -438 eq 1 205 437 -439 and 1 309 438 -440 ite 2 439 72 288 -441 ite 2 434 69 440 -442 eq 1 441 6 -443 and 1 429 442 -444 eq 1 178 432 -445 and 1 313 444 -446 eq 1 178 437 -447 and 1 309 446 -448 ite 2 447 72 295 -449 ite 2 445 69 448 -450 eq 1 449 8 -451 and 1 443 450 -452 eq 1 225 432 -453 and 1 313 452 -454 eq 1 225 437 -455 and 1 309 454 -456 ite 2 455 72 301 -457 ite 2 453 69 456 -458 eq 1 457 10 -459 and 1 451 458 -460 concat 4 151 258 -461 add 4 178 460 -462 slice 2 461 7 0 -463 ite 2 246 462 258 -464 concat 4 151 463 -465 sub 4 464 153 -466 slice 2 465 7 0 -467 ite 2 249 466 463 -468 eq 1 467 12 -469 and 1 459 468 -470 eq 1 156 14 -471 and 1 469 470 -472 eq 1 203 16 -473 and 1 471 472 -474 eq 1 275 18 -475 and 1 473 474 -476 eq 1 375 21 -477 and 1 475 476 -478 eq 1 373 23 -479 and 1 477 478 -480 eq 1 377 25 -481 and 1 479 480 -482 eq 1 381 27 -483 and 1 481 482 -484 eq 1 385 29 -485 and 1 483 484 -486 eq 1 393 31 -487 and 1 485 486 -488 eq 1 391 33 -489 and 1 487 488 -490 eq 1 395 35 -491 and 1 489 490 -492 eq 1 399 37 -493 and 1 491 492 -494 eq 1 403 39 -495 and 1 493 494 -496 eq 1 412 41 -497 and 1 495 496 -498 eq 1 410 43 -499 and 1 497 498 -500 eq 1 414 45 -501 and 1 499 500 -502 eq 1 418 47 -503 and 1 501 502 -504 eq 1 422 49 -505 and 1 503 504 -506 and 1 505 53 -507 ite 4 109 178 205 -508 ite 4 119 178 205 -509 add 4 507 508 -510 ite 4 129 178 205 -511 add 4 509 510 -512 ulte 1 511 178 -513 ite 1 51 506 -512 -514 next 1 53 513 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-func-interl.btor2 deleted file mode 100644 index 80b801724e..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.3.prop1-func-interl.btor2 +++ /dev/null @@ -1,440 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_Slot_0 -7 init 2 6 5 -8 state 2 v_Slot_1 -9 init 2 8 5 -10 state 2 v_Slot_2 -11 init 2 10 5 -12 state 2 v_next -13 init 2 12 5 -14 state 2 v_my_place_P_0 -15 init 2 14 5 -16 state 2 v_my_place_P_1 -17 init 2 16 5 -18 state 2 v_my_place_P_2 -19 init 2 18 5 -20 zero 1 -21 state 1 a_NCS_P_0 -22 init 1 21 20 -23 state 1 a_p1_P_0 -24 init 1 23 20 -25 state 1 a_p2_P_0 -26 init 1 25 20 -27 state 1 a_p3_P_0 -28 init 1 27 20 -29 state 1 a_CS_P_0 -30 init 1 29 20 -31 state 1 a_NCS_P_1 -32 init 1 31 20 -33 state 1 a_p1_P_1 -34 init 1 33 20 -35 state 1 a_p2_P_1 -36 init 1 35 20 -37 state 1 a_p3_P_1 -38 init 1 37 20 -39 state 1 a_CS_P_1 -40 init 1 39 20 -41 state 1 a_NCS_P_2 -42 init 1 41 20 -43 state 1 a_p1_P_2 -44 init 1 43 20 -45 state 1 a_p2_P_2 -46 init 1 45 20 -47 state 1 a_p3_P_2 -48 init 1 47 20 -49 state 1 a_CS_P_2 -50 init 1 49 20 -51 state 1 dve_invalid -52 init 1 51 20 -53 constd 4 1 -54 constd 4 0 -55 ite 4 29 53 54 -56 ite 4 39 53 54 -57 add 4 55 56 -58 ite 4 49 53 54 -59 add 4 57 58 -60 ulte 1 59 53 -61 and 1 -51 -60 -62 bad 61 -63 constd 2 1 -64 input 1 f17 -65 constd 3 0 -66 concat 4 65 18 -67 add 4 53 66 -68 constd 4 3 -69 srem 4 67 68 -70 eq 1 54 69 -71 and 1 64 70 -72 input 1 f16 -73 add 4 68 66 -74 sub 4 73 53 -75 srem 4 74 68 -76 eq 1 54 75 -77 and 1 72 76 -78 constd 2 0 -79 input 1 f11 -80 concat 4 65 16 -81 add 4 53 80 -82 srem 4 81 68 -83 eq 1 54 82 -84 and 1 79 83 -85 input 1 f10 -86 add 4 68 80 -87 sub 4 86 53 -88 srem 4 87 68 -89 eq 1 54 88 -90 and 1 85 89 -91 input 1 f05 -92 concat 4 65 14 -93 add 4 53 92 -94 srem 4 93 68 -95 eq 1 54 94 -96 and 1 91 95 -97 input 1 f04 -98 add 4 68 92 -99 sub 4 98 53 -100 srem 4 99 68 -101 eq 1 54 100 -102 and 1 97 101 -103 xor 2 63 6 -104 ite 2 102 78 103 -105 ite 2 96 63 104 -106 ite 2 90 78 105 -107 ite 2 84 63 106 -108 ite 2 77 78 107 -109 ite 2 71 63 108 -110 xor 2 63 109 -111 next 2 6 110 -112 eq 1 53 69 -113 and 1 64 112 -114 eq 1 53 75 -115 and 1 72 114 -116 eq 1 53 82 -117 and 1 79 116 -118 eq 1 53 88 -119 and 1 85 118 -120 eq 1 53 94 -121 and 1 91 120 -122 eq 1 53 100 -123 and 1 97 122 -124 ite 2 123 78 8 -125 ite 2 121 63 124 -126 ite 2 119 78 125 -127 ite 2 117 63 126 -128 ite 2 115 78 127 -129 ite 2 113 63 128 -130 next 2 8 129 -131 constd 4 2 -132 eq 1 131 69 -133 and 1 64 132 -134 eq 1 131 75 -135 and 1 72 134 -136 eq 1 131 82 -137 and 1 79 136 -138 eq 1 131 88 -139 and 1 85 138 -140 eq 1 131 94 -141 and 1 91 140 -142 eq 1 131 100 -143 and 1 97 142 -144 ite 2 143 78 10 -145 ite 2 141 63 144 -146 ite 2 139 78 145 -147 ite 2 137 63 146 -148 ite 2 135 78 147 -149 ite 2 133 63 148 -150 next 2 10 149 -151 input 1 f13 -152 concat 4 65 12 -153 sub 4 152 68 -154 slice 2 153 7 0 -155 input 1 f12 -156 add 4 53 152 -157 slice 2 156 7 0 -158 input 1 f07 -159 input 1 f06 -160 input 1 f01 -161 input 1 f00 -162 ite 2 161 157 12 -163 ite 2 160 154 162 -164 ite 2 159 157 163 -165 ite 2 158 154 164 -166 ite 2 155 157 165 -167 ite 2 151 154 166 -168 next 2 12 167 -169 input 1 f02 -170 srem 4 92 68 -171 slice 2 170 7 0 -172 ite 2 161 12 14 -173 ite 2 169 171 172 -174 next 2 14 173 -175 input 1 f08 -176 srem 4 80 68 -177 slice 2 176 7 0 -178 ite 2 159 12 16 -179 ite 2 175 177 178 -180 next 2 16 179 -181 input 1 f14 -182 srem 4 66 68 -183 slice 2 182 7 0 -184 ite 2 155 12 18 -185 ite 2 181 183 184 -186 next 2 18 185 -187 and 1 -21 -161 -188 or 1 187 91 -189 next 1 21 -188 -190 or 1 23 161 -191 and 1 190 -160 -192 and 1 191 -169 -193 next 1 23 192 -194 or 1 25 160 -195 or 1 194 169 -196 input 1 f03 -197 and 1 195 -196 -198 next 1 25 197 -199 or 1 27 196 -200 and 1 199 -97 -201 next 1 27 200 -202 or 1 29 97 -203 and 1 202 -91 -204 next 1 29 203 -205 and 1 -31 -159 -206 or 1 205 79 -207 next 1 31 -206 -208 or 1 33 159 -209 and 1 208 -158 -210 and 1 209 -175 -211 next 1 33 210 -212 or 1 35 158 -213 or 1 212 175 -214 input 1 f09 -215 and 1 213 -214 -216 next 1 35 215 -217 or 1 37 214 -218 and 1 217 -85 -219 next 1 37 218 -220 or 1 39 85 -221 and 1 220 -79 -222 next 1 39 221 -223 and 1 -41 -155 -224 or 1 223 64 -225 next 1 41 -224 -226 or 1 43 155 -227 and 1 226 -151 -228 and 1 227 -181 -229 next 1 43 228 -230 or 1 45 151 -231 or 1 230 181 -232 input 1 f15 -233 and 1 231 -232 -234 next 1 45 233 -235 or 1 47 232 -236 and 1 235 -72 -237 next 1 47 236 -238 or 1 49 72 -239 and 1 238 -64 -240 next 1 49 239 -241 or 1 -21 -161 -242 constd 2 2 -243 eq 1 242 14 -244 and 1 23 243 -245 or 1 -160 244 -246 and 1 241 245 -247 and 1 23 -243 -248 or 1 -169 247 -249 and 1 246 248 -250 eq 1 78 14 -251 eq 1 63 14 -252 ite 2 251 8 10 -253 ite 2 250 103 252 -254 eq 1 63 253 -255 and 1 25 254 -256 or 1 -196 255 -257 and 1 249 256 -258 or 1 27 -97 -259 and 1 257 258 -260 or 1 29 -91 -261 and 1 259 260 -262 or 1 -31 -159 -263 and 1 261 262 -264 eq 1 242 16 -265 and 1 33 264 -266 or 1 -158 265 -267 and 1 263 266 -268 and 1 33 -264 -269 or 1 -175 268 -270 and 1 267 269 -271 eq 1 78 16 -272 eq 1 63 16 -273 ite 2 272 8 10 -274 ite 2 271 103 273 -275 eq 1 63 274 -276 and 1 35 275 -277 or 1 -214 276 -278 and 1 270 277 -279 or 1 37 -85 -280 and 1 278 279 -281 or 1 39 -79 -282 and 1 280 281 -283 or 1 -41 -155 -284 and 1 282 283 -285 eq 1 242 18 -286 and 1 43 285 -287 or 1 -151 286 -288 and 1 284 287 -289 and 1 43 -285 -290 or 1 -181 289 -291 and 1 288 290 -292 eq 1 78 18 -293 eq 1 63 18 -294 ite 2 293 8 10 -295 ite 2 292 103 294 -296 eq 1 63 295 -297 and 1 45 296 -298 or 1 -232 297 -299 and 1 291 298 -300 or 1 47 -72 -301 and 1 299 300 -302 or 1 49 -64 -303 and 1 301 302 -304 or 1 161 160 -305 or 1 169 304 -306 or 1 196 305 -307 or 1 97 306 -308 or 1 91 307 -309 or 1 159 308 -310 or 1 158 309 -311 or 1 175 310 -312 or 1 214 311 -313 or 1 85 312 -314 or 1 79 313 -315 or 1 155 314 -316 or 1 151 315 -317 or 1 181 316 -318 or 1 232 317 -319 or 1 72 318 -320 or 1 64 319 -321 and 1 303 320 -322 and 1 161 160 -323 and 1 169 304 -324 or 1 322 323 -325 and 1 196 305 -326 or 1 324 325 -327 and 1 97 306 -328 or 1 326 327 -329 and 1 91 307 -330 or 1 328 329 -331 and 1 159 308 -332 or 1 330 331 -333 and 1 158 309 -334 or 1 332 333 -335 and 1 175 310 -336 or 1 334 335 -337 and 1 214 311 -338 or 1 336 337 -339 and 1 85 312 -340 or 1 338 339 -341 and 1 79 313 -342 or 1 340 341 -343 and 1 155 314 -344 or 1 342 343 -345 and 1 151 315 -346 or 1 344 345 -347 and 1 181 316 -348 or 1 346 347 -349 and 1 232 317 -350 or 1 348 349 -351 and 1 72 318 -352 or 1 350 351 -353 and 1 64 319 -354 or 1 352 353 -355 and 1 321 -354 -356 and 1 -21 23 -357 or 1 -21 23 -358 and 1 25 357 -359 or 1 356 358 -360 or 1 25 357 -361 and 1 27 360 -362 or 1 359 361 -363 or 1 27 360 -364 and 1 29 363 -365 or 1 362 364 -366 or 1 29 363 -367 and 1 -365 366 -368 and 1 -31 33 -369 or 1 -31 33 -370 and 1 35 369 -371 or 1 368 370 -372 or 1 35 369 -373 and 1 37 372 -374 or 1 371 373 -375 or 1 37 372 -376 and 1 39 375 -377 or 1 374 376 -378 and 1 367 -377 -379 or 1 39 375 -380 and 1 378 379 -381 and 1 -41 43 -382 or 1 -41 43 -383 and 1 45 382 -384 or 1 381 383 -385 or 1 45 382 -386 and 1 47 385 -387 or 1 384 386 -388 or 1 47 385 -389 and 1 49 388 -390 or 1 387 389 -391 and 1 380 -390 -392 or 1 49 388 -393 and 1 391 392 -394 and 1 355 393 -395 and 1 192 188 -396 or 1 192 188 -397 and 1 197 396 -398 or 1 395 397 -399 or 1 197 396 -400 and 1 200 399 -401 or 1 398 400 -402 or 1 200 399 -403 and 1 203 402 -404 or 1 401 403 -405 or 1 203 402 -406 and 1 -404 405 -407 and 1 210 206 -408 or 1 210 206 -409 and 1 215 408 -410 or 1 407 409 -411 or 1 215 408 -412 and 1 218 411 -413 or 1 410 412 -414 or 1 218 411 -415 and 1 221 414 -416 or 1 413 415 -417 and 1 406 -416 -418 or 1 221 414 -419 and 1 417 418 -420 and 1 228 224 -421 or 1 228 224 -422 and 1 233 421 -423 or 1 420 422 -424 or 1 233 421 -425 and 1 236 424 -426 or 1 423 425 -427 or 1 236 424 -428 and 1 239 427 -429 or 1 426 428 -430 and 1 419 -429 -431 or 1 239 427 -432 and 1 430 431 -433 and 1 394 432 -434 and 1 433 -51 -435 next 1 51 -434 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 deleted file mode 100644 index f224822b83..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 +++ /dev/null @@ -1,690 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_Slot_0 -7 init 2 6 5 -8 state 2 nextv_Slot_1 -9 init 2 8 5 -10 state 2 nextv_Slot_2 -11 init 2 10 5 -12 state 2 nextv_Slot_3 -13 init 2 12 5 -14 state 2 nextv_next -15 init 2 14 5 -16 state 2 nextv_my_place_P_0 -17 init 2 16 5 -18 state 2 nextv_my_place_P_1 -19 init 2 18 5 -20 state 2 nextv_my_place_P_2 -21 init 2 20 5 -22 state 2 nextv_my_place_P_3 -23 init 2 22 5 -24 zero 1 -25 state 1 nexta_NCS_P_0 -26 init 1 25 24 -27 state 1 nexta_p1_P_0 -28 init 1 27 24 -29 state 1 nexta_p2_P_0 -30 init 1 29 24 -31 state 1 nexta_p3_P_0 -32 init 1 31 24 -33 state 1 nexta_CS_P_0 -34 init 1 33 24 -35 state 1 nexta_NCS_P_1 -36 init 1 35 24 -37 state 1 nexta_p1_P_1 -38 init 1 37 24 -39 state 1 nexta_p2_P_1 -40 init 1 39 24 -41 state 1 nexta_p3_P_1 -42 init 1 41 24 -43 state 1 nexta_CS_P_1 -44 init 1 43 24 -45 state 1 nexta_NCS_P_2 -46 init 1 45 24 -47 state 1 nexta_p1_P_2 -48 init 1 47 24 -49 state 1 nexta_p2_P_2 -50 init 1 49 24 -51 state 1 nexta_p3_P_2 -52 init 1 51 24 -53 state 1 nexta_CS_P_2 -54 init 1 53 24 -55 state 1 nexta_NCS_P_3 -56 init 1 55 24 -57 state 1 nexta_p1_P_3 -58 init 1 57 24 -59 state 1 nexta_p2_P_3 -60 init 1 59 24 -61 state 1 nexta_p3_P_3 -62 init 1 61 24 -63 state 1 nexta_CS_P_3 -64 init 1 63 24 -65 state 1 dve_initialized -66 init 1 65 24 -67 state 1 dve_valid -68 init 1 67 24 -69 and 1 25 -27 -70 and 1 69 -29 -71 and 1 70 -31 -72 and 1 71 -33 -73 and 1 72 35 -74 and 1 73 -37 -75 and 1 74 -39 -76 and 1 75 -41 -77 and 1 76 -43 -78 and 1 77 45 -79 and 1 78 -47 -80 and 1 79 -49 -81 and 1 80 -51 -82 and 1 81 -53 -83 and 1 82 55 -84 and 1 83 -57 -85 and 1 84 -59 -86 and 1 85 -61 -87 and 1 86 -63 -88 constd 2 1 -89 eq 1 88 6 -90 and 1 87 89 -91 constd 2 0 -92 eq 1 91 8 -93 and 1 90 92 -94 eq 1 91 10 -95 and 1 93 94 -96 eq 1 91 12 -97 and 1 95 96 -98 eq 1 91 14 -99 and 1 97 98 -100 eq 1 91 16 -101 and 1 99 100 -102 eq 1 91 18 -103 and 1 101 102 -104 eq 1 91 20 -105 and 1 103 104 -106 eq 1 91 22 -107 and 1 105 106 -108 and 1 67 107 -109 bad 108 -110 input 2 v_Slot_0 -111 next 2 6 110 -112 input 2 v_Slot_1 -113 next 2 8 112 -114 input 2 v_Slot_2 -115 next 2 10 114 -116 input 2 v_Slot_3 -117 next 2 12 116 -118 input 2 v_next -119 next 2 14 118 -120 input 2 v_my_place_P_0 -121 next 2 16 120 -122 input 2 v_my_place_P_1 -123 next 2 18 122 -124 input 2 v_my_place_P_2 -125 next 2 20 124 -126 input 2 v_my_place_P_3 -127 next 2 22 126 -128 input 1 a_NCS_P_0 -129 next 1 25 128 -130 input 1 a_p1_P_0 -131 next 1 27 130 -132 input 1 a_p2_P_0 -133 next 1 29 132 -134 input 1 a_p3_P_0 -135 next 1 31 134 -136 input 1 a_CS_P_0 -137 next 1 33 136 -138 input 1 a_NCS_P_1 -139 next 1 35 138 -140 input 1 a_p1_P_1 -141 next 1 37 140 -142 input 1 a_p2_P_1 -143 next 1 39 142 -144 input 1 a_p3_P_1 -145 next 1 41 144 -146 input 1 a_CS_P_1 -147 next 1 43 146 -148 input 1 a_NCS_P_2 -149 next 1 45 148 -150 input 1 a_p1_P_2 -151 next 1 47 150 -152 input 1 a_p2_P_2 -153 next 1 49 152 -154 input 1 a_p3_P_2 -155 next 1 51 154 -156 input 1 a_CS_P_2 -157 next 1 53 156 -158 input 1 a_NCS_P_3 -159 next 1 55 158 -160 input 1 a_p1_P_3 -161 next 1 57 160 -162 input 1 a_p2_P_3 -163 next 1 59 162 -164 input 1 a_p3_P_3 -165 next 1 61 164 -166 input 1 a_CS_P_3 -167 next 1 63 166 -168 const 1 1 -169 next 1 65 168 -170 input 1 f00 -171 or 1 128 -170 -172 input 1 f01 -173 or 1 130 170 -174 constd 2 3 -175 ite 2 170 118 120 -176 eq 1 174 175 -177 and 1 173 176 -178 or 1 -172 177 -179 and 1 171 178 -180 input 1 f02 -181 and 1 173 -172 -182 and 1 -176 181 -183 or 1 -180 182 -184 and 1 179 183 -185 input 1 f03 -186 or 1 132 172 -187 or 1 186 180 -188 constd 3 0 -189 concat 4 188 175 -190 constd 4 4 -191 srem 4 189 190 -192 slice 2 191 7 0 -193 ite 2 180 192 175 -194 eq 1 91 193 -195 eq 1 88 193 -196 constd 2 2 -197 eq 1 196 193 -198 ite 2 197 114 116 -199 ite 2 195 112 198 -200 ite 2 194 110 199 -201 eq 1 88 200 -202 and 1 187 201 -203 or 1 -185 202 -204 and 1 184 203 -205 or 1 134 185 -206 input 1 f04 -207 or 1 205 -206 -208 and 1 204 207 -209 or 1 136 206 -210 input 1 f05 -211 or 1 209 -210 -212 and 1 208 211 -213 input 1 f06 -214 or 1 138 -213 -215 and 1 212 214 -216 input 1 f07 -217 or 1 140 213 -218 constd 4 1 -219 concat 4 188 118 -220 add 4 218 219 -221 slice 2 220 7 0 -222 ite 2 170 221 118 -223 concat 4 188 222 -224 sub 4 223 190 -225 slice 2 224 7 0 -226 ite 2 172 225 222 -227 ite 2 213 226 122 -228 eq 1 174 227 -229 and 1 217 228 -230 or 1 -216 229 -231 and 1 215 230 -232 input 1 f08 -233 and 1 217 -216 -234 and 1 -228 233 -235 or 1 -232 234 -236 and 1 231 235 -237 input 1 f09 -238 or 1 142 216 -239 or 1 238 232 -240 concat 4 188 227 -241 srem 4 240 190 -242 slice 2 241 7 0 -243 ite 2 232 242 227 -244 eq 1 91 243 -245 constd 4 0 -246 concat 4 188 193 -247 add 4 218 246 -248 srem 4 247 190 -249 eq 1 245 248 -250 and 1 210 249 -251 and 1 194 206 -252 ite 2 251 91 110 -253 ite 2 250 88 252 -254 eq 1 88 243 -255 eq 1 218 248 -256 and 1 210 255 -257 and 1 195 206 -258 ite 2 257 91 112 -259 ite 2 256 88 258 -260 eq 1 196 243 -261 constd 4 2 -262 eq 1 261 248 -263 and 1 210 262 -264 and 1 197 206 -265 ite 2 264 91 114 -266 ite 2 263 88 265 -267 constd 4 3 -268 eq 1 267 248 -269 and 1 210 268 -270 eq 1 174 193 -271 and 1 270 206 -272 ite 2 271 91 116 -273 ite 2 269 88 272 -274 ite 2 260 266 273 -275 ite 2 254 259 274 -276 ite 2 244 253 275 -277 eq 1 88 276 -278 and 1 239 277 -279 or 1 -237 278 -280 and 1 236 279 -281 or 1 144 237 -282 input 1 f10 -283 or 1 281 -282 -284 and 1 280 283 -285 or 1 146 282 -286 input 1 f11 -287 or 1 285 -286 -288 and 1 284 287 -289 input 1 f12 -290 or 1 148 -289 -291 and 1 288 290 -292 input 1 f13 -293 or 1 150 289 -294 concat 4 188 226 -295 add 4 218 294 -296 slice 2 295 7 0 -297 ite 2 213 296 226 -298 concat 4 188 297 -299 sub 4 298 190 -300 slice 2 299 7 0 -301 ite 2 216 300 297 -302 ite 2 289 301 124 -303 eq 1 174 302 -304 and 1 293 303 -305 or 1 -292 304 -306 and 1 291 305 -307 input 1 f14 -308 and 1 293 -292 -309 and 1 -303 308 -310 or 1 -307 309 -311 and 1 306 310 -312 input 1 f15 -313 or 1 152 292 -314 or 1 313 307 -315 concat 4 188 302 -316 srem 4 315 190 -317 slice 2 316 7 0 -318 ite 2 307 317 302 -319 eq 1 91 318 -320 concat 4 188 243 -321 add 4 218 320 -322 srem 4 321 190 -323 eq 1 245 322 -324 and 1 286 323 -325 and 1 244 282 -326 ite 2 325 91 253 -327 ite 2 324 88 326 -328 eq 1 88 318 -329 eq 1 218 322 -330 and 1 286 329 -331 and 1 254 282 -332 ite 2 331 91 259 -333 ite 2 330 88 332 -334 eq 1 196 318 -335 eq 1 261 322 -336 and 1 286 335 -337 and 1 260 282 -338 ite 2 337 91 266 -339 ite 2 336 88 338 -340 eq 1 267 322 -341 and 1 286 340 -342 eq 1 174 243 -343 and 1 342 282 -344 ite 2 343 91 273 -345 ite 2 341 88 344 -346 ite 2 334 339 345 -347 ite 2 328 333 346 -348 ite 2 319 327 347 -349 eq 1 88 348 -350 and 1 314 349 -351 or 1 -312 350 -352 and 1 311 351 -353 or 1 154 312 -354 input 1 f16 -355 or 1 353 -354 -356 and 1 352 355 -357 or 1 156 354 -358 input 1 f17 -359 or 1 357 -358 -360 and 1 356 359 -361 input 1 f18 -362 or 1 158 -361 -363 and 1 360 362 -364 input 1 f19 -365 or 1 160 361 -366 concat 4 188 301 -367 add 4 218 366 -368 slice 2 367 7 0 -369 ite 2 289 368 301 -370 concat 4 188 369 -371 sub 4 370 190 -372 slice 2 371 7 0 -373 ite 2 292 372 369 -374 ite 2 361 373 126 -375 eq 1 174 374 -376 and 1 365 375 -377 or 1 -364 376 -378 and 1 363 377 -379 input 1 f20 -380 and 1 365 -364 -381 and 1 -375 380 -382 or 1 -379 381 -383 and 1 378 382 -384 input 1 f21 -385 or 1 162 364 -386 or 1 385 379 -387 concat 4 188 374 -388 srem 4 387 190 -389 slice 2 388 7 0 -390 ite 2 379 389 374 -391 eq 1 91 390 -392 concat 4 188 318 -393 add 4 218 392 -394 srem 4 393 190 -395 eq 1 245 394 -396 and 1 358 395 -397 and 1 319 354 -398 ite 2 397 91 327 -399 ite 2 396 88 398 -400 eq 1 88 390 -401 eq 1 218 394 -402 and 1 358 401 -403 and 1 328 354 -404 ite 2 403 91 333 -405 ite 2 402 88 404 -406 eq 1 196 390 -407 eq 1 261 394 -408 and 1 358 407 -409 and 1 334 354 -410 ite 2 409 91 339 -411 ite 2 408 88 410 -412 eq 1 267 394 -413 and 1 358 412 -414 eq 1 174 318 -415 and 1 414 354 -416 ite 2 415 91 345 -417 ite 2 413 88 416 -418 ite 2 406 411 417 -419 ite 2 400 405 418 -420 ite 2 391 399 419 -421 eq 1 88 420 -422 and 1 386 421 -423 or 1 -384 422 -424 and 1 383 423 -425 or 1 164 384 -426 input 1 f22 -427 or 1 425 -426 -428 and 1 424 427 -429 or 1 166 426 -430 input 1 f23 -431 or 1 429 -430 -432 and 1 428 431 -433 or 1 170 172 -434 or 1 180 433 -435 or 1 185 434 -436 or 1 206 435 -437 or 1 210 436 -438 or 1 213 437 -439 or 1 216 438 -440 or 1 232 439 -441 or 1 237 440 -442 or 1 282 441 -443 or 1 286 442 -444 or 1 289 443 -445 or 1 292 444 -446 or 1 307 445 -447 or 1 312 446 -448 or 1 354 447 -449 or 1 358 448 -450 or 1 361 449 -451 or 1 364 450 -452 or 1 379 451 -453 or 1 384 452 -454 or 1 426 453 -455 or 1 430 454 -456 and 1 432 455 -457 and 1 128 130 -458 or 1 128 130 -459 and 1 132 458 -460 or 1 457 459 -461 or 1 132 458 -462 and 1 134 461 -463 or 1 460 462 -464 or 1 134 461 -465 and 1 136 464 -466 or 1 463 465 -467 or 1 136 464 -468 and 1 -466 467 -469 and 1 138 140 -470 or 1 138 140 -471 and 1 142 470 -472 or 1 469 471 -473 or 1 142 470 -474 and 1 144 473 -475 or 1 472 474 -476 or 1 144 473 -477 and 1 146 476 -478 or 1 475 477 -479 and 1 468 -478 -480 or 1 146 476 -481 and 1 479 480 -482 and 1 148 150 -483 or 1 148 150 -484 and 1 152 483 -485 or 1 482 484 -486 or 1 152 483 -487 and 1 154 486 -488 or 1 485 487 -489 or 1 154 486 -490 and 1 156 489 -491 or 1 488 490 -492 and 1 481 -491 -493 or 1 156 489 -494 and 1 492 493 -495 and 1 158 160 -496 or 1 158 160 -497 and 1 162 496 -498 or 1 495 497 -499 or 1 162 496 -500 and 1 164 499 -501 or 1 498 500 -502 or 1 164 499 -503 and 1 166 502 -504 or 1 501 503 -505 and 1 494 -504 -506 or 1 166 502 -507 and 1 505 506 -508 and 1 456 507 -509 and 1 181 -180 -510 and 1 128 -170 -511 or 1 510 210 -512 and 1 509 511 -513 and 1 187 -185 -514 or 1 509 511 -515 and 1 513 514 -516 or 1 512 515 -517 and 1 205 -206 -518 or 1 513 514 -519 and 1 517 518 -520 or 1 516 519 -521 and 1 209 -210 -522 or 1 517 518 -523 and 1 521 522 -524 or 1 520 523 -525 or 1 521 522 -526 and 1 -524 525 -527 and 1 233 -232 -528 and 1 138 -213 -529 or 1 528 286 -530 and 1 527 529 -531 and 1 239 -237 -532 or 1 527 529 -533 and 1 531 532 -534 or 1 530 533 -535 and 1 281 -282 -536 or 1 531 532 -537 and 1 535 536 -538 or 1 534 537 -539 and 1 285 -286 -540 or 1 535 536 -541 and 1 539 540 -542 or 1 538 541 -543 and 1 526 -542 -544 or 1 539 540 -545 and 1 543 544 -546 and 1 308 -307 -547 and 1 148 -289 -548 or 1 547 358 -549 and 1 546 548 -550 and 1 314 -312 -551 or 1 546 548 -552 and 1 550 551 -553 or 1 549 552 -554 and 1 353 -354 -555 or 1 550 551 -556 and 1 554 555 -557 or 1 553 556 -558 and 1 357 -358 -559 or 1 554 555 -560 and 1 558 559 -561 or 1 557 560 -562 and 1 545 -561 -563 or 1 558 559 -564 and 1 562 563 -565 and 1 380 -379 -566 and 1 158 -361 -567 or 1 566 430 -568 and 1 565 567 -569 and 1 386 -384 -570 or 1 565 567 -571 and 1 569 570 -572 or 1 568 571 -573 and 1 425 -426 -574 or 1 569 570 -575 and 1 573 574 -576 or 1 572 575 -577 and 1 429 -430 -578 or 1 573 574 -579 and 1 577 578 -580 or 1 576 579 -581 and 1 564 -580 -582 or 1 577 578 -583 and 1 581 582 -584 and 1 508 583 -585 concat 4 188 390 -586 add 4 218 585 -587 srem 4 586 190 -588 eq 1 245 587 -589 and 1 430 588 -590 and 1 391 426 -591 ite 2 590 91 399 -592 ite 2 589 88 591 -593 eq 1 592 6 -594 and 1 584 593 -595 eq 1 218 587 -596 and 1 430 595 -597 and 1 400 426 -598 ite 2 597 91 405 -599 ite 2 596 88 598 -600 eq 1 599 8 -601 and 1 594 600 -602 eq 1 261 587 -603 and 1 430 602 -604 and 1 406 426 -605 ite 2 604 91 411 -606 ite 2 603 88 605 -607 eq 1 606 10 -608 and 1 601 607 -609 eq 1 267 587 -610 and 1 430 609 -611 eq 1 174 390 -612 and 1 611 426 -613 ite 2 612 91 417 -614 ite 2 610 88 613 -615 eq 1 614 12 -616 and 1 608 615 -617 concat 4 188 373 -618 add 4 218 617 -619 slice 2 618 7 0 -620 ite 2 361 619 373 -621 concat 4 188 620 -622 sub 4 621 190 -623 slice 2 622 7 0 -624 ite 2 364 623 620 -625 eq 1 624 14 -626 and 1 616 625 -627 eq 1 193 16 -628 and 1 626 627 -629 eq 1 243 18 -630 and 1 628 629 -631 eq 1 318 20 -632 and 1 630 631 -633 eq 1 390 22 -634 and 1 632 633 -635 eq 1 511 25 -636 and 1 634 635 -637 eq 1 509 27 -638 and 1 636 637 -639 eq 1 513 29 -640 and 1 638 639 -641 eq 1 517 31 -642 and 1 640 641 -643 eq 1 521 33 -644 and 1 642 643 -645 eq 1 529 35 -646 and 1 644 645 -647 eq 1 527 37 -648 and 1 646 647 -649 eq 1 531 39 -650 and 1 648 649 -651 eq 1 535 41 -652 and 1 650 651 -653 eq 1 539 43 -654 and 1 652 653 -655 eq 1 548 45 -656 and 1 654 655 -657 eq 1 546 47 -658 and 1 656 657 -659 eq 1 550 49 -660 and 1 658 659 -661 eq 1 554 51 -662 and 1 660 661 -663 eq 1 558 53 -664 and 1 662 663 -665 eq 1 567 55 -666 and 1 664 665 -667 eq 1 565 57 -668 and 1 666 667 -669 eq 1 569 59 -670 and 1 668 669 -671 eq 1 573 61 -672 and 1 670 671 -673 eq 1 577 63 -674 and 1 672 673 -675 and 1 674 67 -676 ite 4 136 218 245 -677 ite 4 146 218 245 -678 add 4 676 677 -679 ite 4 156 218 245 -680 add 4 678 679 -681 ite 4 166 218 245 -682 add 4 680 681 -683 ulte 1 682 218 -684 ite 1 65 675 -683 -685 next 1 67 684 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-func-interl.btor2 deleted file mode 100644 index 577f5a509e..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-func-interl.btor2 +++ /dev/null @@ -1,582 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_Slot_0 -7 init 2 6 5 -8 state 2 v_Slot_1 -9 init 2 8 5 -10 state 2 v_Slot_2 -11 init 2 10 5 -12 state 2 v_Slot_3 -13 init 2 12 5 -14 state 2 v_next -15 init 2 14 5 -16 state 2 v_my_place_P_0 -17 init 2 16 5 -18 state 2 v_my_place_P_1 -19 init 2 18 5 -20 state 2 v_my_place_P_2 -21 init 2 20 5 -22 state 2 v_my_place_P_3 -23 init 2 22 5 -24 zero 1 -25 state 1 a_NCS_P_0 -26 init 1 25 24 -27 state 1 a_p1_P_0 -28 init 1 27 24 -29 state 1 a_p2_P_0 -30 init 1 29 24 -31 state 1 a_p3_P_0 -32 init 1 31 24 -33 state 1 a_CS_P_0 -34 init 1 33 24 -35 state 1 a_NCS_P_1 -36 init 1 35 24 -37 state 1 a_p1_P_1 -38 init 1 37 24 -39 state 1 a_p2_P_1 -40 init 1 39 24 -41 state 1 a_p3_P_1 -42 init 1 41 24 -43 state 1 a_CS_P_1 -44 init 1 43 24 -45 state 1 a_NCS_P_2 -46 init 1 45 24 -47 state 1 a_p1_P_2 -48 init 1 47 24 -49 state 1 a_p2_P_2 -50 init 1 49 24 -51 state 1 a_p3_P_2 -52 init 1 51 24 -53 state 1 a_CS_P_2 -54 init 1 53 24 -55 state 1 a_NCS_P_3 -56 init 1 55 24 -57 state 1 a_p1_P_3 -58 init 1 57 24 -59 state 1 a_p2_P_3 -60 init 1 59 24 -61 state 1 a_p3_P_3 -62 init 1 61 24 -63 state 1 a_CS_P_3 -64 init 1 63 24 -65 state 1 dve_invalid -66 init 1 65 24 -67 constd 4 1 -68 constd 4 0 -69 ite 4 33 67 68 -70 ite 4 43 67 68 -71 add 4 69 70 -72 ite 4 53 67 68 -73 add 4 71 72 -74 ite 4 63 67 68 -75 add 4 73 74 -76 ulte 1 75 67 -77 and 1 -65 -76 -78 bad 77 -79 constd 2 1 -80 input 1 f23 -81 constd 3 0 -82 concat 4 81 22 -83 add 4 67 82 -84 constd 4 4 -85 srem 4 83 84 -86 eq 1 68 85 -87 and 1 80 86 -88 constd 2 0 -89 eq 1 88 22 -90 input 1 f22 -91 and 1 89 90 -92 input 1 f17 -93 concat 4 81 20 -94 add 4 67 93 -95 srem 4 94 84 -96 eq 1 68 95 -97 and 1 92 96 -98 eq 1 88 20 -99 input 1 f16 -100 and 1 98 99 -101 input 1 f11 -102 concat 4 81 18 -103 add 4 67 102 -104 srem 4 103 84 -105 eq 1 68 104 -106 and 1 101 105 -107 eq 1 88 18 -108 input 1 f10 -109 and 1 107 108 -110 input 1 f05 -111 concat 4 81 16 -112 add 4 67 111 -113 srem 4 112 84 -114 eq 1 68 113 -115 and 1 110 114 -116 eq 1 88 16 -117 input 1 f04 -118 and 1 116 117 -119 xor 2 79 6 -120 ite 2 118 88 119 -121 ite 2 115 79 120 -122 ite 2 109 88 121 -123 ite 2 106 79 122 -124 ite 2 100 88 123 -125 ite 2 97 79 124 -126 ite 2 91 88 125 -127 ite 2 87 79 126 -128 xor 2 79 127 -129 next 2 6 128 -130 eq 1 67 85 -131 and 1 80 130 -132 eq 1 79 22 -133 and 1 132 90 -134 eq 1 67 95 -135 and 1 92 134 -136 eq 1 79 20 -137 and 1 136 99 -138 eq 1 67 104 -139 and 1 101 138 -140 eq 1 79 18 -141 and 1 140 108 -142 eq 1 67 113 -143 and 1 110 142 -144 eq 1 79 16 -145 and 1 144 117 -146 ite 2 145 88 8 -147 ite 2 143 79 146 -148 ite 2 141 88 147 -149 ite 2 139 79 148 -150 ite 2 137 88 149 -151 ite 2 135 79 150 -152 ite 2 133 88 151 -153 ite 2 131 79 152 -154 next 2 8 153 -155 constd 4 2 -156 eq 1 155 85 -157 and 1 80 156 -158 constd 2 2 -159 eq 1 158 22 -160 and 1 159 90 -161 eq 1 155 95 -162 and 1 92 161 -163 eq 1 158 20 -164 and 1 163 99 -165 eq 1 155 104 -166 and 1 101 165 -167 eq 1 158 18 -168 and 1 167 108 -169 eq 1 155 113 -170 and 1 110 169 -171 eq 1 158 16 -172 and 1 171 117 -173 ite 2 172 88 10 -174 ite 2 170 79 173 -175 ite 2 168 88 174 -176 ite 2 166 79 175 -177 ite 2 164 88 176 -178 ite 2 162 79 177 -179 ite 2 160 88 178 -180 ite 2 157 79 179 -181 next 2 10 180 -182 constd 4 3 -183 eq 1 182 85 -184 and 1 80 183 -185 constd 2 3 -186 eq 1 185 22 -187 and 1 186 90 -188 eq 1 182 95 -189 and 1 92 188 -190 eq 1 185 20 -191 and 1 190 99 -192 eq 1 182 104 -193 and 1 101 192 -194 eq 1 185 18 -195 and 1 194 108 -196 eq 1 182 113 -197 and 1 110 196 -198 eq 1 185 16 -199 and 1 198 117 -200 ite 2 199 88 12 -201 ite 2 197 79 200 -202 ite 2 195 88 201 -203 ite 2 193 79 202 -204 ite 2 191 88 203 -205 ite 2 189 79 204 -206 ite 2 187 88 205 -207 ite 2 184 79 206 -208 next 2 12 207 -209 input 1 f19 -210 concat 4 81 14 -211 sub 4 210 84 -212 slice 2 211 7 0 -213 input 1 f18 -214 add 4 67 210 -215 slice 2 214 7 0 -216 input 1 f13 -217 input 1 f12 -218 input 1 f07 -219 input 1 f06 -220 input 1 f01 -221 input 1 f00 -222 ite 2 221 215 14 -223 ite 2 220 212 222 -224 ite 2 219 215 223 -225 ite 2 218 212 224 -226 ite 2 217 215 225 -227 ite 2 216 212 226 -228 ite 2 213 215 227 -229 ite 2 209 212 228 -230 next 2 14 229 -231 input 1 f02 -232 srem 4 111 84 -233 slice 2 232 7 0 -234 ite 2 221 14 16 -235 ite 2 231 233 234 -236 next 2 16 235 -237 input 1 f08 -238 srem 4 102 84 -239 slice 2 238 7 0 -240 ite 2 219 14 18 -241 ite 2 237 239 240 -242 next 2 18 241 -243 input 1 f14 -244 srem 4 93 84 -245 slice 2 244 7 0 -246 ite 2 217 14 20 -247 ite 2 243 245 246 -248 next 2 20 247 -249 input 1 f20 -250 srem 4 82 84 -251 slice 2 250 7 0 -252 ite 2 213 14 22 -253 ite 2 249 251 252 -254 next 2 22 253 -255 and 1 -25 -221 -256 or 1 255 110 -257 next 1 25 -256 -258 or 1 27 221 -259 and 1 258 -220 -260 and 1 259 -231 -261 next 1 27 260 -262 or 1 29 220 -263 or 1 262 231 -264 input 1 f03 -265 and 1 263 -264 -266 next 1 29 265 -267 or 1 31 264 -268 and 1 267 -117 -269 next 1 31 268 -270 or 1 33 117 -271 and 1 270 -110 -272 next 1 33 271 -273 and 1 -35 -219 -274 or 1 273 101 -275 next 1 35 -274 -276 or 1 37 219 -277 and 1 276 -218 -278 and 1 277 -237 -279 next 1 37 278 -280 or 1 39 218 -281 or 1 280 237 -282 input 1 f09 -283 and 1 281 -282 -284 next 1 39 283 -285 or 1 41 282 -286 and 1 285 -108 -287 next 1 41 286 -288 or 1 43 108 -289 and 1 288 -101 -290 next 1 43 289 -291 and 1 -45 -217 -292 or 1 291 92 -293 next 1 45 -292 -294 or 1 47 217 -295 and 1 294 -216 -296 and 1 295 -243 -297 next 1 47 296 -298 or 1 49 216 -299 or 1 298 243 -300 input 1 f15 -301 and 1 299 -300 -302 next 1 49 301 -303 or 1 51 300 -304 and 1 303 -99 -305 next 1 51 304 -306 or 1 53 99 -307 and 1 306 -92 -308 next 1 53 307 -309 and 1 -55 -213 -310 or 1 309 80 -311 next 1 55 -310 -312 or 1 57 213 -313 and 1 312 -209 -314 and 1 313 -249 -315 next 1 57 314 -316 or 1 59 209 -317 or 1 316 249 -318 input 1 f21 -319 and 1 317 -318 -320 next 1 59 319 -321 or 1 61 318 -322 and 1 321 -90 -323 next 1 61 322 -324 or 1 63 90 -325 and 1 324 -80 -326 next 1 63 325 -327 or 1 -25 -221 -328 and 1 27 198 -329 or 1 -220 328 -330 and 1 327 329 -331 and 1 27 -198 -332 or 1 -231 331 -333 and 1 330 332 -334 ite 2 171 10 12 -335 ite 2 144 8 334 -336 ite 2 116 119 335 -337 eq 1 79 336 -338 and 1 29 337 -339 or 1 -264 338 -340 and 1 333 339 -341 or 1 31 -117 -342 and 1 340 341 -343 or 1 33 -110 -344 and 1 342 343 -345 or 1 -35 -219 -346 and 1 344 345 -347 and 1 37 194 -348 or 1 -218 347 -349 and 1 346 348 -350 and 1 37 -194 -351 or 1 -237 350 -352 and 1 349 351 -353 ite 2 167 10 12 -354 ite 2 140 8 353 -355 ite 2 107 119 354 -356 eq 1 79 355 -357 and 1 39 356 -358 or 1 -282 357 -359 and 1 352 358 -360 or 1 41 -108 -361 and 1 359 360 -362 or 1 43 -101 -363 and 1 361 362 -364 or 1 -45 -217 -365 and 1 363 364 -366 and 1 47 190 -367 or 1 -216 366 -368 and 1 365 367 -369 and 1 47 -190 -370 or 1 -243 369 -371 and 1 368 370 -372 ite 2 163 10 12 -373 ite 2 136 8 372 -374 ite 2 98 119 373 -375 eq 1 79 374 -376 and 1 49 375 -377 or 1 -300 376 -378 and 1 371 377 -379 or 1 51 -99 -380 and 1 378 379 -381 or 1 53 -92 -382 and 1 380 381 -383 or 1 -55 -213 -384 and 1 382 383 -385 and 1 57 186 -386 or 1 -209 385 -387 and 1 384 386 -388 and 1 57 -186 -389 or 1 -249 388 -390 and 1 387 389 -391 ite 2 159 10 12 -392 ite 2 132 8 391 -393 ite 2 89 119 392 -394 eq 1 79 393 -395 and 1 59 394 -396 or 1 -318 395 -397 and 1 390 396 -398 or 1 61 -90 -399 and 1 397 398 -400 or 1 63 -80 -401 and 1 399 400 -402 or 1 221 220 -403 or 1 231 402 -404 or 1 264 403 -405 or 1 117 404 -406 or 1 110 405 -407 or 1 219 406 -408 or 1 218 407 -409 or 1 237 408 -410 or 1 282 409 -411 or 1 108 410 -412 or 1 101 411 -413 or 1 217 412 -414 or 1 216 413 -415 or 1 243 414 -416 or 1 300 415 -417 or 1 99 416 -418 or 1 92 417 -419 or 1 213 418 -420 or 1 209 419 -421 or 1 249 420 -422 or 1 318 421 -423 or 1 90 422 -424 or 1 80 423 -425 and 1 401 424 -426 and 1 221 220 -427 and 1 231 402 -428 or 1 426 427 -429 and 1 264 403 -430 or 1 428 429 -431 and 1 117 404 -432 or 1 430 431 -433 and 1 110 405 -434 or 1 432 433 -435 and 1 219 406 -436 or 1 434 435 -437 and 1 218 407 -438 or 1 436 437 -439 and 1 237 408 -440 or 1 438 439 -441 and 1 282 409 -442 or 1 440 441 -443 and 1 108 410 -444 or 1 442 443 -445 and 1 101 411 -446 or 1 444 445 -447 and 1 217 412 -448 or 1 446 447 -449 and 1 216 413 -450 or 1 448 449 -451 and 1 243 414 -452 or 1 450 451 -453 and 1 300 415 -454 or 1 452 453 -455 and 1 99 416 -456 or 1 454 455 -457 and 1 92 417 -458 or 1 456 457 -459 and 1 213 418 -460 or 1 458 459 -461 and 1 209 419 -462 or 1 460 461 -463 and 1 249 420 -464 or 1 462 463 -465 and 1 318 421 -466 or 1 464 465 -467 and 1 90 422 -468 or 1 466 467 -469 and 1 80 423 -470 or 1 468 469 -471 and 1 425 -470 -472 and 1 -25 27 -473 or 1 -25 27 -474 and 1 29 473 -475 or 1 472 474 -476 or 1 29 473 -477 and 1 31 476 -478 or 1 475 477 -479 or 1 31 476 -480 and 1 33 479 -481 or 1 478 480 -482 or 1 33 479 -483 and 1 -481 482 -484 and 1 -35 37 -485 or 1 -35 37 -486 and 1 39 485 -487 or 1 484 486 -488 or 1 39 485 -489 and 1 41 488 -490 or 1 487 489 -491 or 1 41 488 -492 and 1 43 491 -493 or 1 490 492 -494 and 1 483 -493 -495 or 1 43 491 -496 and 1 494 495 -497 and 1 -45 47 -498 or 1 -45 47 -499 and 1 49 498 -500 or 1 497 499 -501 or 1 49 498 -502 and 1 51 501 -503 or 1 500 502 -504 or 1 51 501 -505 and 1 53 504 -506 or 1 503 505 -507 and 1 496 -506 -508 or 1 53 504 -509 and 1 507 508 -510 and 1 -55 57 -511 or 1 -55 57 -512 and 1 59 511 -513 or 1 510 512 -514 or 1 59 511 -515 and 1 61 514 -516 or 1 513 515 -517 or 1 61 514 -518 and 1 63 517 -519 or 1 516 518 -520 and 1 509 -519 -521 or 1 63 517 -522 and 1 520 521 -523 and 1 471 522 -524 and 1 260 256 -525 or 1 260 256 -526 and 1 265 525 -527 or 1 524 526 -528 or 1 265 525 -529 and 1 268 528 -530 or 1 527 529 -531 or 1 268 528 -532 and 1 271 531 -533 or 1 530 532 -534 or 1 271 531 -535 and 1 -533 534 -536 and 1 278 274 -537 or 1 278 274 -538 and 1 283 537 -539 or 1 536 538 -540 or 1 283 537 -541 and 1 286 540 -542 or 1 539 541 -543 or 1 286 540 -544 and 1 289 543 -545 or 1 542 544 -546 and 1 535 -545 -547 or 1 289 543 -548 and 1 546 547 -549 and 1 296 292 -550 or 1 296 292 -551 and 1 301 550 -552 or 1 549 551 -553 or 1 301 550 -554 and 1 304 553 -555 or 1 552 554 -556 or 1 304 553 -557 and 1 307 556 -558 or 1 555 557 -559 and 1 548 -558 -560 or 1 307 556 -561 and 1 559 560 -562 and 1 314 310 -563 or 1 314 310 -564 and 1 319 563 -565 or 1 562 564 -566 or 1 319 563 -567 and 1 322 566 -568 or 1 565 567 -569 or 1 322 566 -570 and 1 325 569 -571 or 1 568 570 -572 and 1 561 -571 -573 or 1 325 569 -574 and 1 572 573 -575 and 1 523 574 -576 and 1 575 -65 -577 next 1 65 -576 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-back-serstep.btor2 deleted file mode 100644 index d960b800be..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-back-serstep.btor2 +++ /dev/null @@ -1,925 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_Slot_0 -7 init 2 6 5 -8 state 2 nextv_Slot_1 -9 init 2 8 5 -10 state 2 nextv_Slot_2 -11 init 2 10 5 -12 state 2 nextv_Slot_3 -13 init 2 12 5 -14 state 2 nextv_Slot_4 -15 init 2 14 5 -16 state 2 nextv_next -17 init 2 16 5 -18 state 2 nextv_my_place_P_0 -19 init 2 18 5 -20 state 2 nextv_my_place_P_1 -21 init 2 20 5 -22 state 2 nextv_my_place_P_2 -23 init 2 22 5 -24 state 2 nextv_my_place_P_3 -25 init 2 24 5 -26 state 2 nextv_my_place_P_4 -27 init 2 26 5 -28 zero 1 -29 state 1 nexta_NCS_P_0 -30 init 1 29 28 -31 state 1 nexta_p1_P_0 -32 init 1 31 28 -33 state 1 nexta_p2_P_0 -34 init 1 33 28 -35 state 1 nexta_p3_P_0 -36 init 1 35 28 -37 state 1 nexta_CS_P_0 -38 init 1 37 28 -39 state 1 nexta_NCS_P_1 -40 init 1 39 28 -41 state 1 nexta_p1_P_1 -42 init 1 41 28 -43 state 1 nexta_p2_P_1 -44 init 1 43 28 -45 state 1 nexta_p3_P_1 -46 init 1 45 28 -47 state 1 nexta_CS_P_1 -48 init 1 47 28 -49 state 1 nexta_NCS_P_2 -50 init 1 49 28 -51 state 1 nexta_p1_P_2 -52 init 1 51 28 -53 state 1 nexta_p2_P_2 -54 init 1 53 28 -55 state 1 nexta_p3_P_2 -56 init 1 55 28 -57 state 1 nexta_CS_P_2 -58 init 1 57 28 -59 state 1 nexta_NCS_P_3 -60 init 1 59 28 -61 state 1 nexta_p1_P_3 -62 init 1 61 28 -63 state 1 nexta_p2_P_3 -64 init 1 63 28 -65 state 1 nexta_p3_P_3 -66 init 1 65 28 -67 state 1 nexta_CS_P_3 -68 init 1 67 28 -69 state 1 nexta_NCS_P_4 -70 init 1 69 28 -71 state 1 nexta_p1_P_4 -72 init 1 71 28 -73 state 1 nexta_p2_P_4 -74 init 1 73 28 -75 state 1 nexta_p3_P_4 -76 init 1 75 28 -77 state 1 nexta_CS_P_4 -78 init 1 77 28 -79 state 1 dve_initialized -80 init 1 79 28 -81 state 1 dve_valid -82 init 1 81 28 -83 and 1 29 -31 -84 and 1 83 -33 -85 and 1 84 -35 -86 and 1 85 -37 -87 and 1 86 39 -88 and 1 87 -41 -89 and 1 88 -43 -90 and 1 89 -45 -91 and 1 90 -47 -92 and 1 91 49 -93 and 1 92 -51 -94 and 1 93 -53 -95 and 1 94 -55 -96 and 1 95 -57 -97 and 1 96 59 -98 and 1 97 -61 -99 and 1 98 -63 -100 and 1 99 -65 -101 and 1 100 -67 -102 and 1 101 69 -103 and 1 102 -71 -104 and 1 103 -73 -105 and 1 104 -75 -106 and 1 105 -77 -107 constd 2 1 -108 eq 1 107 6 -109 and 1 106 108 -110 constd 2 0 -111 eq 1 110 8 -112 and 1 109 111 -113 eq 1 110 10 -114 and 1 112 113 -115 eq 1 110 12 -116 and 1 114 115 -117 eq 1 110 14 -118 and 1 116 117 -119 eq 1 110 16 -120 and 1 118 119 -121 eq 1 110 18 -122 and 1 120 121 -123 eq 1 110 20 -124 and 1 122 123 -125 eq 1 110 22 -126 and 1 124 125 -127 eq 1 110 24 -128 and 1 126 127 -129 eq 1 110 26 -130 and 1 128 129 -131 and 1 81 130 -132 bad 131 -133 input 2 v_Slot_0 -134 next 2 6 133 -135 input 2 v_Slot_1 -136 next 2 8 135 -137 input 2 v_Slot_2 -138 next 2 10 137 -139 input 2 v_Slot_3 -140 next 2 12 139 -141 input 2 v_Slot_4 -142 next 2 14 141 -143 input 2 v_next -144 next 2 16 143 -145 input 2 v_my_place_P_0 -146 next 2 18 145 -147 input 2 v_my_place_P_1 -148 next 2 20 147 -149 input 2 v_my_place_P_2 -150 next 2 22 149 -151 input 2 v_my_place_P_3 -152 next 2 24 151 -153 input 2 v_my_place_P_4 -154 next 2 26 153 -155 input 1 a_NCS_P_0 -156 next 1 29 155 -157 input 1 a_p1_P_0 -158 next 1 31 157 -159 input 1 a_p2_P_0 -160 next 1 33 159 -161 input 1 a_p3_P_0 -162 next 1 35 161 -163 input 1 a_CS_P_0 -164 next 1 37 163 -165 input 1 a_NCS_P_1 -166 next 1 39 165 -167 input 1 a_p1_P_1 -168 next 1 41 167 -169 input 1 a_p2_P_1 -170 next 1 43 169 -171 input 1 a_p3_P_1 -172 next 1 45 171 -173 input 1 a_CS_P_1 -174 next 1 47 173 -175 input 1 a_NCS_P_2 -176 next 1 49 175 -177 input 1 a_p1_P_2 -178 next 1 51 177 -179 input 1 a_p2_P_2 -180 next 1 53 179 -181 input 1 a_p3_P_2 -182 next 1 55 181 -183 input 1 a_CS_P_2 -184 next 1 57 183 -185 input 1 a_NCS_P_3 -186 next 1 59 185 -187 input 1 a_p1_P_3 -188 next 1 61 187 -189 input 1 a_p2_P_3 -190 next 1 63 189 -191 input 1 a_p3_P_3 -192 next 1 65 191 -193 input 1 a_CS_P_3 -194 next 1 67 193 -195 input 1 a_NCS_P_4 -196 next 1 69 195 -197 input 1 a_p1_P_4 -198 next 1 71 197 -199 input 1 a_p2_P_4 -200 next 1 73 199 -201 input 1 a_p3_P_4 -202 next 1 75 201 -203 input 1 a_CS_P_4 -204 next 1 77 203 -205 const 1 1 -206 next 1 79 205 -207 input 1 f00 -208 or 1 155 -207 -209 input 1 f01 -210 or 1 157 207 -211 constd 2 4 -212 ite 2 207 143 145 -213 eq 1 211 212 -214 and 1 210 213 -215 or 1 -209 214 -216 and 1 208 215 -217 input 1 f02 -218 and 1 210 -209 -219 and 1 -213 218 -220 or 1 -217 219 -221 and 1 216 220 -222 input 1 f03 -223 or 1 159 209 -224 or 1 223 217 -225 constd 3 0 -226 concat 4 225 212 -227 constd 4 5 -228 srem 4 226 227 -229 slice 2 228 7 0 -230 ite 2 217 229 212 -231 eq 1 110 230 -232 eq 1 107 230 -233 constd 2 2 -234 eq 1 233 230 -235 constd 2 3 -236 eq 1 235 230 -237 ite 2 236 139 141 -238 ite 2 234 137 237 -239 ite 2 232 135 238 -240 ite 2 231 133 239 -241 eq 1 107 240 -242 and 1 224 241 -243 or 1 -222 242 -244 and 1 221 243 -245 or 1 161 222 -246 input 1 f04 -247 or 1 245 -246 -248 and 1 244 247 -249 or 1 163 246 -250 input 1 f05 -251 or 1 249 -250 -252 and 1 248 251 -253 input 1 f06 -254 or 1 165 -253 -255 and 1 252 254 -256 input 1 f07 -257 or 1 167 253 -258 constd 4 1 -259 concat 4 225 143 -260 add 4 258 259 -261 slice 2 260 7 0 -262 ite 2 207 261 143 -263 concat 4 225 262 -264 sub 4 263 227 -265 slice 2 264 7 0 -266 ite 2 209 265 262 -267 ite 2 253 266 147 -268 eq 1 211 267 -269 and 1 257 268 -270 or 1 -256 269 -271 and 1 255 270 -272 input 1 f08 -273 and 1 257 -256 -274 and 1 -268 273 -275 or 1 -272 274 -276 and 1 271 275 -277 input 1 f09 -278 or 1 169 256 -279 or 1 278 272 -280 concat 4 225 267 -281 srem 4 280 227 -282 slice 2 281 7 0 -283 ite 2 272 282 267 -284 eq 1 110 283 -285 constd 4 0 -286 concat 4 225 230 -287 add 4 258 286 -288 srem 4 287 227 -289 eq 1 285 288 -290 and 1 250 289 -291 add 4 227 286 -292 sub 4 291 258 -293 srem 4 292 227 -294 eq 1 285 293 -295 and 1 246 294 -296 ite 2 295 110 133 -297 ite 2 290 107 296 -298 eq 1 107 283 -299 eq 1 258 288 -300 and 1 250 299 -301 eq 1 258 293 -302 and 1 246 301 -303 ite 2 302 110 135 -304 ite 2 300 107 303 -305 eq 1 233 283 -306 constd 4 2 -307 eq 1 306 288 -308 and 1 250 307 -309 eq 1 306 293 -310 and 1 246 309 -311 ite 2 310 110 137 -312 ite 2 308 107 311 -313 eq 1 235 283 -314 constd 4 3 -315 eq 1 314 288 -316 and 1 250 315 -317 eq 1 314 293 -318 and 1 246 317 -319 ite 2 318 110 139 -320 ite 2 316 107 319 -321 constd 4 4 -322 eq 1 321 288 -323 and 1 250 322 -324 eq 1 321 293 -325 and 1 246 324 -326 ite 2 325 110 141 -327 ite 2 323 107 326 -328 ite 2 313 320 327 -329 ite 2 305 312 328 -330 ite 2 298 304 329 -331 ite 2 284 297 330 -332 eq 1 107 331 -333 and 1 279 332 -334 or 1 -277 333 -335 and 1 276 334 -336 or 1 171 277 -337 input 1 f10 -338 or 1 336 -337 -339 and 1 335 338 -340 or 1 173 337 -341 input 1 f11 -342 or 1 340 -341 -343 and 1 339 342 -344 input 1 f12 -345 or 1 175 -344 -346 and 1 343 345 -347 input 1 f13 -348 or 1 177 344 -349 concat 4 225 266 -350 add 4 258 349 -351 slice 2 350 7 0 -352 ite 2 253 351 266 -353 concat 4 225 352 -354 sub 4 353 227 -355 slice 2 354 7 0 -356 ite 2 256 355 352 -357 ite 2 344 356 149 -358 eq 1 211 357 -359 and 1 348 358 -360 or 1 -347 359 -361 and 1 346 360 -362 input 1 f14 -363 and 1 348 -347 -364 and 1 -358 363 -365 or 1 -362 364 -366 and 1 361 365 -367 input 1 f15 -368 or 1 179 347 -369 or 1 368 362 -370 concat 4 225 357 -371 srem 4 370 227 -372 slice 2 371 7 0 -373 ite 2 362 372 357 -374 eq 1 110 373 -375 concat 4 225 283 -376 add 4 258 375 -377 srem 4 376 227 -378 eq 1 285 377 -379 and 1 341 378 -380 add 4 227 375 -381 sub 4 380 258 -382 srem 4 381 227 -383 eq 1 285 382 -384 and 1 337 383 -385 ite 2 384 110 297 -386 ite 2 379 107 385 -387 eq 1 107 373 -388 eq 1 258 377 -389 and 1 341 388 -390 eq 1 258 382 -391 and 1 337 390 -392 ite 2 391 110 304 -393 ite 2 389 107 392 -394 eq 1 233 373 -395 eq 1 306 377 -396 and 1 341 395 -397 eq 1 306 382 -398 and 1 337 397 -399 ite 2 398 110 312 -400 ite 2 396 107 399 -401 eq 1 235 373 -402 eq 1 314 377 -403 and 1 341 402 -404 eq 1 314 382 -405 and 1 337 404 -406 ite 2 405 110 320 -407 ite 2 403 107 406 -408 eq 1 321 377 -409 and 1 341 408 -410 eq 1 321 382 -411 and 1 337 410 -412 ite 2 411 110 327 -413 ite 2 409 107 412 -414 ite 2 401 407 413 -415 ite 2 394 400 414 -416 ite 2 387 393 415 -417 ite 2 374 386 416 -418 eq 1 107 417 -419 and 1 369 418 -420 or 1 -367 419 -421 and 1 366 420 -422 or 1 181 367 -423 input 1 f16 -424 or 1 422 -423 -425 and 1 421 424 -426 or 1 183 423 -427 input 1 f17 -428 or 1 426 -427 -429 and 1 425 428 -430 input 1 f18 -431 or 1 185 -430 -432 and 1 429 431 -433 input 1 f19 -434 or 1 187 430 -435 concat 4 225 356 -436 add 4 258 435 -437 slice 2 436 7 0 -438 ite 2 344 437 356 -439 concat 4 225 438 -440 sub 4 439 227 -441 slice 2 440 7 0 -442 ite 2 347 441 438 -443 ite 2 430 442 151 -444 eq 1 211 443 -445 and 1 434 444 -446 or 1 -433 445 -447 and 1 432 446 -448 input 1 f20 -449 and 1 434 -433 -450 and 1 -444 449 -451 or 1 -448 450 -452 and 1 447 451 -453 input 1 f21 -454 or 1 189 433 -455 or 1 454 448 -456 concat 4 225 443 -457 srem 4 456 227 -458 slice 2 457 7 0 -459 ite 2 448 458 443 -460 eq 1 110 459 -461 concat 4 225 373 -462 add 4 258 461 -463 srem 4 462 227 -464 eq 1 285 463 -465 and 1 427 464 -466 add 4 227 461 -467 sub 4 466 258 -468 srem 4 467 227 -469 eq 1 285 468 -470 and 1 423 469 -471 ite 2 470 110 386 -472 ite 2 465 107 471 -473 eq 1 107 459 -474 eq 1 258 463 -475 and 1 427 474 -476 eq 1 258 468 -477 and 1 423 476 -478 ite 2 477 110 393 -479 ite 2 475 107 478 -480 eq 1 233 459 -481 eq 1 306 463 -482 and 1 427 481 -483 eq 1 306 468 -484 and 1 423 483 -485 ite 2 484 110 400 -486 ite 2 482 107 485 -487 eq 1 235 459 -488 eq 1 314 463 -489 and 1 427 488 -490 eq 1 314 468 -491 and 1 423 490 -492 ite 2 491 110 407 -493 ite 2 489 107 492 -494 eq 1 321 463 -495 and 1 427 494 -496 eq 1 321 468 -497 and 1 423 496 -498 ite 2 497 110 413 -499 ite 2 495 107 498 -500 ite 2 487 493 499 -501 ite 2 480 486 500 -502 ite 2 473 479 501 -503 ite 2 460 472 502 -504 eq 1 107 503 -505 and 1 455 504 -506 or 1 -453 505 -507 and 1 452 506 -508 or 1 191 453 -509 input 1 f22 -510 or 1 508 -509 -511 and 1 507 510 -512 or 1 193 509 -513 input 1 f23 -514 or 1 512 -513 -515 and 1 511 514 -516 input 1 f24 -517 or 1 195 -516 -518 and 1 515 517 -519 input 1 f25 -520 or 1 197 516 -521 concat 4 225 442 -522 add 4 258 521 -523 slice 2 522 7 0 -524 ite 2 430 523 442 -525 concat 4 225 524 -526 sub 4 525 227 -527 slice 2 526 7 0 -528 ite 2 433 527 524 -529 ite 2 516 528 153 -530 eq 1 211 529 -531 and 1 520 530 -532 or 1 -519 531 -533 and 1 518 532 -534 input 1 f26 -535 and 1 520 -519 -536 and 1 -530 535 -537 or 1 -534 536 -538 and 1 533 537 -539 input 1 f27 -540 or 1 199 519 -541 or 1 540 534 -542 concat 4 225 529 -543 srem 4 542 227 -544 slice 2 543 7 0 -545 ite 2 534 544 529 -546 eq 1 110 545 -547 concat 4 225 459 -548 add 4 258 547 -549 srem 4 548 227 -550 eq 1 285 549 -551 and 1 513 550 -552 add 4 227 547 -553 sub 4 552 258 -554 srem 4 553 227 -555 eq 1 285 554 -556 and 1 509 555 -557 ite 2 556 110 472 -558 ite 2 551 107 557 -559 eq 1 107 545 -560 eq 1 258 549 -561 and 1 513 560 -562 eq 1 258 554 -563 and 1 509 562 -564 ite 2 563 110 479 -565 ite 2 561 107 564 -566 eq 1 233 545 -567 eq 1 306 549 -568 and 1 513 567 -569 eq 1 306 554 -570 and 1 509 569 -571 ite 2 570 110 486 -572 ite 2 568 107 571 -573 eq 1 235 545 -574 eq 1 314 549 -575 and 1 513 574 -576 eq 1 314 554 -577 and 1 509 576 -578 ite 2 577 110 493 -579 ite 2 575 107 578 -580 eq 1 321 549 -581 and 1 513 580 -582 eq 1 321 554 -583 and 1 509 582 -584 ite 2 583 110 499 -585 ite 2 581 107 584 -586 ite 2 573 579 585 -587 ite 2 566 572 586 -588 ite 2 559 565 587 -589 ite 2 546 558 588 -590 eq 1 107 589 -591 and 1 541 590 -592 or 1 -539 591 -593 and 1 538 592 -594 or 1 201 539 -595 input 1 f28 -596 or 1 594 -595 -597 and 1 593 596 -598 or 1 203 595 -599 input 1 f29 -600 or 1 598 -599 -601 and 1 597 600 -602 or 1 207 209 -603 or 1 217 602 -604 or 1 222 603 -605 or 1 246 604 -606 or 1 250 605 -607 or 1 253 606 -608 or 1 256 607 -609 or 1 272 608 -610 or 1 277 609 -611 or 1 337 610 -612 or 1 341 611 -613 or 1 344 612 -614 or 1 347 613 -615 or 1 362 614 -616 or 1 367 615 -617 or 1 423 616 -618 or 1 427 617 -619 or 1 430 618 -620 or 1 433 619 -621 or 1 448 620 -622 or 1 453 621 -623 or 1 509 622 -624 or 1 513 623 -625 or 1 516 624 -626 or 1 519 625 -627 or 1 534 626 -628 or 1 539 627 -629 or 1 595 628 -630 or 1 599 629 -631 and 1 601 630 -632 and 1 155 157 -633 or 1 155 157 -634 and 1 159 633 -635 or 1 632 634 -636 or 1 159 633 -637 and 1 161 636 -638 or 1 635 637 -639 or 1 161 636 -640 and 1 163 639 -641 or 1 638 640 -642 or 1 163 639 -643 and 1 -641 642 -644 and 1 165 167 -645 or 1 165 167 -646 and 1 169 645 -647 or 1 644 646 -648 or 1 169 645 -649 and 1 171 648 -650 or 1 647 649 -651 or 1 171 648 -652 and 1 173 651 -653 or 1 650 652 -654 and 1 643 -653 -655 or 1 173 651 -656 and 1 654 655 -657 and 1 175 177 -658 or 1 175 177 -659 and 1 179 658 -660 or 1 657 659 -661 or 1 179 658 -662 and 1 181 661 -663 or 1 660 662 -664 or 1 181 661 -665 and 1 183 664 -666 or 1 663 665 -667 and 1 656 -666 -668 or 1 183 664 -669 and 1 667 668 -670 and 1 185 187 -671 or 1 185 187 -672 and 1 189 671 -673 or 1 670 672 -674 or 1 189 671 -675 and 1 191 674 -676 or 1 673 675 -677 or 1 191 674 -678 and 1 193 677 -679 or 1 676 678 -680 and 1 669 -679 -681 or 1 193 677 -682 and 1 680 681 -683 and 1 195 197 -684 or 1 195 197 -685 and 1 199 684 -686 or 1 683 685 -687 or 1 199 684 -688 and 1 201 687 -689 or 1 686 688 -690 or 1 201 687 -691 and 1 203 690 -692 or 1 689 691 -693 and 1 682 -692 -694 or 1 203 690 -695 and 1 693 694 -696 and 1 631 695 -697 and 1 218 -217 -698 and 1 155 -207 -699 or 1 698 250 -700 and 1 697 699 -701 and 1 224 -222 -702 or 1 697 699 -703 and 1 701 702 -704 or 1 700 703 -705 and 1 245 -246 -706 or 1 701 702 -707 and 1 705 706 -708 or 1 704 707 -709 and 1 249 -250 -710 or 1 705 706 -711 and 1 709 710 -712 or 1 708 711 -713 or 1 709 710 -714 and 1 -712 713 -715 and 1 273 -272 -716 and 1 165 -253 -717 or 1 716 341 -718 and 1 715 717 -719 and 1 279 -277 -720 or 1 715 717 -721 and 1 719 720 -722 or 1 718 721 -723 and 1 336 -337 -724 or 1 719 720 -725 and 1 723 724 -726 or 1 722 725 -727 and 1 340 -341 -728 or 1 723 724 -729 and 1 727 728 -730 or 1 726 729 -731 and 1 714 -730 -732 or 1 727 728 -733 and 1 731 732 -734 and 1 363 -362 -735 and 1 175 -344 -736 or 1 735 427 -737 and 1 734 736 -738 and 1 369 -367 -739 or 1 734 736 -740 and 1 738 739 -741 or 1 737 740 -742 and 1 422 -423 -743 or 1 738 739 -744 and 1 742 743 -745 or 1 741 744 -746 and 1 426 -427 -747 or 1 742 743 -748 and 1 746 747 -749 or 1 745 748 -750 and 1 733 -749 -751 or 1 746 747 -752 and 1 750 751 -753 and 1 449 -448 -754 and 1 185 -430 -755 or 1 754 513 -756 and 1 753 755 -757 and 1 455 -453 -758 or 1 753 755 -759 and 1 757 758 -760 or 1 756 759 -761 and 1 508 -509 -762 or 1 757 758 -763 and 1 761 762 -764 or 1 760 763 -765 and 1 512 -513 -766 or 1 761 762 -767 and 1 765 766 -768 or 1 764 767 -769 and 1 752 -768 -770 or 1 765 766 -771 and 1 769 770 -772 and 1 535 -534 -773 and 1 195 -516 -774 or 1 773 599 -775 and 1 772 774 -776 and 1 541 -539 -777 or 1 772 774 -778 and 1 776 777 -779 or 1 775 778 -780 and 1 594 -595 -781 or 1 776 777 -782 and 1 780 781 -783 or 1 779 782 -784 and 1 598 -599 -785 or 1 780 781 -786 and 1 784 785 -787 or 1 783 786 -788 and 1 771 -787 -789 or 1 784 785 -790 and 1 788 789 -791 and 1 696 790 -792 concat 4 225 545 -793 add 4 258 792 -794 srem 4 793 227 -795 eq 1 285 794 -796 and 1 599 795 -797 add 4 227 792 -798 sub 4 797 258 -799 srem 4 798 227 -800 eq 1 285 799 -801 and 1 595 800 -802 ite 2 801 110 558 -803 ite 2 796 107 802 -804 eq 1 803 6 -805 and 1 791 804 -806 eq 1 258 794 -807 and 1 599 806 -808 eq 1 258 799 -809 and 1 595 808 -810 ite 2 809 110 565 -811 ite 2 807 107 810 -812 eq 1 811 8 -813 and 1 805 812 -814 eq 1 306 794 -815 and 1 599 814 -816 eq 1 306 799 -817 and 1 595 816 -818 ite 2 817 110 572 -819 ite 2 815 107 818 -820 eq 1 819 10 -821 and 1 813 820 -822 eq 1 314 794 -823 and 1 599 822 -824 eq 1 314 799 -825 and 1 595 824 -826 ite 2 825 110 579 -827 ite 2 823 107 826 -828 eq 1 827 12 -829 and 1 821 828 -830 eq 1 321 794 -831 and 1 599 830 -832 eq 1 321 799 -833 and 1 595 832 -834 ite 2 833 110 585 -835 ite 2 831 107 834 -836 eq 1 835 14 -837 and 1 829 836 -838 concat 4 225 528 -839 add 4 258 838 -840 slice 2 839 7 0 -841 ite 2 516 840 528 -842 concat 4 225 841 -843 sub 4 842 227 -844 slice 2 843 7 0 -845 ite 2 519 844 841 -846 eq 1 845 16 -847 and 1 837 846 -848 eq 1 230 18 -849 and 1 847 848 -850 eq 1 283 20 -851 and 1 849 850 -852 eq 1 373 22 -853 and 1 851 852 -854 eq 1 459 24 -855 and 1 853 854 -856 eq 1 545 26 -857 and 1 855 856 -858 eq 1 699 29 -859 and 1 857 858 -860 eq 1 697 31 -861 and 1 859 860 -862 eq 1 701 33 -863 and 1 861 862 -864 eq 1 705 35 -865 and 1 863 864 -866 eq 1 709 37 -867 and 1 865 866 -868 eq 1 717 39 -869 and 1 867 868 -870 eq 1 715 41 -871 and 1 869 870 -872 eq 1 719 43 -873 and 1 871 872 -874 eq 1 723 45 -875 and 1 873 874 -876 eq 1 727 47 -877 and 1 875 876 -878 eq 1 736 49 -879 and 1 877 878 -880 eq 1 734 51 -881 and 1 879 880 -882 eq 1 738 53 -883 and 1 881 882 -884 eq 1 742 55 -885 and 1 883 884 -886 eq 1 746 57 -887 and 1 885 886 -888 eq 1 755 59 -889 and 1 887 888 -890 eq 1 753 61 -891 and 1 889 890 -892 eq 1 757 63 -893 and 1 891 892 -894 eq 1 761 65 -895 and 1 893 894 -896 eq 1 765 67 -897 and 1 895 896 -898 eq 1 774 69 -899 and 1 897 898 -900 eq 1 772 71 -901 and 1 899 900 -902 eq 1 776 73 -903 and 1 901 902 -904 eq 1 780 75 -905 and 1 903 904 -906 eq 1 784 77 -907 and 1 905 906 -908 and 1 907 81 -909 ite 4 163 258 285 -910 ite 4 173 258 285 -911 add 4 909 910 -912 ite 4 183 258 285 -913 add 4 911 912 -914 ite 4 193 258 285 -915 add 4 913 914 -916 ite 4 203 258 285 -917 add 4 915 916 -918 ulte 1 917 258 -919 ite 1 79 908 -918 -920 next 1 81 919 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-func-interl.btor2 deleted file mode 100644 index 5d24d22e87..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.5.prop1-func-interl.btor2 +++ /dev/null @@ -1,796 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_Slot_0 -7 init 2 6 5 -8 state 2 v_Slot_1 -9 init 2 8 5 -10 state 2 v_Slot_2 -11 init 2 10 5 -12 state 2 v_Slot_3 -13 init 2 12 5 -14 state 2 v_Slot_4 -15 init 2 14 5 -16 state 2 v_next -17 init 2 16 5 -18 state 2 v_my_place_P_0 -19 init 2 18 5 -20 state 2 v_my_place_P_1 -21 init 2 20 5 -22 state 2 v_my_place_P_2 -23 init 2 22 5 -24 state 2 v_my_place_P_3 -25 init 2 24 5 -26 state 2 v_my_place_P_4 -27 init 2 26 5 -28 zero 1 -29 state 1 a_NCS_P_0 -30 init 1 29 28 -31 state 1 a_p1_P_0 -32 init 1 31 28 -33 state 1 a_p2_P_0 -34 init 1 33 28 -35 state 1 a_p3_P_0 -36 init 1 35 28 -37 state 1 a_CS_P_0 -38 init 1 37 28 -39 state 1 a_NCS_P_1 -40 init 1 39 28 -41 state 1 a_p1_P_1 -42 init 1 41 28 -43 state 1 a_p2_P_1 -44 init 1 43 28 -45 state 1 a_p3_P_1 -46 init 1 45 28 -47 state 1 a_CS_P_1 -48 init 1 47 28 -49 state 1 a_NCS_P_2 -50 init 1 49 28 -51 state 1 a_p1_P_2 -52 init 1 51 28 -53 state 1 a_p2_P_2 -54 init 1 53 28 -55 state 1 a_p3_P_2 -56 init 1 55 28 -57 state 1 a_CS_P_2 -58 init 1 57 28 -59 state 1 a_NCS_P_3 -60 init 1 59 28 -61 state 1 a_p1_P_3 -62 init 1 61 28 -63 state 1 a_p2_P_3 -64 init 1 63 28 -65 state 1 a_p3_P_3 -66 init 1 65 28 -67 state 1 a_CS_P_3 -68 init 1 67 28 -69 state 1 a_NCS_P_4 -70 init 1 69 28 -71 state 1 a_p1_P_4 -72 init 1 71 28 -73 state 1 a_p2_P_4 -74 init 1 73 28 -75 state 1 a_p3_P_4 -76 init 1 75 28 -77 state 1 a_CS_P_4 -78 init 1 77 28 -79 state 1 dve_invalid -80 init 1 79 28 -81 constd 4 1 -82 constd 4 0 -83 ite 4 37 81 82 -84 ite 4 47 81 82 -85 add 4 83 84 -86 ite 4 57 81 82 -87 add 4 85 86 -88 ite 4 67 81 82 -89 add 4 87 88 -90 ite 4 77 81 82 -91 add 4 89 90 -92 ulte 1 91 81 -93 and 1 -79 -92 -94 bad 93 -95 constd 2 1 -96 input 1 f29 -97 constd 3 0 -98 concat 4 97 26 -99 add 4 81 98 -100 constd 4 5 -101 srem 4 99 100 -102 eq 1 82 101 -103 and 1 96 102 -104 input 1 f28 -105 add 4 100 98 -106 sub 4 105 81 -107 srem 4 106 100 -108 eq 1 82 107 -109 and 1 104 108 -110 constd 2 0 -111 input 1 f23 -112 concat 4 97 24 -113 add 4 81 112 -114 srem 4 113 100 -115 eq 1 82 114 -116 and 1 111 115 -117 input 1 f22 -118 add 4 100 112 -119 sub 4 118 81 -120 srem 4 119 100 -121 eq 1 82 120 -122 and 1 117 121 -123 input 1 f17 -124 concat 4 97 22 -125 add 4 81 124 -126 srem 4 125 100 -127 eq 1 82 126 -128 and 1 123 127 -129 input 1 f16 -130 add 4 100 124 -131 sub 4 130 81 -132 srem 4 131 100 -133 eq 1 82 132 -134 and 1 129 133 -135 input 1 f11 -136 concat 4 97 20 -137 add 4 81 136 -138 srem 4 137 100 -139 eq 1 82 138 -140 and 1 135 139 -141 input 1 f10 -142 add 4 100 136 -143 sub 4 142 81 -144 srem 4 143 100 -145 eq 1 82 144 -146 and 1 141 145 -147 input 1 f05 -148 concat 4 97 18 -149 add 4 81 148 -150 srem 4 149 100 -151 eq 1 82 150 -152 and 1 147 151 -153 input 1 f04 -154 add 4 100 148 -155 sub 4 154 81 -156 srem 4 155 100 -157 eq 1 82 156 -158 and 1 153 157 -159 xor 2 95 6 -160 ite 2 158 110 159 -161 ite 2 152 95 160 -162 ite 2 146 110 161 -163 ite 2 140 95 162 -164 ite 2 134 110 163 -165 ite 2 128 95 164 -166 ite 2 122 110 165 -167 ite 2 116 95 166 -168 ite 2 109 110 167 -169 ite 2 103 95 168 -170 xor 2 95 169 -171 next 2 6 170 -172 eq 1 81 101 -173 and 1 96 172 -174 eq 1 81 107 -175 and 1 104 174 -176 eq 1 81 114 -177 and 1 111 176 -178 eq 1 81 120 -179 and 1 117 178 -180 eq 1 81 126 -181 and 1 123 180 -182 eq 1 81 132 -183 and 1 129 182 -184 eq 1 81 138 -185 and 1 135 184 -186 eq 1 81 144 -187 and 1 141 186 -188 eq 1 81 150 -189 and 1 147 188 -190 eq 1 81 156 -191 and 1 153 190 -192 ite 2 191 110 8 -193 ite 2 189 95 192 -194 ite 2 187 110 193 -195 ite 2 185 95 194 -196 ite 2 183 110 195 -197 ite 2 181 95 196 -198 ite 2 179 110 197 -199 ite 2 177 95 198 -200 ite 2 175 110 199 -201 ite 2 173 95 200 -202 next 2 8 201 -203 constd 4 2 -204 eq 1 203 101 -205 and 1 96 204 -206 eq 1 203 107 -207 and 1 104 206 -208 eq 1 203 114 -209 and 1 111 208 -210 eq 1 203 120 -211 and 1 117 210 -212 eq 1 203 126 -213 and 1 123 212 -214 eq 1 203 132 -215 and 1 129 214 -216 eq 1 203 138 -217 and 1 135 216 -218 eq 1 203 144 -219 and 1 141 218 -220 eq 1 203 150 -221 and 1 147 220 -222 eq 1 203 156 -223 and 1 153 222 -224 ite 2 223 110 10 -225 ite 2 221 95 224 -226 ite 2 219 110 225 -227 ite 2 217 95 226 -228 ite 2 215 110 227 -229 ite 2 213 95 228 -230 ite 2 211 110 229 -231 ite 2 209 95 230 -232 ite 2 207 110 231 -233 ite 2 205 95 232 -234 next 2 10 233 -235 constd 4 3 -236 eq 1 235 101 -237 and 1 96 236 -238 eq 1 235 107 -239 and 1 104 238 -240 eq 1 235 114 -241 and 1 111 240 -242 eq 1 235 120 -243 and 1 117 242 -244 eq 1 235 126 -245 and 1 123 244 -246 eq 1 235 132 -247 and 1 129 246 -248 eq 1 235 138 -249 and 1 135 248 -250 eq 1 235 144 -251 and 1 141 250 -252 eq 1 235 150 -253 and 1 147 252 -254 eq 1 235 156 -255 and 1 153 254 -256 ite 2 255 110 12 -257 ite 2 253 95 256 -258 ite 2 251 110 257 -259 ite 2 249 95 258 -260 ite 2 247 110 259 -261 ite 2 245 95 260 -262 ite 2 243 110 261 -263 ite 2 241 95 262 -264 ite 2 239 110 263 -265 ite 2 237 95 264 -266 next 2 12 265 -267 constd 4 4 -268 eq 1 267 101 -269 and 1 96 268 -270 eq 1 267 107 -271 and 1 104 270 -272 eq 1 267 114 -273 and 1 111 272 -274 eq 1 267 120 -275 and 1 117 274 -276 eq 1 267 126 -277 and 1 123 276 -278 eq 1 267 132 -279 and 1 129 278 -280 eq 1 267 138 -281 and 1 135 280 -282 eq 1 267 144 -283 and 1 141 282 -284 eq 1 267 150 -285 and 1 147 284 -286 eq 1 267 156 -287 and 1 153 286 -288 ite 2 287 110 14 -289 ite 2 285 95 288 -290 ite 2 283 110 289 -291 ite 2 281 95 290 -292 ite 2 279 110 291 -293 ite 2 277 95 292 -294 ite 2 275 110 293 -295 ite 2 273 95 294 -296 ite 2 271 110 295 -297 ite 2 269 95 296 -298 next 2 14 297 -299 input 1 f25 -300 concat 4 97 16 -301 sub 4 300 100 -302 slice 2 301 7 0 -303 input 1 f24 -304 add 4 81 300 -305 slice 2 304 7 0 -306 input 1 f19 -307 input 1 f18 -308 input 1 f13 -309 input 1 f12 -310 input 1 f07 -311 input 1 f06 -312 input 1 f01 -313 input 1 f00 -314 ite 2 313 305 16 -315 ite 2 312 302 314 -316 ite 2 311 305 315 -317 ite 2 310 302 316 -318 ite 2 309 305 317 -319 ite 2 308 302 318 -320 ite 2 307 305 319 -321 ite 2 306 302 320 -322 ite 2 303 305 321 -323 ite 2 299 302 322 -324 next 2 16 323 -325 input 1 f02 -326 srem 4 148 100 -327 slice 2 326 7 0 -328 ite 2 313 16 18 -329 ite 2 325 327 328 -330 next 2 18 329 -331 input 1 f08 -332 srem 4 136 100 -333 slice 2 332 7 0 -334 ite 2 311 16 20 -335 ite 2 331 333 334 -336 next 2 20 335 -337 input 1 f14 -338 srem 4 124 100 -339 slice 2 338 7 0 -340 ite 2 309 16 22 -341 ite 2 337 339 340 -342 next 2 22 341 -343 input 1 f20 -344 srem 4 112 100 -345 slice 2 344 7 0 -346 ite 2 307 16 24 -347 ite 2 343 345 346 -348 next 2 24 347 -349 input 1 f26 -350 srem 4 98 100 -351 slice 2 350 7 0 -352 ite 2 303 16 26 -353 ite 2 349 351 352 -354 next 2 26 353 -355 and 1 -29 -313 -356 or 1 355 147 -357 next 1 29 -356 -358 or 1 31 313 -359 and 1 358 -312 -360 and 1 359 -325 -361 next 1 31 360 -362 or 1 33 312 -363 or 1 362 325 -364 input 1 f03 -365 and 1 363 -364 -366 next 1 33 365 -367 or 1 35 364 -368 and 1 367 -153 -369 next 1 35 368 -370 or 1 37 153 -371 and 1 370 -147 -372 next 1 37 371 -373 and 1 -39 -311 -374 or 1 373 135 -375 next 1 39 -374 -376 or 1 41 311 -377 and 1 376 -310 -378 and 1 377 -331 -379 next 1 41 378 -380 or 1 43 310 -381 or 1 380 331 -382 input 1 f09 -383 and 1 381 -382 -384 next 1 43 383 -385 or 1 45 382 -386 and 1 385 -141 -387 next 1 45 386 -388 or 1 47 141 -389 and 1 388 -135 -390 next 1 47 389 -391 and 1 -49 -309 -392 or 1 391 123 -393 next 1 49 -392 -394 or 1 51 309 -395 and 1 394 -308 -396 and 1 395 -337 -397 next 1 51 396 -398 or 1 53 308 -399 or 1 398 337 -400 input 1 f15 -401 and 1 399 -400 -402 next 1 53 401 -403 or 1 55 400 -404 and 1 403 -129 -405 next 1 55 404 -406 or 1 57 129 -407 and 1 406 -123 -408 next 1 57 407 -409 and 1 -59 -307 -410 or 1 409 111 -411 next 1 59 -410 -412 or 1 61 307 -413 and 1 412 -306 -414 and 1 413 -343 -415 next 1 61 414 -416 or 1 63 306 -417 or 1 416 343 -418 input 1 f21 -419 and 1 417 -418 -420 next 1 63 419 -421 or 1 65 418 -422 and 1 421 -117 -423 next 1 65 422 -424 or 1 67 117 -425 and 1 424 -111 -426 next 1 67 425 -427 and 1 -69 -303 -428 or 1 427 96 -429 next 1 69 -428 -430 or 1 71 303 -431 and 1 430 -299 -432 and 1 431 -349 -433 next 1 71 432 -434 or 1 73 299 -435 or 1 434 349 -436 input 1 f27 -437 and 1 435 -436 -438 next 1 73 437 -439 or 1 75 436 -440 and 1 439 -104 -441 next 1 75 440 -442 or 1 77 104 -443 and 1 442 -96 -444 next 1 77 443 -445 or 1 -29 -313 -446 constd 2 4 -447 eq 1 446 18 -448 and 1 31 447 -449 or 1 -312 448 -450 and 1 445 449 -451 and 1 31 -447 -452 or 1 -325 451 -453 and 1 450 452 -454 eq 1 110 18 -455 eq 1 95 18 -456 constd 2 2 -457 eq 1 456 18 -458 constd 2 3 -459 eq 1 458 18 -460 ite 2 459 12 14 -461 ite 2 457 10 460 -462 ite 2 455 8 461 -463 ite 2 454 159 462 -464 eq 1 95 463 -465 and 1 33 464 -466 or 1 -364 465 -467 and 1 453 466 -468 or 1 35 -153 -469 and 1 467 468 -470 or 1 37 -147 -471 and 1 469 470 -472 or 1 -39 -311 -473 and 1 471 472 -474 eq 1 446 20 -475 and 1 41 474 -476 or 1 -310 475 -477 and 1 473 476 -478 and 1 41 -474 -479 or 1 -331 478 -480 and 1 477 479 -481 eq 1 110 20 -482 eq 1 95 20 -483 eq 1 456 20 -484 eq 1 458 20 -485 ite 2 484 12 14 -486 ite 2 483 10 485 -487 ite 2 482 8 486 -488 ite 2 481 159 487 -489 eq 1 95 488 -490 and 1 43 489 -491 or 1 -382 490 -492 and 1 480 491 -493 or 1 45 -141 -494 and 1 492 493 -495 or 1 47 -135 -496 and 1 494 495 -497 or 1 -49 -309 -498 and 1 496 497 -499 eq 1 446 22 -500 and 1 51 499 -501 or 1 -308 500 -502 and 1 498 501 -503 and 1 51 -499 -504 or 1 -337 503 -505 and 1 502 504 -506 eq 1 110 22 -507 eq 1 95 22 -508 eq 1 456 22 -509 eq 1 458 22 -510 ite 2 509 12 14 -511 ite 2 508 10 510 -512 ite 2 507 8 511 -513 ite 2 506 159 512 -514 eq 1 95 513 -515 and 1 53 514 -516 or 1 -400 515 -517 and 1 505 516 -518 or 1 55 -129 -519 and 1 517 518 -520 or 1 57 -123 -521 and 1 519 520 -522 or 1 -59 -307 -523 and 1 521 522 -524 eq 1 446 24 -525 and 1 61 524 -526 or 1 -306 525 -527 and 1 523 526 -528 and 1 61 -524 -529 or 1 -343 528 -530 and 1 527 529 -531 eq 1 110 24 -532 eq 1 95 24 -533 eq 1 456 24 -534 eq 1 458 24 -535 ite 2 534 12 14 -536 ite 2 533 10 535 -537 ite 2 532 8 536 -538 ite 2 531 159 537 -539 eq 1 95 538 -540 and 1 63 539 -541 or 1 -418 540 -542 and 1 530 541 -543 or 1 65 -117 -544 and 1 542 543 -545 or 1 67 -111 -546 and 1 544 545 -547 or 1 -69 -303 -548 and 1 546 547 -549 eq 1 446 26 -550 and 1 71 549 -551 or 1 -299 550 -552 and 1 548 551 -553 and 1 71 -549 -554 or 1 -349 553 -555 and 1 552 554 -556 eq 1 110 26 -557 eq 1 95 26 -558 eq 1 456 26 -559 eq 1 458 26 -560 ite 2 559 12 14 -561 ite 2 558 10 560 -562 ite 2 557 8 561 -563 ite 2 556 159 562 -564 eq 1 95 563 -565 and 1 73 564 -566 or 1 -436 565 -567 and 1 555 566 -568 or 1 75 -104 -569 and 1 567 568 -570 or 1 77 -96 -571 and 1 569 570 -572 or 1 313 312 -573 or 1 325 572 -574 or 1 364 573 -575 or 1 153 574 -576 or 1 147 575 -577 or 1 311 576 -578 or 1 310 577 -579 or 1 331 578 -580 or 1 382 579 -581 or 1 141 580 -582 or 1 135 581 -583 or 1 309 582 -584 or 1 308 583 -585 or 1 337 584 -586 or 1 400 585 -587 or 1 129 586 -588 or 1 123 587 -589 or 1 307 588 -590 or 1 306 589 -591 or 1 343 590 -592 or 1 418 591 -593 or 1 117 592 -594 or 1 111 593 -595 or 1 303 594 -596 or 1 299 595 -597 or 1 349 596 -598 or 1 436 597 -599 or 1 104 598 -600 or 1 96 599 -601 and 1 571 600 -602 and 1 313 312 -603 and 1 325 572 -604 or 1 602 603 -605 and 1 364 573 -606 or 1 604 605 -607 and 1 153 574 -608 or 1 606 607 -609 and 1 147 575 -610 or 1 608 609 -611 and 1 311 576 -612 or 1 610 611 -613 and 1 310 577 -614 or 1 612 613 -615 and 1 331 578 -616 or 1 614 615 -617 and 1 382 579 -618 or 1 616 617 -619 and 1 141 580 -620 or 1 618 619 -621 and 1 135 581 -622 or 1 620 621 -623 and 1 309 582 -624 or 1 622 623 -625 and 1 308 583 -626 or 1 624 625 -627 and 1 337 584 -628 or 1 626 627 -629 and 1 400 585 -630 or 1 628 629 -631 and 1 129 586 -632 or 1 630 631 -633 and 1 123 587 -634 or 1 632 633 -635 and 1 307 588 -636 or 1 634 635 -637 and 1 306 589 -638 or 1 636 637 -639 and 1 343 590 -640 or 1 638 639 -641 and 1 418 591 -642 or 1 640 641 -643 and 1 117 592 -644 or 1 642 643 -645 and 1 111 593 -646 or 1 644 645 -647 and 1 303 594 -648 or 1 646 647 -649 and 1 299 595 -650 or 1 648 649 -651 and 1 349 596 -652 or 1 650 651 -653 and 1 436 597 -654 or 1 652 653 -655 and 1 104 598 -656 or 1 654 655 -657 and 1 96 599 -658 or 1 656 657 -659 and 1 601 -658 -660 and 1 -29 31 -661 or 1 -29 31 -662 and 1 33 661 -663 or 1 660 662 -664 or 1 33 661 -665 and 1 35 664 -666 or 1 663 665 -667 or 1 35 664 -668 and 1 37 667 -669 or 1 666 668 -670 or 1 37 667 -671 and 1 -669 670 -672 and 1 -39 41 -673 or 1 -39 41 -674 and 1 43 673 -675 or 1 672 674 -676 or 1 43 673 -677 and 1 45 676 -678 or 1 675 677 -679 or 1 45 676 -680 and 1 47 679 -681 or 1 678 680 -682 and 1 671 -681 -683 or 1 47 679 -684 and 1 682 683 -685 and 1 -49 51 -686 or 1 -49 51 -687 and 1 53 686 -688 or 1 685 687 -689 or 1 53 686 -690 and 1 55 689 -691 or 1 688 690 -692 or 1 55 689 -693 and 1 57 692 -694 or 1 691 693 -695 and 1 684 -694 -696 or 1 57 692 -697 and 1 695 696 -698 and 1 -59 61 -699 or 1 -59 61 -700 and 1 63 699 -701 or 1 698 700 -702 or 1 63 699 -703 and 1 65 702 -704 or 1 701 703 -705 or 1 65 702 -706 and 1 67 705 -707 or 1 704 706 -708 and 1 697 -707 -709 or 1 67 705 -710 and 1 708 709 -711 and 1 -69 71 -712 or 1 -69 71 -713 and 1 73 712 -714 or 1 711 713 -715 or 1 73 712 -716 and 1 75 715 -717 or 1 714 716 -718 or 1 75 715 -719 and 1 77 718 -720 or 1 717 719 -721 and 1 710 -720 -722 or 1 77 718 -723 and 1 721 722 -724 and 1 659 723 -725 and 1 360 356 -726 or 1 360 356 -727 and 1 365 726 -728 or 1 725 727 -729 or 1 365 726 -730 and 1 368 729 -731 or 1 728 730 -732 or 1 368 729 -733 and 1 371 732 -734 or 1 731 733 -735 or 1 371 732 -736 and 1 -734 735 -737 and 1 378 374 -738 or 1 378 374 -739 and 1 383 738 -740 or 1 737 739 -741 or 1 383 738 -742 and 1 386 741 -743 or 1 740 742 -744 or 1 386 741 -745 and 1 389 744 -746 or 1 743 745 -747 and 1 736 -746 -748 or 1 389 744 -749 and 1 747 748 -750 and 1 396 392 -751 or 1 396 392 -752 and 1 401 751 -753 or 1 750 752 -754 or 1 401 751 -755 and 1 404 754 -756 or 1 753 755 -757 or 1 404 754 -758 and 1 407 757 -759 or 1 756 758 -760 and 1 749 -759 -761 or 1 407 757 -762 and 1 760 761 -763 and 1 414 410 -764 or 1 414 410 -765 and 1 419 764 -766 or 1 763 765 -767 or 1 419 764 -768 and 1 422 767 -769 or 1 766 768 -770 or 1 422 767 -771 and 1 425 770 -772 or 1 769 771 -773 and 1 762 -772 -774 or 1 425 770 -775 and 1 773 774 -776 and 1 432 428 -777 or 1 432 428 -778 and 1 437 777 -779 or 1 776 778 -780 or 1 437 777 -781 and 1 440 780 -782 or 1 779 781 -783 or 1 440 780 -784 and 1 443 783 -785 or 1 782 784 -786 and 1 775 -785 -787 or 1 443 783 -788 and 1 786 787 -789 and 1 724 788 -790 and 1 789 -79 -791 next 1 79 -790 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-back-serstep.btor2 deleted file mode 100644 index 34e066cf4d..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-back-serstep.btor2 +++ /dev/null @@ -1,1104 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_Slot_0 -7 init 2 6 5 -8 state 2 nextv_Slot_1 -9 init 2 8 5 -10 state 2 nextv_Slot_2 -11 init 2 10 5 -12 state 2 nextv_Slot_3 -13 init 2 12 5 -14 state 2 nextv_Slot_4 -15 init 2 14 5 -16 state 2 nextv_Slot_5 -17 init 2 16 5 -18 state 2 nextv_next -19 init 2 18 5 -20 state 2 nextv_my_place_P_0 -21 init 2 20 5 -22 state 2 nextv_my_place_P_1 -23 init 2 22 5 -24 state 2 nextv_my_place_P_2 -25 init 2 24 5 -26 state 2 nextv_my_place_P_3 -27 init 2 26 5 -28 state 2 nextv_my_place_P_4 -29 init 2 28 5 -30 state 2 nextv_my_place_P_5 -31 init 2 30 5 -32 zero 1 -33 state 1 nexta_NCS_P_0 -34 init 1 33 32 -35 state 1 nexta_p1_P_0 -36 init 1 35 32 -37 state 1 nexta_p2_P_0 -38 init 1 37 32 -39 state 1 nexta_p3_P_0 -40 init 1 39 32 -41 state 1 nexta_CS_P_0 -42 init 1 41 32 -43 state 1 nexta_NCS_P_1 -44 init 1 43 32 -45 state 1 nexta_p1_P_1 -46 init 1 45 32 -47 state 1 nexta_p2_P_1 -48 init 1 47 32 -49 state 1 nexta_p3_P_1 -50 init 1 49 32 -51 state 1 nexta_CS_P_1 -52 init 1 51 32 -53 state 1 nexta_NCS_P_2 -54 init 1 53 32 -55 state 1 nexta_p1_P_2 -56 init 1 55 32 -57 state 1 nexta_p2_P_2 -58 init 1 57 32 -59 state 1 nexta_p3_P_2 -60 init 1 59 32 -61 state 1 nexta_CS_P_2 -62 init 1 61 32 -63 state 1 nexta_NCS_P_3 -64 init 1 63 32 -65 state 1 nexta_p1_P_3 -66 init 1 65 32 -67 state 1 nexta_p2_P_3 -68 init 1 67 32 -69 state 1 nexta_p3_P_3 -70 init 1 69 32 -71 state 1 nexta_CS_P_3 -72 init 1 71 32 -73 state 1 nexta_NCS_P_4 -74 init 1 73 32 -75 state 1 nexta_p1_P_4 -76 init 1 75 32 -77 state 1 nexta_p2_P_4 -78 init 1 77 32 -79 state 1 nexta_p3_P_4 -80 init 1 79 32 -81 state 1 nexta_CS_P_4 -82 init 1 81 32 -83 state 1 nexta_NCS_P_5 -84 init 1 83 32 -85 state 1 nexta_p1_P_5 -86 init 1 85 32 -87 state 1 nexta_p2_P_5 -88 init 1 87 32 -89 state 1 nexta_p3_P_5 -90 init 1 89 32 -91 state 1 nexta_CS_P_5 -92 init 1 91 32 -93 state 1 dve_initialized -94 init 1 93 32 -95 state 1 dve_valid -96 init 1 95 32 -97 and 1 33 -35 -98 and 1 97 -37 -99 and 1 98 -39 -100 and 1 99 -41 -101 and 1 100 43 -102 and 1 101 -45 -103 and 1 102 -47 -104 and 1 103 -49 -105 and 1 104 -51 -106 and 1 105 53 -107 and 1 106 -55 -108 and 1 107 -57 -109 and 1 108 -59 -110 and 1 109 -61 -111 and 1 110 63 -112 and 1 111 -65 -113 and 1 112 -67 -114 and 1 113 -69 -115 and 1 114 -71 -116 and 1 115 73 -117 and 1 116 -75 -118 and 1 117 -77 -119 and 1 118 -79 -120 and 1 119 -81 -121 and 1 120 83 -122 and 1 121 -85 -123 and 1 122 -87 -124 and 1 123 -89 -125 and 1 124 -91 -126 constd 2 1 -127 eq 1 126 6 -128 and 1 125 127 -129 constd 2 0 -130 eq 1 129 8 -131 and 1 128 130 -132 eq 1 129 10 -133 and 1 131 132 -134 eq 1 129 12 -135 and 1 133 134 -136 eq 1 129 14 -137 and 1 135 136 -138 eq 1 129 16 -139 and 1 137 138 -140 eq 1 129 18 -141 and 1 139 140 -142 eq 1 129 20 -143 and 1 141 142 -144 eq 1 129 22 -145 and 1 143 144 -146 eq 1 129 24 -147 and 1 145 146 -148 eq 1 129 26 -149 and 1 147 148 -150 eq 1 129 28 -151 and 1 149 150 -152 eq 1 129 30 -153 and 1 151 152 -154 and 1 95 153 -155 bad 154 -156 input 2 v_Slot_0 -157 next 2 6 156 -158 input 2 v_Slot_1 -159 next 2 8 158 -160 input 2 v_Slot_2 -161 next 2 10 160 -162 input 2 v_Slot_3 -163 next 2 12 162 -164 input 2 v_Slot_4 -165 next 2 14 164 -166 input 2 v_Slot_5 -167 next 2 16 166 -168 input 2 v_next -169 next 2 18 168 -170 input 2 v_my_place_P_0 -171 next 2 20 170 -172 input 2 v_my_place_P_1 -173 next 2 22 172 -174 input 2 v_my_place_P_2 -175 next 2 24 174 -176 input 2 v_my_place_P_3 -177 next 2 26 176 -178 input 2 v_my_place_P_4 -179 next 2 28 178 -180 input 2 v_my_place_P_5 -181 next 2 30 180 -182 input 1 a_NCS_P_0 -183 next 1 33 182 -184 input 1 a_p1_P_0 -185 next 1 35 184 -186 input 1 a_p2_P_0 -187 next 1 37 186 -188 input 1 a_p3_P_0 -189 next 1 39 188 -190 input 1 a_CS_P_0 -191 next 1 41 190 -192 input 1 a_NCS_P_1 -193 next 1 43 192 -194 input 1 a_p1_P_1 -195 next 1 45 194 -196 input 1 a_p2_P_1 -197 next 1 47 196 -198 input 1 a_p3_P_1 -199 next 1 49 198 -200 input 1 a_CS_P_1 -201 next 1 51 200 -202 input 1 a_NCS_P_2 -203 next 1 53 202 -204 input 1 a_p1_P_2 -205 next 1 55 204 -206 input 1 a_p2_P_2 -207 next 1 57 206 -208 input 1 a_p3_P_2 -209 next 1 59 208 -210 input 1 a_CS_P_2 -211 next 1 61 210 -212 input 1 a_NCS_P_3 -213 next 1 63 212 -214 input 1 a_p1_P_3 -215 next 1 65 214 -216 input 1 a_p2_P_3 -217 next 1 67 216 -218 input 1 a_p3_P_3 -219 next 1 69 218 -220 input 1 a_CS_P_3 -221 next 1 71 220 -222 input 1 a_NCS_P_4 -223 next 1 73 222 -224 input 1 a_p1_P_4 -225 next 1 75 224 -226 input 1 a_p2_P_4 -227 next 1 77 226 -228 input 1 a_p3_P_4 -229 next 1 79 228 -230 input 1 a_CS_P_4 -231 next 1 81 230 -232 input 1 a_NCS_P_5 -233 next 1 83 232 -234 input 1 a_p1_P_5 -235 next 1 85 234 -236 input 1 a_p2_P_5 -237 next 1 87 236 -238 input 1 a_p3_P_5 -239 next 1 89 238 -240 input 1 a_CS_P_5 -241 next 1 91 240 -242 const 1 1 -243 next 1 93 242 -244 input 1 f00 -245 or 1 182 -244 -246 input 1 f01 -247 or 1 184 244 -248 constd 2 5 -249 ite 2 244 168 170 -250 eq 1 248 249 -251 and 1 247 250 -252 or 1 -246 251 -253 and 1 245 252 -254 input 1 f02 -255 and 1 247 -246 -256 and 1 -250 255 -257 or 1 -254 256 -258 and 1 253 257 -259 input 1 f03 -260 or 1 186 246 -261 or 1 260 254 -262 constd 3 0 -263 concat 4 262 249 -264 constd 4 6 -265 srem 4 263 264 -266 slice 2 265 7 0 -267 ite 2 254 266 249 -268 eq 1 129 267 -269 eq 1 126 267 -270 constd 2 2 -271 eq 1 270 267 -272 constd 2 3 -273 eq 1 272 267 -274 constd 2 4 -275 eq 1 274 267 -276 ite 2 275 164 166 -277 ite 2 273 162 276 -278 ite 2 271 160 277 -279 ite 2 269 158 278 -280 ite 2 268 156 279 -281 eq 1 126 280 -282 and 1 261 281 -283 or 1 -259 282 -284 and 1 258 283 -285 or 1 188 259 -286 input 1 f04 -287 or 1 285 -286 -288 and 1 284 287 -289 or 1 190 286 -290 input 1 f05 -291 or 1 289 -290 -292 and 1 288 291 -293 input 1 f06 -294 or 1 192 -293 -295 and 1 292 294 -296 input 1 f07 -297 or 1 194 293 -298 constd 4 1 -299 concat 4 262 168 -300 add 4 298 299 -301 slice 2 300 7 0 -302 ite 2 244 301 168 -303 concat 4 262 302 -304 sub 4 303 264 -305 slice 2 304 7 0 -306 ite 2 246 305 302 -307 ite 2 293 306 172 -308 eq 1 248 307 -309 and 1 297 308 -310 or 1 -296 309 -311 and 1 295 310 -312 input 1 f08 -313 and 1 297 -296 -314 and 1 -308 313 -315 or 1 -312 314 -316 and 1 311 315 -317 input 1 f09 -318 or 1 196 296 -319 or 1 318 312 -320 concat 4 262 307 -321 srem 4 320 264 -322 slice 2 321 7 0 -323 ite 2 312 322 307 -324 eq 1 129 323 -325 constd 4 0 -326 concat 4 262 267 -327 add 4 298 326 -328 srem 4 327 264 -329 eq 1 325 328 -330 and 1 290 329 -331 and 1 268 286 -332 ite 2 331 129 156 -333 ite 2 330 126 332 -334 eq 1 126 323 -335 eq 1 298 328 -336 and 1 290 335 -337 and 1 269 286 -338 ite 2 337 129 158 -339 ite 2 336 126 338 -340 eq 1 270 323 -341 constd 4 2 -342 eq 1 341 328 -343 and 1 290 342 -344 and 1 271 286 -345 ite 2 344 129 160 -346 ite 2 343 126 345 -347 eq 1 272 323 -348 constd 4 3 -349 eq 1 348 328 -350 and 1 290 349 -351 and 1 273 286 -352 ite 2 351 129 162 -353 ite 2 350 126 352 -354 eq 1 274 323 -355 constd 4 4 -356 eq 1 355 328 -357 and 1 290 356 -358 and 1 275 286 -359 ite 2 358 129 164 -360 ite 2 357 126 359 -361 constd 4 5 -362 eq 1 361 328 -363 and 1 290 362 -364 eq 1 248 267 -365 and 1 364 286 -366 ite 2 365 129 166 -367 ite 2 363 126 366 -368 ite 2 354 360 367 -369 ite 2 347 353 368 -370 ite 2 340 346 369 -371 ite 2 334 339 370 -372 ite 2 324 333 371 -373 eq 1 126 372 -374 and 1 319 373 -375 or 1 -317 374 -376 and 1 316 375 -377 or 1 198 317 -378 input 1 f10 -379 or 1 377 -378 -380 and 1 376 379 -381 or 1 200 378 -382 input 1 f11 -383 or 1 381 -382 -384 and 1 380 383 -385 input 1 f12 -386 or 1 202 -385 -387 and 1 384 386 -388 input 1 f13 -389 or 1 204 385 -390 concat 4 262 306 -391 add 4 298 390 -392 slice 2 391 7 0 -393 ite 2 293 392 306 -394 concat 4 262 393 -395 sub 4 394 264 -396 slice 2 395 7 0 -397 ite 2 296 396 393 -398 ite 2 385 397 174 -399 eq 1 248 398 -400 and 1 389 399 -401 or 1 -388 400 -402 and 1 387 401 -403 input 1 f14 -404 and 1 389 -388 -405 and 1 -399 404 -406 or 1 -403 405 -407 and 1 402 406 -408 input 1 f15 -409 or 1 206 388 -410 or 1 409 403 -411 concat 4 262 398 -412 srem 4 411 264 -413 slice 2 412 7 0 -414 ite 2 403 413 398 -415 eq 1 129 414 -416 concat 4 262 323 -417 add 4 298 416 -418 srem 4 417 264 -419 eq 1 325 418 -420 and 1 382 419 -421 and 1 324 378 -422 ite 2 421 129 333 -423 ite 2 420 126 422 -424 eq 1 126 414 -425 eq 1 298 418 -426 and 1 382 425 -427 and 1 334 378 -428 ite 2 427 129 339 -429 ite 2 426 126 428 -430 eq 1 270 414 -431 eq 1 341 418 -432 and 1 382 431 -433 and 1 340 378 -434 ite 2 433 129 346 -435 ite 2 432 126 434 -436 eq 1 272 414 -437 eq 1 348 418 -438 and 1 382 437 -439 and 1 347 378 -440 ite 2 439 129 353 -441 ite 2 438 126 440 -442 eq 1 274 414 -443 eq 1 355 418 -444 and 1 382 443 -445 and 1 354 378 -446 ite 2 445 129 360 -447 ite 2 444 126 446 -448 eq 1 361 418 -449 and 1 382 448 -450 eq 1 248 323 -451 and 1 450 378 -452 ite 2 451 129 367 -453 ite 2 449 126 452 -454 ite 2 442 447 453 -455 ite 2 436 441 454 -456 ite 2 430 435 455 -457 ite 2 424 429 456 -458 ite 2 415 423 457 -459 eq 1 126 458 -460 and 1 410 459 -461 or 1 -408 460 -462 and 1 407 461 -463 or 1 208 408 -464 input 1 f16 -465 or 1 463 -464 -466 and 1 462 465 -467 or 1 210 464 -468 input 1 f17 -469 or 1 467 -468 -470 and 1 466 469 -471 input 1 f18 -472 or 1 212 -471 -473 and 1 470 472 -474 input 1 f19 -475 or 1 214 471 -476 concat 4 262 397 -477 add 4 298 476 -478 slice 2 477 7 0 -479 ite 2 385 478 397 -480 concat 4 262 479 -481 sub 4 480 264 -482 slice 2 481 7 0 -483 ite 2 388 482 479 -484 ite 2 471 483 176 -485 eq 1 248 484 -486 and 1 475 485 -487 or 1 -474 486 -488 and 1 473 487 -489 input 1 f20 -490 and 1 475 -474 -491 and 1 -485 490 -492 or 1 -489 491 -493 and 1 488 492 -494 input 1 f21 -495 or 1 216 474 -496 or 1 495 489 -497 concat 4 262 484 -498 srem 4 497 264 -499 slice 2 498 7 0 -500 ite 2 489 499 484 -501 eq 1 129 500 -502 concat 4 262 414 -503 add 4 298 502 -504 srem 4 503 264 -505 eq 1 325 504 -506 and 1 468 505 -507 and 1 415 464 -508 ite 2 507 129 423 -509 ite 2 506 126 508 -510 eq 1 126 500 -511 eq 1 298 504 -512 and 1 468 511 -513 and 1 424 464 -514 ite 2 513 129 429 -515 ite 2 512 126 514 -516 eq 1 270 500 -517 eq 1 341 504 -518 and 1 468 517 -519 and 1 430 464 -520 ite 2 519 129 435 -521 ite 2 518 126 520 -522 eq 1 272 500 -523 eq 1 348 504 -524 and 1 468 523 -525 and 1 436 464 -526 ite 2 525 129 441 -527 ite 2 524 126 526 -528 eq 1 274 500 -529 eq 1 355 504 -530 and 1 468 529 -531 and 1 442 464 -532 ite 2 531 129 447 -533 ite 2 530 126 532 -534 eq 1 361 504 -535 and 1 468 534 -536 eq 1 248 414 -537 and 1 536 464 -538 ite 2 537 129 453 -539 ite 2 535 126 538 -540 ite 2 528 533 539 -541 ite 2 522 527 540 -542 ite 2 516 521 541 -543 ite 2 510 515 542 -544 ite 2 501 509 543 -545 eq 1 126 544 -546 and 1 496 545 -547 or 1 -494 546 -548 and 1 493 547 -549 or 1 218 494 -550 input 1 f22 -551 or 1 549 -550 -552 and 1 548 551 -553 or 1 220 550 -554 input 1 f23 -555 or 1 553 -554 -556 and 1 552 555 -557 input 1 f24 -558 or 1 222 -557 -559 and 1 556 558 -560 input 1 f25 -561 or 1 224 557 -562 concat 4 262 483 -563 add 4 298 562 -564 slice 2 563 7 0 -565 ite 2 471 564 483 -566 concat 4 262 565 -567 sub 4 566 264 -568 slice 2 567 7 0 -569 ite 2 474 568 565 -570 ite 2 557 569 178 -571 eq 1 248 570 -572 and 1 561 571 -573 or 1 -560 572 -574 and 1 559 573 -575 input 1 f26 -576 and 1 561 -560 -577 and 1 -571 576 -578 or 1 -575 577 -579 and 1 574 578 -580 input 1 f27 -581 or 1 226 560 -582 or 1 581 575 -583 concat 4 262 570 -584 srem 4 583 264 -585 slice 2 584 7 0 -586 ite 2 575 585 570 -587 eq 1 129 586 -588 concat 4 262 500 -589 add 4 298 588 -590 srem 4 589 264 -591 eq 1 325 590 -592 and 1 554 591 -593 and 1 501 550 -594 ite 2 593 129 509 -595 ite 2 592 126 594 -596 eq 1 126 586 -597 eq 1 298 590 -598 and 1 554 597 -599 and 1 510 550 -600 ite 2 599 129 515 -601 ite 2 598 126 600 -602 eq 1 270 586 -603 eq 1 341 590 -604 and 1 554 603 -605 and 1 516 550 -606 ite 2 605 129 521 -607 ite 2 604 126 606 -608 eq 1 272 586 -609 eq 1 348 590 -610 and 1 554 609 -611 and 1 522 550 -612 ite 2 611 129 527 -613 ite 2 610 126 612 -614 eq 1 274 586 -615 eq 1 355 590 -616 and 1 554 615 -617 and 1 528 550 -618 ite 2 617 129 533 -619 ite 2 616 126 618 -620 eq 1 361 590 -621 and 1 554 620 -622 eq 1 248 500 -623 and 1 622 550 -624 ite 2 623 129 539 -625 ite 2 621 126 624 -626 ite 2 614 619 625 -627 ite 2 608 613 626 -628 ite 2 602 607 627 -629 ite 2 596 601 628 -630 ite 2 587 595 629 -631 eq 1 126 630 -632 and 1 582 631 -633 or 1 -580 632 -634 and 1 579 633 -635 or 1 228 580 -636 input 1 f28 -637 or 1 635 -636 -638 and 1 634 637 -639 or 1 230 636 -640 input 1 f29 -641 or 1 639 -640 -642 and 1 638 641 -643 input 1 f30 -644 or 1 232 -643 -645 and 1 642 644 -646 input 1 f31 -647 or 1 234 643 -648 concat 4 262 569 -649 add 4 298 648 -650 slice 2 649 7 0 -651 ite 2 557 650 569 -652 concat 4 262 651 -653 sub 4 652 264 -654 slice 2 653 7 0 -655 ite 2 560 654 651 -656 ite 2 643 655 180 -657 eq 1 248 656 -658 and 1 647 657 -659 or 1 -646 658 -660 and 1 645 659 -661 input 1 f32 -662 and 1 647 -646 -663 and 1 -657 662 -664 or 1 -661 663 -665 and 1 660 664 -666 input 1 f33 -667 or 1 236 646 -668 or 1 667 661 -669 concat 4 262 656 -670 srem 4 669 264 -671 slice 2 670 7 0 -672 ite 2 661 671 656 -673 eq 1 129 672 -674 concat 4 262 586 -675 add 4 298 674 -676 srem 4 675 264 -677 eq 1 325 676 -678 and 1 640 677 -679 and 1 587 636 -680 ite 2 679 129 595 -681 ite 2 678 126 680 -682 eq 1 126 672 -683 eq 1 298 676 -684 and 1 640 683 -685 and 1 596 636 -686 ite 2 685 129 601 -687 ite 2 684 126 686 -688 eq 1 270 672 -689 eq 1 341 676 -690 and 1 640 689 -691 and 1 602 636 -692 ite 2 691 129 607 -693 ite 2 690 126 692 -694 eq 1 272 672 -695 eq 1 348 676 -696 and 1 640 695 -697 and 1 608 636 -698 ite 2 697 129 613 -699 ite 2 696 126 698 -700 eq 1 274 672 -701 eq 1 355 676 -702 and 1 640 701 -703 and 1 614 636 -704 ite 2 703 129 619 -705 ite 2 702 126 704 -706 eq 1 361 676 -707 and 1 640 706 -708 eq 1 248 586 -709 and 1 708 636 -710 ite 2 709 129 625 -711 ite 2 707 126 710 -712 ite 2 700 705 711 -713 ite 2 694 699 712 -714 ite 2 688 693 713 -715 ite 2 682 687 714 -716 ite 2 673 681 715 -717 eq 1 126 716 -718 and 1 668 717 -719 or 1 -666 718 -720 and 1 665 719 -721 or 1 238 666 -722 input 1 f34 -723 or 1 721 -722 -724 and 1 720 723 -725 or 1 240 722 -726 input 1 f35 -727 or 1 725 -726 -728 and 1 724 727 -729 or 1 244 246 -730 or 1 254 729 -731 or 1 259 730 -732 or 1 286 731 -733 or 1 290 732 -734 or 1 293 733 -735 or 1 296 734 -736 or 1 312 735 -737 or 1 317 736 -738 or 1 378 737 -739 or 1 382 738 -740 or 1 385 739 -741 or 1 388 740 -742 or 1 403 741 -743 or 1 408 742 -744 or 1 464 743 -745 or 1 468 744 -746 or 1 471 745 -747 or 1 474 746 -748 or 1 489 747 -749 or 1 494 748 -750 or 1 550 749 -751 or 1 554 750 -752 or 1 557 751 -753 or 1 560 752 -754 or 1 575 753 -755 or 1 580 754 -756 or 1 636 755 -757 or 1 640 756 -758 or 1 643 757 -759 or 1 646 758 -760 or 1 661 759 -761 or 1 666 760 -762 or 1 722 761 -763 or 1 726 762 -764 and 1 728 763 -765 and 1 182 184 -766 or 1 182 184 -767 and 1 186 766 -768 or 1 765 767 -769 or 1 186 766 -770 and 1 188 769 -771 or 1 768 770 -772 or 1 188 769 -773 and 1 190 772 -774 or 1 771 773 -775 or 1 190 772 -776 and 1 -774 775 -777 and 1 192 194 -778 or 1 192 194 -779 and 1 196 778 -780 or 1 777 779 -781 or 1 196 778 -782 and 1 198 781 -783 or 1 780 782 -784 or 1 198 781 -785 and 1 200 784 -786 or 1 783 785 -787 and 1 776 -786 -788 or 1 200 784 -789 and 1 787 788 -790 and 1 202 204 -791 or 1 202 204 -792 and 1 206 791 -793 or 1 790 792 -794 or 1 206 791 -795 and 1 208 794 -796 or 1 793 795 -797 or 1 208 794 -798 and 1 210 797 -799 or 1 796 798 -800 and 1 789 -799 -801 or 1 210 797 -802 and 1 800 801 -803 and 1 212 214 -804 or 1 212 214 -805 and 1 216 804 -806 or 1 803 805 -807 or 1 216 804 -808 and 1 218 807 -809 or 1 806 808 -810 or 1 218 807 -811 and 1 220 810 -812 or 1 809 811 -813 and 1 802 -812 -814 or 1 220 810 -815 and 1 813 814 -816 and 1 222 224 -817 or 1 222 224 -818 and 1 226 817 -819 or 1 816 818 -820 or 1 226 817 -821 and 1 228 820 -822 or 1 819 821 -823 or 1 228 820 -824 and 1 230 823 -825 or 1 822 824 -826 and 1 815 -825 -827 or 1 230 823 -828 and 1 826 827 -829 and 1 232 234 -830 or 1 232 234 -831 and 1 236 830 -832 or 1 829 831 -833 or 1 236 830 -834 and 1 238 833 -835 or 1 832 834 -836 or 1 238 833 -837 and 1 240 836 -838 or 1 835 837 -839 and 1 828 -838 -840 or 1 240 836 -841 and 1 839 840 -842 and 1 764 841 -843 and 1 255 -254 -844 and 1 182 -244 -845 or 1 844 290 -846 and 1 843 845 -847 and 1 261 -259 -848 or 1 843 845 -849 and 1 847 848 -850 or 1 846 849 -851 and 1 285 -286 -852 or 1 847 848 -853 and 1 851 852 -854 or 1 850 853 -855 and 1 289 -290 -856 or 1 851 852 -857 and 1 855 856 -858 or 1 854 857 -859 or 1 855 856 -860 and 1 -858 859 -861 and 1 313 -312 -862 and 1 192 -293 -863 or 1 862 382 -864 and 1 861 863 -865 and 1 319 -317 -866 or 1 861 863 -867 and 1 865 866 -868 or 1 864 867 -869 and 1 377 -378 -870 or 1 865 866 -871 and 1 869 870 -872 or 1 868 871 -873 and 1 381 -382 -874 or 1 869 870 -875 and 1 873 874 -876 or 1 872 875 -877 and 1 860 -876 -878 or 1 873 874 -879 and 1 877 878 -880 and 1 404 -403 -881 and 1 202 -385 -882 or 1 881 468 -883 and 1 880 882 -884 and 1 410 -408 -885 or 1 880 882 -886 and 1 884 885 -887 or 1 883 886 -888 and 1 463 -464 -889 or 1 884 885 -890 and 1 888 889 -891 or 1 887 890 -892 and 1 467 -468 -893 or 1 888 889 -894 and 1 892 893 -895 or 1 891 894 -896 and 1 879 -895 -897 or 1 892 893 -898 and 1 896 897 -899 and 1 490 -489 -900 and 1 212 -471 -901 or 1 900 554 -902 and 1 899 901 -903 and 1 496 -494 -904 or 1 899 901 -905 and 1 903 904 -906 or 1 902 905 -907 and 1 549 -550 -908 or 1 903 904 -909 and 1 907 908 -910 or 1 906 909 -911 and 1 553 -554 -912 or 1 907 908 -913 and 1 911 912 -914 or 1 910 913 -915 and 1 898 -914 -916 or 1 911 912 -917 and 1 915 916 -918 and 1 576 -575 -919 and 1 222 -557 -920 or 1 919 640 -921 and 1 918 920 -922 and 1 582 -580 -923 or 1 918 920 -924 and 1 922 923 -925 or 1 921 924 -926 and 1 635 -636 -927 or 1 922 923 -928 and 1 926 927 -929 or 1 925 928 -930 and 1 639 -640 -931 or 1 926 927 -932 and 1 930 931 -933 or 1 929 932 -934 and 1 917 -933 -935 or 1 930 931 -936 and 1 934 935 -937 and 1 662 -661 -938 and 1 232 -643 -939 or 1 938 726 -940 and 1 937 939 -941 and 1 668 -666 -942 or 1 937 939 -943 and 1 941 942 -944 or 1 940 943 -945 and 1 721 -722 -946 or 1 941 942 -947 and 1 945 946 -948 or 1 944 947 -949 and 1 725 -726 -950 or 1 945 946 -951 and 1 949 950 -952 or 1 948 951 -953 and 1 936 -952 -954 or 1 949 950 -955 and 1 953 954 -956 and 1 842 955 -957 concat 4 262 672 -958 add 4 298 957 -959 srem 4 958 264 -960 eq 1 325 959 -961 and 1 726 960 -962 and 1 673 722 -963 ite 2 962 129 681 -964 ite 2 961 126 963 -965 eq 1 964 6 -966 and 1 956 965 -967 eq 1 298 959 -968 and 1 726 967 -969 and 1 682 722 -970 ite 2 969 129 687 -971 ite 2 968 126 970 -972 eq 1 971 8 -973 and 1 966 972 -974 eq 1 341 959 -975 and 1 726 974 -976 and 1 688 722 -977 ite 2 976 129 693 -978 ite 2 975 126 977 -979 eq 1 978 10 -980 and 1 973 979 -981 eq 1 348 959 -982 and 1 726 981 -983 and 1 694 722 -984 ite 2 983 129 699 -985 ite 2 982 126 984 -986 eq 1 985 12 -987 and 1 980 986 -988 eq 1 355 959 -989 and 1 726 988 -990 and 1 700 722 -991 ite 2 990 129 705 -992 ite 2 989 126 991 -993 eq 1 992 14 -994 and 1 987 993 -995 eq 1 361 959 -996 and 1 726 995 -997 eq 1 248 672 -998 and 1 997 722 -999 ite 2 998 129 711 -1000 ite 2 996 126 999 -1001 eq 1 1000 16 -1002 and 1 994 1001 -1003 concat 4 262 655 -1004 add 4 298 1003 -1005 slice 2 1004 7 0 -1006 ite 2 643 1005 655 -1007 concat 4 262 1006 -1008 sub 4 1007 264 -1009 slice 2 1008 7 0 -1010 ite 2 646 1009 1006 -1011 eq 1 1010 18 -1012 and 1 1002 1011 -1013 eq 1 267 20 -1014 and 1 1012 1013 -1015 eq 1 323 22 -1016 and 1 1014 1015 -1017 eq 1 414 24 -1018 and 1 1016 1017 -1019 eq 1 500 26 -1020 and 1 1018 1019 -1021 eq 1 586 28 -1022 and 1 1020 1021 -1023 eq 1 672 30 -1024 and 1 1022 1023 -1025 eq 1 845 33 -1026 and 1 1024 1025 -1027 eq 1 843 35 -1028 and 1 1026 1027 -1029 eq 1 847 37 -1030 and 1 1028 1029 -1031 eq 1 851 39 -1032 and 1 1030 1031 -1033 eq 1 855 41 -1034 and 1 1032 1033 -1035 eq 1 863 43 -1036 and 1 1034 1035 -1037 eq 1 861 45 -1038 and 1 1036 1037 -1039 eq 1 865 47 -1040 and 1 1038 1039 -1041 eq 1 869 49 -1042 and 1 1040 1041 -1043 eq 1 873 51 -1044 and 1 1042 1043 -1045 eq 1 882 53 -1046 and 1 1044 1045 -1047 eq 1 880 55 -1048 and 1 1046 1047 -1049 eq 1 884 57 -1050 and 1 1048 1049 -1051 eq 1 888 59 -1052 and 1 1050 1051 -1053 eq 1 892 61 -1054 and 1 1052 1053 -1055 eq 1 901 63 -1056 and 1 1054 1055 -1057 eq 1 899 65 -1058 and 1 1056 1057 -1059 eq 1 903 67 -1060 and 1 1058 1059 -1061 eq 1 907 69 -1062 and 1 1060 1061 -1063 eq 1 911 71 -1064 and 1 1062 1063 -1065 eq 1 920 73 -1066 and 1 1064 1065 -1067 eq 1 918 75 -1068 and 1 1066 1067 -1069 eq 1 922 77 -1070 and 1 1068 1069 -1071 eq 1 926 79 -1072 and 1 1070 1071 -1073 eq 1 930 81 -1074 and 1 1072 1073 -1075 eq 1 939 83 -1076 and 1 1074 1075 -1077 eq 1 937 85 -1078 and 1 1076 1077 -1079 eq 1 941 87 -1080 and 1 1078 1079 -1081 eq 1 945 89 -1082 and 1 1080 1081 -1083 eq 1 949 91 -1084 and 1 1082 1083 -1085 and 1 1084 95 -1086 ite 4 190 298 325 -1087 ite 4 200 298 325 -1088 add 4 1086 1087 -1089 ite 4 210 298 325 -1090 add 4 1088 1089 -1091 ite 4 220 298 325 -1092 add 4 1090 1091 -1093 ite 4 230 298 325 -1094 add 4 1092 1093 -1095 ite 4 240 298 325 -1096 add 4 1094 1095 -1097 ulte 1 1096 298 -1098 ite 1 93 1085 -1097 -1099 next 1 95 1098 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-func-interl.btor2 deleted file mode 100644 index 2e0fc6e2bd..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.6.prop1-func-interl.btor2 +++ /dev/null @@ -1,944 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_Slot_0 -7 init 2 6 5 -8 state 2 v_Slot_1 -9 init 2 8 5 -10 state 2 v_Slot_2 -11 init 2 10 5 -12 state 2 v_Slot_3 -13 init 2 12 5 -14 state 2 v_Slot_4 -15 init 2 14 5 -16 state 2 v_Slot_5 -17 init 2 16 5 -18 state 2 v_next -19 init 2 18 5 -20 state 2 v_my_place_P_0 -21 init 2 20 5 -22 state 2 v_my_place_P_1 -23 init 2 22 5 -24 state 2 v_my_place_P_2 -25 init 2 24 5 -26 state 2 v_my_place_P_3 -27 init 2 26 5 -28 state 2 v_my_place_P_4 -29 init 2 28 5 -30 state 2 v_my_place_P_5 -31 init 2 30 5 -32 zero 1 -33 state 1 a_NCS_P_0 -34 init 1 33 32 -35 state 1 a_p1_P_0 -36 init 1 35 32 -37 state 1 a_p2_P_0 -38 init 1 37 32 -39 state 1 a_p3_P_0 -40 init 1 39 32 -41 state 1 a_CS_P_0 -42 init 1 41 32 -43 state 1 a_NCS_P_1 -44 init 1 43 32 -45 state 1 a_p1_P_1 -46 init 1 45 32 -47 state 1 a_p2_P_1 -48 init 1 47 32 -49 state 1 a_p3_P_1 -50 init 1 49 32 -51 state 1 a_CS_P_1 -52 init 1 51 32 -53 state 1 a_NCS_P_2 -54 init 1 53 32 -55 state 1 a_p1_P_2 -56 init 1 55 32 -57 state 1 a_p2_P_2 -58 init 1 57 32 -59 state 1 a_p3_P_2 -60 init 1 59 32 -61 state 1 a_CS_P_2 -62 init 1 61 32 -63 state 1 a_NCS_P_3 -64 init 1 63 32 -65 state 1 a_p1_P_3 -66 init 1 65 32 -67 state 1 a_p2_P_3 -68 init 1 67 32 -69 state 1 a_p3_P_3 -70 init 1 69 32 -71 state 1 a_CS_P_3 -72 init 1 71 32 -73 state 1 a_NCS_P_4 -74 init 1 73 32 -75 state 1 a_p1_P_4 -76 init 1 75 32 -77 state 1 a_p2_P_4 -78 init 1 77 32 -79 state 1 a_p3_P_4 -80 init 1 79 32 -81 state 1 a_CS_P_4 -82 init 1 81 32 -83 state 1 a_NCS_P_5 -84 init 1 83 32 -85 state 1 a_p1_P_5 -86 init 1 85 32 -87 state 1 a_p2_P_5 -88 init 1 87 32 -89 state 1 a_p3_P_5 -90 init 1 89 32 -91 state 1 a_CS_P_5 -92 init 1 91 32 -93 state 1 dve_invalid -94 init 1 93 32 -95 constd 4 1 -96 constd 4 0 -97 ite 4 41 95 96 -98 ite 4 51 95 96 -99 add 4 97 98 -100 ite 4 61 95 96 -101 add 4 99 100 -102 ite 4 71 95 96 -103 add 4 101 102 -104 ite 4 81 95 96 -105 add 4 103 104 -106 ite 4 91 95 96 -107 add 4 105 106 -108 ulte 1 107 95 -109 and 1 -93 -108 -110 bad 109 -111 constd 2 1 -112 input 1 f35 -113 constd 3 0 -114 concat 4 113 30 -115 add 4 95 114 -116 constd 4 6 -117 srem 4 115 116 -118 eq 1 96 117 -119 and 1 112 118 -120 constd 2 0 -121 eq 1 120 30 -122 input 1 f34 -123 and 1 121 122 -124 input 1 f29 -125 concat 4 113 28 -126 add 4 95 125 -127 srem 4 126 116 -128 eq 1 96 127 -129 and 1 124 128 -130 eq 1 120 28 -131 input 1 f28 -132 and 1 130 131 -133 input 1 f23 -134 concat 4 113 26 -135 add 4 95 134 -136 srem 4 135 116 -137 eq 1 96 136 -138 and 1 133 137 -139 eq 1 120 26 -140 input 1 f22 -141 and 1 139 140 -142 input 1 f17 -143 concat 4 113 24 -144 add 4 95 143 -145 srem 4 144 116 -146 eq 1 96 145 -147 and 1 142 146 -148 eq 1 120 24 -149 input 1 f16 -150 and 1 148 149 -151 input 1 f11 -152 concat 4 113 22 -153 add 4 95 152 -154 srem 4 153 116 -155 eq 1 96 154 -156 and 1 151 155 -157 eq 1 120 22 -158 input 1 f10 -159 and 1 157 158 -160 input 1 f05 -161 concat 4 113 20 -162 add 4 95 161 -163 srem 4 162 116 -164 eq 1 96 163 -165 and 1 160 164 -166 eq 1 120 20 -167 input 1 f04 -168 and 1 166 167 -169 xor 2 111 6 -170 ite 2 168 120 169 -171 ite 2 165 111 170 -172 ite 2 159 120 171 -173 ite 2 156 111 172 -174 ite 2 150 120 173 -175 ite 2 147 111 174 -176 ite 2 141 120 175 -177 ite 2 138 111 176 -178 ite 2 132 120 177 -179 ite 2 129 111 178 -180 ite 2 123 120 179 -181 ite 2 119 111 180 -182 xor 2 111 181 -183 next 2 6 182 -184 eq 1 95 117 -185 and 1 112 184 -186 eq 1 111 30 -187 and 1 186 122 -188 eq 1 95 127 -189 and 1 124 188 -190 eq 1 111 28 -191 and 1 190 131 -192 eq 1 95 136 -193 and 1 133 192 -194 eq 1 111 26 -195 and 1 194 140 -196 eq 1 95 145 -197 and 1 142 196 -198 eq 1 111 24 -199 and 1 198 149 -200 eq 1 95 154 -201 and 1 151 200 -202 eq 1 111 22 -203 and 1 202 158 -204 eq 1 95 163 -205 and 1 160 204 -206 eq 1 111 20 -207 and 1 206 167 -208 ite 2 207 120 8 -209 ite 2 205 111 208 -210 ite 2 203 120 209 -211 ite 2 201 111 210 -212 ite 2 199 120 211 -213 ite 2 197 111 212 -214 ite 2 195 120 213 -215 ite 2 193 111 214 -216 ite 2 191 120 215 -217 ite 2 189 111 216 -218 ite 2 187 120 217 -219 ite 2 185 111 218 -220 next 2 8 219 -221 constd 4 2 -222 eq 1 221 117 -223 and 1 112 222 -224 constd 2 2 -225 eq 1 224 30 -226 and 1 225 122 -227 eq 1 221 127 -228 and 1 124 227 -229 eq 1 224 28 -230 and 1 229 131 -231 eq 1 221 136 -232 and 1 133 231 -233 eq 1 224 26 -234 and 1 233 140 -235 eq 1 221 145 -236 and 1 142 235 -237 eq 1 224 24 -238 and 1 237 149 -239 eq 1 221 154 -240 and 1 151 239 -241 eq 1 224 22 -242 and 1 241 158 -243 eq 1 221 163 -244 and 1 160 243 -245 eq 1 224 20 -246 and 1 245 167 -247 ite 2 246 120 10 -248 ite 2 244 111 247 -249 ite 2 242 120 248 -250 ite 2 240 111 249 -251 ite 2 238 120 250 -252 ite 2 236 111 251 -253 ite 2 234 120 252 -254 ite 2 232 111 253 -255 ite 2 230 120 254 -256 ite 2 228 111 255 -257 ite 2 226 120 256 -258 ite 2 223 111 257 -259 next 2 10 258 -260 constd 4 3 -261 eq 1 260 117 -262 and 1 112 261 -263 constd 2 3 -264 eq 1 263 30 -265 and 1 264 122 -266 eq 1 260 127 -267 and 1 124 266 -268 eq 1 263 28 -269 and 1 268 131 -270 eq 1 260 136 -271 and 1 133 270 -272 eq 1 263 26 -273 and 1 272 140 -274 eq 1 260 145 -275 and 1 142 274 -276 eq 1 263 24 -277 and 1 276 149 -278 eq 1 260 154 -279 and 1 151 278 -280 eq 1 263 22 -281 and 1 280 158 -282 eq 1 260 163 -283 and 1 160 282 -284 eq 1 263 20 -285 and 1 284 167 -286 ite 2 285 120 12 -287 ite 2 283 111 286 -288 ite 2 281 120 287 -289 ite 2 279 111 288 -290 ite 2 277 120 289 -291 ite 2 275 111 290 -292 ite 2 273 120 291 -293 ite 2 271 111 292 -294 ite 2 269 120 293 -295 ite 2 267 111 294 -296 ite 2 265 120 295 -297 ite 2 262 111 296 -298 next 2 12 297 -299 constd 4 4 -300 eq 1 299 117 -301 and 1 112 300 -302 constd 2 4 -303 eq 1 302 30 -304 and 1 303 122 -305 eq 1 299 127 -306 and 1 124 305 -307 eq 1 302 28 -308 and 1 307 131 -309 eq 1 299 136 -310 and 1 133 309 -311 eq 1 302 26 -312 and 1 311 140 -313 eq 1 299 145 -314 and 1 142 313 -315 eq 1 302 24 -316 and 1 315 149 -317 eq 1 299 154 -318 and 1 151 317 -319 eq 1 302 22 -320 and 1 319 158 -321 eq 1 299 163 -322 and 1 160 321 -323 eq 1 302 20 -324 and 1 323 167 -325 ite 2 324 120 14 -326 ite 2 322 111 325 -327 ite 2 320 120 326 -328 ite 2 318 111 327 -329 ite 2 316 120 328 -330 ite 2 314 111 329 -331 ite 2 312 120 330 -332 ite 2 310 111 331 -333 ite 2 308 120 332 -334 ite 2 306 111 333 -335 ite 2 304 120 334 -336 ite 2 301 111 335 -337 next 2 14 336 -338 constd 4 5 -339 eq 1 338 117 -340 and 1 112 339 -341 constd 2 5 -342 eq 1 341 30 -343 and 1 342 122 -344 eq 1 338 127 -345 and 1 124 344 -346 eq 1 341 28 -347 and 1 346 131 -348 eq 1 338 136 -349 and 1 133 348 -350 eq 1 341 26 -351 and 1 350 140 -352 eq 1 338 145 -353 and 1 142 352 -354 eq 1 341 24 -355 and 1 354 149 -356 eq 1 338 154 -357 and 1 151 356 -358 eq 1 341 22 -359 and 1 358 158 -360 eq 1 338 163 -361 and 1 160 360 -362 eq 1 341 20 -363 and 1 362 167 -364 ite 2 363 120 16 -365 ite 2 361 111 364 -366 ite 2 359 120 365 -367 ite 2 357 111 366 -368 ite 2 355 120 367 -369 ite 2 353 111 368 -370 ite 2 351 120 369 -371 ite 2 349 111 370 -372 ite 2 347 120 371 -373 ite 2 345 111 372 -374 ite 2 343 120 373 -375 ite 2 340 111 374 -376 next 2 16 375 -377 input 1 f31 -378 concat 4 113 18 -379 sub 4 378 116 -380 slice 2 379 7 0 -381 input 1 f30 -382 add 4 95 378 -383 slice 2 382 7 0 -384 input 1 f25 -385 input 1 f24 -386 input 1 f19 -387 input 1 f18 -388 input 1 f13 -389 input 1 f12 -390 input 1 f07 -391 input 1 f06 -392 input 1 f01 -393 input 1 f00 -394 ite 2 393 383 18 -395 ite 2 392 380 394 -396 ite 2 391 383 395 -397 ite 2 390 380 396 -398 ite 2 389 383 397 -399 ite 2 388 380 398 -400 ite 2 387 383 399 -401 ite 2 386 380 400 -402 ite 2 385 383 401 -403 ite 2 384 380 402 -404 ite 2 381 383 403 -405 ite 2 377 380 404 -406 next 2 18 405 -407 input 1 f02 -408 srem 4 161 116 -409 slice 2 408 7 0 -410 ite 2 393 18 20 -411 ite 2 407 409 410 -412 next 2 20 411 -413 input 1 f08 -414 srem 4 152 116 -415 slice 2 414 7 0 -416 ite 2 391 18 22 -417 ite 2 413 415 416 -418 next 2 22 417 -419 input 1 f14 -420 srem 4 143 116 -421 slice 2 420 7 0 -422 ite 2 389 18 24 -423 ite 2 419 421 422 -424 next 2 24 423 -425 input 1 f20 -426 srem 4 134 116 -427 slice 2 426 7 0 -428 ite 2 387 18 26 -429 ite 2 425 427 428 -430 next 2 26 429 -431 input 1 f26 -432 srem 4 125 116 -433 slice 2 432 7 0 -434 ite 2 385 18 28 -435 ite 2 431 433 434 -436 next 2 28 435 -437 input 1 f32 -438 srem 4 114 116 -439 slice 2 438 7 0 -440 ite 2 381 18 30 -441 ite 2 437 439 440 -442 next 2 30 441 -443 and 1 -33 -393 -444 or 1 443 160 -445 next 1 33 -444 -446 or 1 35 393 -447 and 1 446 -392 -448 and 1 447 -407 -449 next 1 35 448 -450 or 1 37 392 -451 or 1 450 407 -452 input 1 f03 -453 and 1 451 -452 -454 next 1 37 453 -455 or 1 39 452 -456 and 1 455 -167 -457 next 1 39 456 -458 or 1 41 167 -459 and 1 458 -160 -460 next 1 41 459 -461 and 1 -43 -391 -462 or 1 461 151 -463 next 1 43 -462 -464 or 1 45 391 -465 and 1 464 -390 -466 and 1 465 -413 -467 next 1 45 466 -468 or 1 47 390 -469 or 1 468 413 -470 input 1 f09 -471 and 1 469 -470 -472 next 1 47 471 -473 or 1 49 470 -474 and 1 473 -158 -475 next 1 49 474 -476 or 1 51 158 -477 and 1 476 -151 -478 next 1 51 477 -479 and 1 -53 -389 -480 or 1 479 142 -481 next 1 53 -480 -482 or 1 55 389 -483 and 1 482 -388 -484 and 1 483 -419 -485 next 1 55 484 -486 or 1 57 388 -487 or 1 486 419 -488 input 1 f15 -489 and 1 487 -488 -490 next 1 57 489 -491 or 1 59 488 -492 and 1 491 -149 -493 next 1 59 492 -494 or 1 61 149 -495 and 1 494 -142 -496 next 1 61 495 -497 and 1 -63 -387 -498 or 1 497 133 -499 next 1 63 -498 -500 or 1 65 387 -501 and 1 500 -386 -502 and 1 501 -425 -503 next 1 65 502 -504 or 1 67 386 -505 or 1 504 425 -506 input 1 f21 -507 and 1 505 -506 -508 next 1 67 507 -509 or 1 69 506 -510 and 1 509 -140 -511 next 1 69 510 -512 or 1 71 140 -513 and 1 512 -133 -514 next 1 71 513 -515 and 1 -73 -385 -516 or 1 515 124 -517 next 1 73 -516 -518 or 1 75 385 -519 and 1 518 -384 -520 and 1 519 -431 -521 next 1 75 520 -522 or 1 77 384 -523 or 1 522 431 -524 input 1 f27 -525 and 1 523 -524 -526 next 1 77 525 -527 or 1 79 524 -528 and 1 527 -131 -529 next 1 79 528 -530 or 1 81 131 -531 and 1 530 -124 -532 next 1 81 531 -533 and 1 -83 -381 -534 or 1 533 112 -535 next 1 83 -534 -536 or 1 85 381 -537 and 1 536 -377 -538 and 1 537 -437 -539 next 1 85 538 -540 or 1 87 377 -541 or 1 540 437 -542 input 1 f33 -543 and 1 541 -542 -544 next 1 87 543 -545 or 1 89 542 -546 and 1 545 -122 -547 next 1 89 546 -548 or 1 91 122 -549 and 1 548 -112 -550 next 1 91 549 -551 or 1 -33 -393 -552 and 1 35 362 -553 or 1 -392 552 -554 and 1 551 553 -555 and 1 35 -362 -556 or 1 -407 555 -557 and 1 554 556 -558 ite 2 323 14 16 -559 ite 2 284 12 558 -560 ite 2 245 10 559 -561 ite 2 206 8 560 -562 ite 2 166 169 561 -563 eq 1 111 562 -564 and 1 37 563 -565 or 1 -452 564 -566 and 1 557 565 -567 or 1 39 -167 -568 and 1 566 567 -569 or 1 41 -160 -570 and 1 568 569 -571 or 1 -43 -391 -572 and 1 570 571 -573 and 1 45 358 -574 or 1 -390 573 -575 and 1 572 574 -576 and 1 45 -358 -577 or 1 -413 576 -578 and 1 575 577 -579 ite 2 319 14 16 -580 ite 2 280 12 579 -581 ite 2 241 10 580 -582 ite 2 202 8 581 -583 ite 2 157 169 582 -584 eq 1 111 583 -585 and 1 47 584 -586 or 1 -470 585 -587 and 1 578 586 -588 or 1 49 -158 -589 and 1 587 588 -590 or 1 51 -151 -591 and 1 589 590 -592 or 1 -53 -389 -593 and 1 591 592 -594 and 1 55 354 -595 or 1 -388 594 -596 and 1 593 595 -597 and 1 55 -354 -598 or 1 -419 597 -599 and 1 596 598 -600 ite 2 315 14 16 -601 ite 2 276 12 600 -602 ite 2 237 10 601 -603 ite 2 198 8 602 -604 ite 2 148 169 603 -605 eq 1 111 604 -606 and 1 57 605 -607 or 1 -488 606 -608 and 1 599 607 -609 or 1 59 -149 -610 and 1 608 609 -611 or 1 61 -142 -612 and 1 610 611 -613 or 1 -63 -387 -614 and 1 612 613 -615 and 1 65 350 -616 or 1 -386 615 -617 and 1 614 616 -618 and 1 65 -350 -619 or 1 -425 618 -620 and 1 617 619 -621 ite 2 311 14 16 -622 ite 2 272 12 621 -623 ite 2 233 10 622 -624 ite 2 194 8 623 -625 ite 2 139 169 624 -626 eq 1 111 625 -627 and 1 67 626 -628 or 1 -506 627 -629 and 1 620 628 -630 or 1 69 -140 -631 and 1 629 630 -632 or 1 71 -133 -633 and 1 631 632 -634 or 1 -73 -385 -635 and 1 633 634 -636 and 1 75 346 -637 or 1 -384 636 -638 and 1 635 637 -639 and 1 75 -346 -640 or 1 -431 639 -641 and 1 638 640 -642 ite 2 307 14 16 -643 ite 2 268 12 642 -644 ite 2 229 10 643 -645 ite 2 190 8 644 -646 ite 2 130 169 645 -647 eq 1 111 646 -648 and 1 77 647 -649 or 1 -524 648 -650 and 1 641 649 -651 or 1 79 -131 -652 and 1 650 651 -653 or 1 81 -124 -654 and 1 652 653 -655 or 1 -83 -381 -656 and 1 654 655 -657 and 1 85 342 -658 or 1 -377 657 -659 and 1 656 658 -660 and 1 85 -342 -661 or 1 -437 660 -662 and 1 659 661 -663 ite 2 303 14 16 -664 ite 2 264 12 663 -665 ite 2 225 10 664 -666 ite 2 186 8 665 -667 ite 2 121 169 666 -668 eq 1 111 667 -669 and 1 87 668 -670 or 1 -542 669 -671 and 1 662 670 -672 or 1 89 -122 -673 and 1 671 672 -674 or 1 91 -112 -675 and 1 673 674 -676 or 1 393 392 -677 or 1 407 676 -678 or 1 452 677 -679 or 1 167 678 -680 or 1 160 679 -681 or 1 391 680 -682 or 1 390 681 -683 or 1 413 682 -684 or 1 470 683 -685 or 1 158 684 -686 or 1 151 685 -687 or 1 389 686 -688 or 1 388 687 -689 or 1 419 688 -690 or 1 488 689 -691 or 1 149 690 -692 or 1 142 691 -693 or 1 387 692 -694 or 1 386 693 -695 or 1 425 694 -696 or 1 506 695 -697 or 1 140 696 -698 or 1 133 697 -699 or 1 385 698 -700 or 1 384 699 -701 or 1 431 700 -702 or 1 524 701 -703 or 1 131 702 -704 or 1 124 703 -705 or 1 381 704 -706 or 1 377 705 -707 or 1 437 706 -708 or 1 542 707 -709 or 1 122 708 -710 or 1 112 709 -711 and 1 675 710 -712 and 1 393 392 -713 and 1 407 676 -714 or 1 712 713 -715 and 1 452 677 -716 or 1 714 715 -717 and 1 167 678 -718 or 1 716 717 -719 and 1 160 679 -720 or 1 718 719 -721 and 1 391 680 -722 or 1 720 721 -723 and 1 390 681 -724 or 1 722 723 -725 and 1 413 682 -726 or 1 724 725 -727 and 1 470 683 -728 or 1 726 727 -729 and 1 158 684 -730 or 1 728 729 -731 and 1 151 685 -732 or 1 730 731 -733 and 1 389 686 -734 or 1 732 733 -735 and 1 388 687 -736 or 1 734 735 -737 and 1 419 688 -738 or 1 736 737 -739 and 1 488 689 -740 or 1 738 739 -741 and 1 149 690 -742 or 1 740 741 -743 and 1 142 691 -744 or 1 742 743 -745 and 1 387 692 -746 or 1 744 745 -747 and 1 386 693 -748 or 1 746 747 -749 and 1 425 694 -750 or 1 748 749 -751 and 1 506 695 -752 or 1 750 751 -753 and 1 140 696 -754 or 1 752 753 -755 and 1 133 697 -756 or 1 754 755 -757 and 1 385 698 -758 or 1 756 757 -759 and 1 384 699 -760 or 1 758 759 -761 and 1 431 700 -762 or 1 760 761 -763 and 1 524 701 -764 or 1 762 763 -765 and 1 131 702 -766 or 1 764 765 -767 and 1 124 703 -768 or 1 766 767 -769 and 1 381 704 -770 or 1 768 769 -771 and 1 377 705 -772 or 1 770 771 -773 and 1 437 706 -774 or 1 772 773 -775 and 1 542 707 -776 or 1 774 775 -777 and 1 122 708 -778 or 1 776 777 -779 and 1 112 709 -780 or 1 778 779 -781 and 1 711 -780 -782 and 1 -33 35 -783 or 1 -33 35 -784 and 1 37 783 -785 or 1 782 784 -786 or 1 37 783 -787 and 1 39 786 -788 or 1 785 787 -789 or 1 39 786 -790 and 1 41 789 -791 or 1 788 790 -792 or 1 41 789 -793 and 1 -791 792 -794 and 1 -43 45 -795 or 1 -43 45 -796 and 1 47 795 -797 or 1 794 796 -798 or 1 47 795 -799 and 1 49 798 -800 or 1 797 799 -801 or 1 49 798 -802 and 1 51 801 -803 or 1 800 802 -804 and 1 793 -803 -805 or 1 51 801 -806 and 1 804 805 -807 and 1 -53 55 -808 or 1 -53 55 -809 and 1 57 808 -810 or 1 807 809 -811 or 1 57 808 -812 and 1 59 811 -813 or 1 810 812 -814 or 1 59 811 -815 and 1 61 814 -816 or 1 813 815 -817 and 1 806 -816 -818 or 1 61 814 -819 and 1 817 818 -820 and 1 -63 65 -821 or 1 -63 65 -822 and 1 67 821 -823 or 1 820 822 -824 or 1 67 821 -825 and 1 69 824 -826 or 1 823 825 -827 or 1 69 824 -828 and 1 71 827 -829 or 1 826 828 -830 and 1 819 -829 -831 or 1 71 827 -832 and 1 830 831 -833 and 1 -73 75 -834 or 1 -73 75 -835 and 1 77 834 -836 or 1 833 835 -837 or 1 77 834 -838 and 1 79 837 -839 or 1 836 838 -840 or 1 79 837 -841 and 1 81 840 -842 or 1 839 841 -843 and 1 832 -842 -844 or 1 81 840 -845 and 1 843 844 -846 and 1 -83 85 -847 or 1 -83 85 -848 and 1 87 847 -849 or 1 846 848 -850 or 1 87 847 -851 and 1 89 850 -852 or 1 849 851 -853 or 1 89 850 -854 and 1 91 853 -855 or 1 852 854 -856 and 1 845 -855 -857 or 1 91 853 -858 and 1 856 857 -859 and 1 781 858 -860 and 1 448 444 -861 or 1 448 444 -862 and 1 453 861 -863 or 1 860 862 -864 or 1 453 861 -865 and 1 456 864 -866 or 1 863 865 -867 or 1 456 864 -868 and 1 459 867 -869 or 1 866 868 -870 or 1 459 867 -871 and 1 -869 870 -872 and 1 466 462 -873 or 1 466 462 -874 and 1 471 873 -875 or 1 872 874 -876 or 1 471 873 -877 and 1 474 876 -878 or 1 875 877 -879 or 1 474 876 -880 and 1 477 879 -881 or 1 878 880 -882 and 1 871 -881 -883 or 1 477 879 -884 and 1 882 883 -885 and 1 484 480 -886 or 1 484 480 -887 and 1 489 886 -888 or 1 885 887 -889 or 1 489 886 -890 and 1 492 889 -891 or 1 888 890 -892 or 1 492 889 -893 and 1 495 892 -894 or 1 891 893 -895 and 1 884 -894 -896 or 1 495 892 -897 and 1 895 896 -898 and 1 502 498 -899 or 1 502 498 -900 and 1 507 899 -901 or 1 898 900 -902 or 1 507 899 -903 and 1 510 902 -904 or 1 901 903 -905 or 1 510 902 -906 and 1 513 905 -907 or 1 904 906 -908 and 1 897 -907 -909 or 1 513 905 -910 and 1 908 909 -911 and 1 520 516 -912 or 1 520 516 -913 and 1 525 912 -914 or 1 911 913 -915 or 1 525 912 -916 and 1 528 915 -917 or 1 914 916 -918 or 1 528 915 -919 and 1 531 918 -920 or 1 917 919 -921 and 1 910 -920 -922 or 1 531 918 -923 and 1 921 922 -924 and 1 538 534 -925 or 1 538 534 -926 and 1 543 925 -927 or 1 924 926 -928 or 1 543 925 -929 and 1 546 928 -930 or 1 927 929 -931 or 1 546 928 -932 and 1 549 931 -933 or 1 930 932 -934 and 1 923 -933 -935 or 1 549 931 -936 and 1 934 935 -937 and 1 859 936 -938 and 1 937 -93 -939 next 1 93 -938 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-back-serstep.btor2 deleted file mode 100644 index 5c199bdd3a..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-back-serstep.btor2 +++ /dev/null @@ -1,1152 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_Slot_0 -7 init 2 6 5 -8 state 2 nextv_Slot_1 -9 init 2 8 5 -10 state 2 nextv_Slot_2 -11 init 2 10 5 -12 state 2 nextv_Slot_3 -13 init 2 12 5 -14 state 2 nextv_Slot_4 -15 init 2 14 5 -16 state 2 nextv_Slot_5 -17 init 2 16 5 -18 state 2 nextv_next -19 init 2 18 5 -20 state 2 nextv_my_place_P_0 -21 init 2 20 5 -22 state 2 nextv_my_place_P_1 -23 init 2 22 5 -24 state 2 nextv_my_place_P_2 -25 init 2 24 5 -26 state 2 nextv_my_place_P_3 -27 init 2 26 5 -28 state 2 nextv_my_place_P_4 -29 init 2 28 5 -30 state 2 nextv_my_place_P_5 -31 init 2 30 5 -32 zero 1 -33 state 1 nexta_NCS_P_0 -34 init 1 33 32 -35 state 1 nexta_p1_P_0 -36 init 1 35 32 -37 state 1 nexta_p2_P_0 -38 init 1 37 32 -39 state 1 nexta_p3_P_0 -40 init 1 39 32 -41 state 1 nexta_CS_P_0 -42 init 1 41 32 -43 state 1 nexta_NCS_P_1 -44 init 1 43 32 -45 state 1 nexta_p1_P_1 -46 init 1 45 32 -47 state 1 nexta_p2_P_1 -48 init 1 47 32 -49 state 1 nexta_p3_P_1 -50 init 1 49 32 -51 state 1 nexta_CS_P_1 -52 init 1 51 32 -53 state 1 nexta_NCS_P_2 -54 init 1 53 32 -55 state 1 nexta_p1_P_2 -56 init 1 55 32 -57 state 1 nexta_p2_P_2 -58 init 1 57 32 -59 state 1 nexta_p3_P_2 -60 init 1 59 32 -61 state 1 nexta_CS_P_2 -62 init 1 61 32 -63 state 1 nexta_NCS_P_3 -64 init 1 63 32 -65 state 1 nexta_p1_P_3 -66 init 1 65 32 -67 state 1 nexta_p2_P_3 -68 init 1 67 32 -69 state 1 nexta_p3_P_3 -70 init 1 69 32 -71 state 1 nexta_CS_P_3 -72 init 1 71 32 -73 state 1 nexta_NCS_P_4 -74 init 1 73 32 -75 state 1 nexta_p1_P_4 -76 init 1 75 32 -77 state 1 nexta_p2_P_4 -78 init 1 77 32 -79 state 1 nexta_p3_P_4 -80 init 1 79 32 -81 state 1 nexta_CS_P_4 -82 init 1 81 32 -83 state 1 nexta_NCS_P_5 -84 init 1 83 32 -85 state 1 nexta_p1_P_5 -86 init 1 85 32 -87 state 1 nexta_p2_P_5 -88 init 1 87 32 -89 state 1 nexta_p3_P_5 -90 init 1 89 32 -91 state 1 nexta_CS_P_5 -92 init 1 91 32 -93 state 1 dve_initialized -94 init 1 93 32 -95 state 1 dve_valid -96 init 1 95 32 -97 and 1 33 -35 -98 and 1 97 -37 -99 and 1 98 -39 -100 and 1 99 -41 -101 and 1 100 43 -102 and 1 101 -45 -103 and 1 102 -47 -104 and 1 103 -49 -105 and 1 104 -51 -106 and 1 105 53 -107 and 1 106 -55 -108 and 1 107 -57 -109 and 1 108 -59 -110 and 1 109 -61 -111 and 1 110 63 -112 and 1 111 -65 -113 and 1 112 -67 -114 and 1 113 -69 -115 and 1 114 -71 -116 and 1 115 73 -117 and 1 116 -75 -118 and 1 117 -77 -119 and 1 118 -79 -120 and 1 119 -81 -121 and 1 120 83 -122 and 1 121 -85 -123 and 1 122 -87 -124 and 1 123 -89 -125 and 1 124 -91 -126 constd 2 1 -127 eq 1 126 6 -128 and 1 125 127 -129 constd 2 0 -130 eq 1 129 8 -131 and 1 128 130 -132 eq 1 129 10 -133 and 1 131 132 -134 eq 1 129 12 -135 and 1 133 134 -136 eq 1 129 14 -137 and 1 135 136 -138 eq 1 129 16 -139 and 1 137 138 -140 eq 1 129 18 -141 and 1 139 140 -142 eq 1 129 20 -143 and 1 141 142 -144 eq 1 129 22 -145 and 1 143 144 -146 eq 1 129 24 -147 and 1 145 146 -148 eq 1 129 26 -149 and 1 147 148 -150 eq 1 129 28 -151 and 1 149 150 -152 eq 1 129 30 -153 and 1 151 152 -154 and 1 95 153 -155 bad 154 -156 input 2 v_Slot_0 -157 next 2 6 156 -158 input 2 v_Slot_1 -159 next 2 8 158 -160 input 2 v_Slot_2 -161 next 2 10 160 -162 input 2 v_Slot_3 -163 next 2 12 162 -164 input 2 v_Slot_4 -165 next 2 14 164 -166 input 2 v_Slot_5 -167 next 2 16 166 -168 input 2 v_next -169 next 2 18 168 -170 input 2 v_my_place_P_0 -171 next 2 20 170 -172 input 2 v_my_place_P_1 -173 next 2 22 172 -174 input 2 v_my_place_P_2 -175 next 2 24 174 -176 input 2 v_my_place_P_3 -177 next 2 26 176 -178 input 2 v_my_place_P_4 -179 next 2 28 178 -180 input 2 v_my_place_P_5 -181 next 2 30 180 -182 input 1 a_NCS_P_0 -183 next 1 33 182 -184 input 1 a_p1_P_0 -185 next 1 35 184 -186 input 1 a_p2_P_0 -187 next 1 37 186 -188 input 1 a_p3_P_0 -189 next 1 39 188 -190 input 1 a_CS_P_0 -191 next 1 41 190 -192 input 1 a_NCS_P_1 -193 next 1 43 192 -194 input 1 a_p1_P_1 -195 next 1 45 194 -196 input 1 a_p2_P_1 -197 next 1 47 196 -198 input 1 a_p3_P_1 -199 next 1 49 198 -200 input 1 a_CS_P_1 -201 next 1 51 200 -202 input 1 a_NCS_P_2 -203 next 1 53 202 -204 input 1 a_p1_P_2 -205 next 1 55 204 -206 input 1 a_p2_P_2 -207 next 1 57 206 -208 input 1 a_p3_P_2 -209 next 1 59 208 -210 input 1 a_CS_P_2 -211 next 1 61 210 -212 input 1 a_NCS_P_3 -213 next 1 63 212 -214 input 1 a_p1_P_3 -215 next 1 65 214 -216 input 1 a_p2_P_3 -217 next 1 67 216 -218 input 1 a_p3_P_3 -219 next 1 69 218 -220 input 1 a_CS_P_3 -221 next 1 71 220 -222 input 1 a_NCS_P_4 -223 next 1 73 222 -224 input 1 a_p1_P_4 -225 next 1 75 224 -226 input 1 a_p2_P_4 -227 next 1 77 226 -228 input 1 a_p3_P_4 -229 next 1 79 228 -230 input 1 a_CS_P_4 -231 next 1 81 230 -232 input 1 a_NCS_P_5 -233 next 1 83 232 -234 input 1 a_p1_P_5 -235 next 1 85 234 -236 input 1 a_p2_P_5 -237 next 1 87 236 -238 input 1 a_p3_P_5 -239 next 1 89 238 -240 input 1 a_CS_P_5 -241 next 1 91 240 -242 const 1 1 -243 next 1 93 242 -244 input 1 f00 -245 or 1 182 -244 -246 input 1 f01 -247 or 1 184 244 -248 constd 2 5 -249 ite 2 244 168 170 -250 eq 1 248 249 -251 and 1 247 250 -252 or 1 -246 251 -253 and 1 245 252 -254 input 1 f02 -255 and 1 247 -246 -256 and 1 -250 255 -257 or 1 -254 256 -258 and 1 253 257 -259 input 1 f03 -260 or 1 186 246 -261 or 1 260 254 -262 constd 3 0 -263 concat 4 262 249 -264 constd 4 6 -265 srem 4 263 264 -266 slice 2 265 7 0 -267 ite 2 254 266 249 -268 eq 1 129 267 -269 eq 1 126 267 -270 constd 2 2 -271 eq 1 270 267 -272 constd 2 3 -273 eq 1 272 267 -274 constd 2 4 -275 eq 1 274 267 -276 ite 2 275 164 166 -277 ite 2 273 162 276 -278 ite 2 271 160 277 -279 ite 2 269 158 278 -280 ite 2 268 156 279 -281 eq 1 126 280 -282 and 1 261 281 -283 or 1 -259 282 -284 and 1 258 283 -285 or 1 188 259 -286 input 1 f04 -287 or 1 285 -286 -288 and 1 284 287 -289 or 1 190 286 -290 input 1 f05 -291 or 1 289 -290 -292 and 1 288 291 -293 input 1 f06 -294 or 1 192 -293 -295 and 1 292 294 -296 input 1 f07 -297 or 1 194 293 -298 constd 4 1 -299 concat 4 262 168 -300 add 4 298 299 -301 slice 2 300 7 0 -302 ite 2 244 301 168 -303 concat 4 262 302 -304 sub 4 303 264 -305 slice 2 304 7 0 -306 ite 2 246 305 302 -307 ite 2 293 306 172 -308 eq 1 248 307 -309 and 1 297 308 -310 or 1 -296 309 -311 and 1 295 310 -312 input 1 f08 -313 and 1 297 -296 -314 and 1 -308 313 -315 or 1 -312 314 -316 and 1 311 315 -317 input 1 f09 -318 or 1 196 296 -319 or 1 318 312 -320 concat 4 262 307 -321 srem 4 320 264 -322 slice 2 321 7 0 -323 ite 2 312 322 307 -324 eq 1 129 323 -325 constd 4 0 -326 concat 4 262 267 -327 add 4 298 326 -328 srem 4 327 264 -329 eq 1 325 328 -330 and 1 290 329 -331 add 4 264 326 -332 sub 4 331 298 -333 srem 4 332 264 -334 eq 1 325 333 -335 and 1 286 334 -336 ite 2 335 129 156 -337 ite 2 330 126 336 -338 eq 1 126 323 -339 eq 1 298 328 -340 and 1 290 339 -341 eq 1 298 333 -342 and 1 286 341 -343 ite 2 342 129 158 -344 ite 2 340 126 343 -345 eq 1 270 323 -346 constd 4 2 -347 eq 1 346 328 -348 and 1 290 347 -349 eq 1 346 333 -350 and 1 286 349 -351 ite 2 350 129 160 -352 ite 2 348 126 351 -353 eq 1 272 323 -354 constd 4 3 -355 eq 1 354 328 -356 and 1 290 355 -357 eq 1 354 333 -358 and 1 286 357 -359 ite 2 358 129 162 -360 ite 2 356 126 359 -361 eq 1 274 323 -362 constd 4 4 -363 eq 1 362 328 -364 and 1 290 363 -365 eq 1 362 333 -366 and 1 286 365 -367 ite 2 366 129 164 -368 ite 2 364 126 367 -369 constd 4 5 -370 eq 1 369 328 -371 and 1 290 370 -372 eq 1 369 333 -373 and 1 286 372 -374 ite 2 373 129 166 -375 ite 2 371 126 374 -376 ite 2 361 368 375 -377 ite 2 353 360 376 -378 ite 2 345 352 377 -379 ite 2 338 344 378 -380 ite 2 324 337 379 -381 eq 1 126 380 -382 and 1 319 381 -383 or 1 -317 382 -384 and 1 316 383 -385 or 1 198 317 -386 input 1 f10 -387 or 1 385 -386 -388 and 1 384 387 -389 or 1 200 386 -390 input 1 f11 -391 or 1 389 -390 -392 and 1 388 391 -393 input 1 f12 -394 or 1 202 -393 -395 and 1 392 394 -396 input 1 f13 -397 or 1 204 393 -398 concat 4 262 306 -399 add 4 298 398 -400 slice 2 399 7 0 -401 ite 2 293 400 306 -402 concat 4 262 401 -403 sub 4 402 264 -404 slice 2 403 7 0 -405 ite 2 296 404 401 -406 ite 2 393 405 174 -407 eq 1 248 406 -408 and 1 397 407 -409 or 1 -396 408 -410 and 1 395 409 -411 input 1 f14 -412 and 1 397 -396 -413 and 1 -407 412 -414 or 1 -411 413 -415 and 1 410 414 -416 input 1 f15 -417 or 1 206 396 -418 or 1 417 411 -419 concat 4 262 406 -420 srem 4 419 264 -421 slice 2 420 7 0 -422 ite 2 411 421 406 -423 eq 1 129 422 -424 concat 4 262 323 -425 add 4 298 424 -426 srem 4 425 264 -427 eq 1 325 426 -428 and 1 390 427 -429 add 4 264 424 -430 sub 4 429 298 -431 srem 4 430 264 -432 eq 1 325 431 -433 and 1 386 432 -434 ite 2 433 129 337 -435 ite 2 428 126 434 -436 eq 1 126 422 -437 eq 1 298 426 -438 and 1 390 437 -439 eq 1 298 431 -440 and 1 386 439 -441 ite 2 440 129 344 -442 ite 2 438 126 441 -443 eq 1 270 422 -444 eq 1 346 426 -445 and 1 390 444 -446 eq 1 346 431 -447 and 1 386 446 -448 ite 2 447 129 352 -449 ite 2 445 126 448 -450 eq 1 272 422 -451 eq 1 354 426 -452 and 1 390 451 -453 eq 1 354 431 -454 and 1 386 453 -455 ite 2 454 129 360 -456 ite 2 452 126 455 -457 eq 1 274 422 -458 eq 1 362 426 -459 and 1 390 458 -460 eq 1 362 431 -461 and 1 386 460 -462 ite 2 461 129 368 -463 ite 2 459 126 462 -464 eq 1 369 426 -465 and 1 390 464 -466 eq 1 369 431 -467 and 1 386 466 -468 ite 2 467 129 375 -469 ite 2 465 126 468 -470 ite 2 457 463 469 -471 ite 2 450 456 470 -472 ite 2 443 449 471 -473 ite 2 436 442 472 -474 ite 2 423 435 473 -475 eq 1 126 474 -476 and 1 418 475 -477 or 1 -416 476 -478 and 1 415 477 -479 or 1 208 416 -480 input 1 f16 -481 or 1 479 -480 -482 and 1 478 481 -483 or 1 210 480 -484 input 1 f17 -485 or 1 483 -484 -486 and 1 482 485 -487 input 1 f18 -488 or 1 212 -487 -489 and 1 486 488 -490 input 1 f19 -491 or 1 214 487 -492 concat 4 262 405 -493 add 4 298 492 -494 slice 2 493 7 0 -495 ite 2 393 494 405 -496 concat 4 262 495 -497 sub 4 496 264 -498 slice 2 497 7 0 -499 ite 2 396 498 495 -500 ite 2 487 499 176 -501 eq 1 248 500 -502 and 1 491 501 -503 or 1 -490 502 -504 and 1 489 503 -505 input 1 f20 -506 and 1 491 -490 -507 and 1 -501 506 -508 or 1 -505 507 -509 and 1 504 508 -510 input 1 f21 -511 or 1 216 490 -512 or 1 511 505 -513 concat 4 262 500 -514 srem 4 513 264 -515 slice 2 514 7 0 -516 ite 2 505 515 500 -517 eq 1 129 516 -518 concat 4 262 422 -519 add 4 298 518 -520 srem 4 519 264 -521 eq 1 325 520 -522 and 1 484 521 -523 add 4 264 518 -524 sub 4 523 298 -525 srem 4 524 264 -526 eq 1 325 525 -527 and 1 480 526 -528 ite 2 527 129 435 -529 ite 2 522 126 528 -530 eq 1 126 516 -531 eq 1 298 520 -532 and 1 484 531 -533 eq 1 298 525 -534 and 1 480 533 -535 ite 2 534 129 442 -536 ite 2 532 126 535 -537 eq 1 270 516 -538 eq 1 346 520 -539 and 1 484 538 -540 eq 1 346 525 -541 and 1 480 540 -542 ite 2 541 129 449 -543 ite 2 539 126 542 -544 eq 1 272 516 -545 eq 1 354 520 -546 and 1 484 545 -547 eq 1 354 525 -548 and 1 480 547 -549 ite 2 548 129 456 -550 ite 2 546 126 549 -551 eq 1 274 516 -552 eq 1 362 520 -553 and 1 484 552 -554 eq 1 362 525 -555 and 1 480 554 -556 ite 2 555 129 463 -557 ite 2 553 126 556 -558 eq 1 369 520 -559 and 1 484 558 -560 eq 1 369 525 -561 and 1 480 560 -562 ite 2 561 129 469 -563 ite 2 559 126 562 -564 ite 2 551 557 563 -565 ite 2 544 550 564 -566 ite 2 537 543 565 -567 ite 2 530 536 566 -568 ite 2 517 529 567 -569 eq 1 126 568 -570 and 1 512 569 -571 or 1 -510 570 -572 and 1 509 571 -573 or 1 218 510 -574 input 1 f22 -575 or 1 573 -574 -576 and 1 572 575 -577 or 1 220 574 -578 input 1 f23 -579 or 1 577 -578 -580 and 1 576 579 -581 input 1 f24 -582 or 1 222 -581 -583 and 1 580 582 -584 input 1 f25 -585 or 1 224 581 -586 concat 4 262 499 -587 add 4 298 586 -588 slice 2 587 7 0 -589 ite 2 487 588 499 -590 concat 4 262 589 -591 sub 4 590 264 -592 slice 2 591 7 0 -593 ite 2 490 592 589 -594 ite 2 581 593 178 -595 eq 1 248 594 -596 and 1 585 595 -597 or 1 -584 596 -598 and 1 583 597 -599 input 1 f26 -600 and 1 585 -584 -601 and 1 -595 600 -602 or 1 -599 601 -603 and 1 598 602 -604 input 1 f27 -605 or 1 226 584 -606 or 1 605 599 -607 concat 4 262 594 -608 srem 4 607 264 -609 slice 2 608 7 0 -610 ite 2 599 609 594 -611 eq 1 129 610 -612 concat 4 262 516 -613 add 4 298 612 -614 srem 4 613 264 -615 eq 1 325 614 -616 and 1 578 615 -617 add 4 264 612 -618 sub 4 617 298 -619 srem 4 618 264 -620 eq 1 325 619 -621 and 1 574 620 -622 ite 2 621 129 529 -623 ite 2 616 126 622 -624 eq 1 126 610 -625 eq 1 298 614 -626 and 1 578 625 -627 eq 1 298 619 -628 and 1 574 627 -629 ite 2 628 129 536 -630 ite 2 626 126 629 -631 eq 1 270 610 -632 eq 1 346 614 -633 and 1 578 632 -634 eq 1 346 619 -635 and 1 574 634 -636 ite 2 635 129 543 -637 ite 2 633 126 636 -638 eq 1 272 610 -639 eq 1 354 614 -640 and 1 578 639 -641 eq 1 354 619 -642 and 1 574 641 -643 ite 2 642 129 550 -644 ite 2 640 126 643 -645 eq 1 274 610 -646 eq 1 362 614 -647 and 1 578 646 -648 eq 1 362 619 -649 and 1 574 648 -650 ite 2 649 129 557 -651 ite 2 647 126 650 -652 eq 1 369 614 -653 and 1 578 652 -654 eq 1 369 619 -655 and 1 574 654 -656 ite 2 655 129 563 -657 ite 2 653 126 656 -658 ite 2 645 651 657 -659 ite 2 638 644 658 -660 ite 2 631 637 659 -661 ite 2 624 630 660 -662 ite 2 611 623 661 -663 eq 1 126 662 -664 and 1 606 663 -665 or 1 -604 664 -666 and 1 603 665 -667 or 1 228 604 -668 input 1 f28 -669 or 1 667 -668 -670 and 1 666 669 -671 or 1 230 668 -672 input 1 f29 -673 or 1 671 -672 -674 and 1 670 673 -675 input 1 f30 -676 or 1 232 -675 -677 and 1 674 676 -678 input 1 f31 -679 or 1 234 675 -680 concat 4 262 593 -681 add 4 298 680 -682 slice 2 681 7 0 -683 ite 2 581 682 593 -684 concat 4 262 683 -685 sub 4 684 264 -686 slice 2 685 7 0 -687 ite 2 584 686 683 -688 ite 2 675 687 180 -689 eq 1 248 688 -690 and 1 679 689 -691 or 1 -678 690 -692 and 1 677 691 -693 input 1 f32 -694 and 1 679 -678 -695 and 1 -689 694 -696 or 1 -693 695 -697 and 1 692 696 -698 input 1 f33 -699 or 1 236 678 -700 or 1 699 693 -701 concat 4 262 688 -702 srem 4 701 264 -703 slice 2 702 7 0 -704 ite 2 693 703 688 -705 eq 1 129 704 -706 concat 4 262 610 -707 add 4 298 706 -708 srem 4 707 264 -709 eq 1 325 708 -710 and 1 672 709 -711 add 4 264 706 -712 sub 4 711 298 -713 srem 4 712 264 -714 eq 1 325 713 -715 and 1 668 714 -716 ite 2 715 129 623 -717 ite 2 710 126 716 -718 eq 1 126 704 -719 eq 1 298 708 -720 and 1 672 719 -721 eq 1 298 713 -722 and 1 668 721 -723 ite 2 722 129 630 -724 ite 2 720 126 723 -725 eq 1 270 704 -726 eq 1 346 708 -727 and 1 672 726 -728 eq 1 346 713 -729 and 1 668 728 -730 ite 2 729 129 637 -731 ite 2 727 126 730 -732 eq 1 272 704 -733 eq 1 354 708 -734 and 1 672 733 -735 eq 1 354 713 -736 and 1 668 735 -737 ite 2 736 129 644 -738 ite 2 734 126 737 -739 eq 1 274 704 -740 eq 1 362 708 -741 and 1 672 740 -742 eq 1 362 713 -743 and 1 668 742 -744 ite 2 743 129 651 -745 ite 2 741 126 744 -746 eq 1 369 708 -747 and 1 672 746 -748 eq 1 369 713 -749 and 1 668 748 -750 ite 2 749 129 657 -751 ite 2 747 126 750 -752 ite 2 739 745 751 -753 ite 2 732 738 752 -754 ite 2 725 731 753 -755 ite 2 718 724 754 -756 ite 2 705 717 755 -757 eq 1 126 756 -758 and 1 700 757 -759 or 1 -698 758 -760 and 1 697 759 -761 or 1 238 698 -762 input 1 f34 -763 or 1 761 -762 -764 and 1 760 763 -765 or 1 240 762 -766 input 1 f35 -767 or 1 765 -766 -768 and 1 764 767 -769 or 1 244 246 -770 or 1 254 769 -771 or 1 259 770 -772 or 1 286 771 -773 or 1 290 772 -774 or 1 293 773 -775 or 1 296 774 -776 or 1 312 775 -777 or 1 317 776 -778 or 1 386 777 -779 or 1 390 778 -780 or 1 393 779 -781 or 1 396 780 -782 or 1 411 781 -783 or 1 416 782 -784 or 1 480 783 -785 or 1 484 784 -786 or 1 487 785 -787 or 1 490 786 -788 or 1 505 787 -789 or 1 510 788 -790 or 1 574 789 -791 or 1 578 790 -792 or 1 581 791 -793 or 1 584 792 -794 or 1 599 793 -795 or 1 604 794 -796 or 1 668 795 -797 or 1 672 796 -798 or 1 675 797 -799 or 1 678 798 -800 or 1 693 799 -801 or 1 698 800 -802 or 1 762 801 -803 or 1 766 802 -804 and 1 768 803 -805 and 1 182 184 -806 or 1 182 184 -807 and 1 186 806 -808 or 1 805 807 -809 or 1 186 806 -810 and 1 188 809 -811 or 1 808 810 -812 or 1 188 809 -813 and 1 190 812 -814 or 1 811 813 -815 or 1 190 812 -816 and 1 -814 815 -817 and 1 192 194 -818 or 1 192 194 -819 and 1 196 818 -820 or 1 817 819 -821 or 1 196 818 -822 and 1 198 821 -823 or 1 820 822 -824 or 1 198 821 -825 and 1 200 824 -826 or 1 823 825 -827 and 1 816 -826 -828 or 1 200 824 -829 and 1 827 828 -830 and 1 202 204 -831 or 1 202 204 -832 and 1 206 831 -833 or 1 830 832 -834 or 1 206 831 -835 and 1 208 834 -836 or 1 833 835 -837 or 1 208 834 -838 and 1 210 837 -839 or 1 836 838 -840 and 1 829 -839 -841 or 1 210 837 -842 and 1 840 841 -843 and 1 212 214 -844 or 1 212 214 -845 and 1 216 844 -846 or 1 843 845 -847 or 1 216 844 -848 and 1 218 847 -849 or 1 846 848 -850 or 1 218 847 -851 and 1 220 850 -852 or 1 849 851 -853 and 1 842 -852 -854 or 1 220 850 -855 and 1 853 854 -856 and 1 222 224 -857 or 1 222 224 -858 and 1 226 857 -859 or 1 856 858 -860 or 1 226 857 -861 and 1 228 860 -862 or 1 859 861 -863 or 1 228 860 -864 and 1 230 863 -865 or 1 862 864 -866 and 1 855 -865 -867 or 1 230 863 -868 and 1 866 867 -869 and 1 232 234 -870 or 1 232 234 -871 and 1 236 870 -872 or 1 869 871 -873 or 1 236 870 -874 and 1 238 873 -875 or 1 872 874 -876 or 1 238 873 -877 and 1 240 876 -878 or 1 875 877 -879 and 1 868 -878 -880 or 1 240 876 -881 and 1 879 880 -882 and 1 804 881 -883 and 1 255 -254 -884 and 1 182 -244 -885 or 1 884 290 -886 and 1 883 885 -887 and 1 261 -259 -888 or 1 883 885 -889 and 1 887 888 -890 or 1 886 889 -891 and 1 285 -286 -892 or 1 887 888 -893 and 1 891 892 -894 or 1 890 893 -895 and 1 289 -290 -896 or 1 891 892 -897 and 1 895 896 -898 or 1 894 897 -899 or 1 895 896 -900 and 1 -898 899 -901 and 1 313 -312 -902 and 1 192 -293 -903 or 1 902 390 -904 and 1 901 903 -905 and 1 319 -317 -906 or 1 901 903 -907 and 1 905 906 -908 or 1 904 907 -909 and 1 385 -386 -910 or 1 905 906 -911 and 1 909 910 -912 or 1 908 911 -913 and 1 389 -390 -914 or 1 909 910 -915 and 1 913 914 -916 or 1 912 915 -917 and 1 900 -916 -918 or 1 913 914 -919 and 1 917 918 -920 and 1 412 -411 -921 and 1 202 -393 -922 or 1 921 484 -923 and 1 920 922 -924 and 1 418 -416 -925 or 1 920 922 -926 and 1 924 925 -927 or 1 923 926 -928 and 1 479 -480 -929 or 1 924 925 -930 and 1 928 929 -931 or 1 927 930 -932 and 1 483 -484 -933 or 1 928 929 -934 and 1 932 933 -935 or 1 931 934 -936 and 1 919 -935 -937 or 1 932 933 -938 and 1 936 937 -939 and 1 506 -505 -940 and 1 212 -487 -941 or 1 940 578 -942 and 1 939 941 -943 and 1 512 -510 -944 or 1 939 941 -945 and 1 943 944 -946 or 1 942 945 -947 and 1 573 -574 -948 or 1 943 944 -949 and 1 947 948 -950 or 1 946 949 -951 and 1 577 -578 -952 or 1 947 948 -953 and 1 951 952 -954 or 1 950 953 -955 and 1 938 -954 -956 or 1 951 952 -957 and 1 955 956 -958 and 1 600 -599 -959 and 1 222 -581 -960 or 1 959 672 -961 and 1 958 960 -962 and 1 606 -604 -963 or 1 958 960 -964 and 1 962 963 -965 or 1 961 964 -966 and 1 667 -668 -967 or 1 962 963 -968 and 1 966 967 -969 or 1 965 968 -970 and 1 671 -672 -971 or 1 966 967 -972 and 1 970 971 -973 or 1 969 972 -974 and 1 957 -973 -975 or 1 970 971 -976 and 1 974 975 -977 and 1 694 -693 -978 and 1 232 -675 -979 or 1 978 766 -980 and 1 977 979 -981 and 1 700 -698 -982 or 1 977 979 -983 and 1 981 982 -984 or 1 980 983 -985 and 1 761 -762 -986 or 1 981 982 -987 and 1 985 986 -988 or 1 984 987 -989 and 1 765 -766 -990 or 1 985 986 -991 and 1 989 990 -992 or 1 988 991 -993 and 1 976 -992 -994 or 1 989 990 -995 and 1 993 994 -996 and 1 882 995 -997 concat 4 262 704 -998 add 4 298 997 -999 srem 4 998 264 -1000 eq 1 325 999 -1001 and 1 766 1000 -1002 add 4 264 997 -1003 sub 4 1002 298 -1004 srem 4 1003 264 -1005 eq 1 325 1004 -1006 and 1 762 1005 -1007 ite 2 1006 129 717 -1008 ite 2 1001 126 1007 -1009 eq 1 1008 6 -1010 and 1 996 1009 -1011 eq 1 298 999 -1012 and 1 766 1011 -1013 eq 1 298 1004 -1014 and 1 762 1013 -1015 ite 2 1014 129 724 -1016 ite 2 1012 126 1015 -1017 eq 1 1016 8 -1018 and 1 1010 1017 -1019 eq 1 346 999 -1020 and 1 766 1019 -1021 eq 1 346 1004 -1022 and 1 762 1021 -1023 ite 2 1022 129 731 -1024 ite 2 1020 126 1023 -1025 eq 1 1024 10 -1026 and 1 1018 1025 -1027 eq 1 354 999 -1028 and 1 766 1027 -1029 eq 1 354 1004 -1030 and 1 762 1029 -1031 ite 2 1030 129 738 -1032 ite 2 1028 126 1031 -1033 eq 1 1032 12 -1034 and 1 1026 1033 -1035 eq 1 362 999 -1036 and 1 766 1035 -1037 eq 1 362 1004 -1038 and 1 762 1037 -1039 ite 2 1038 129 745 -1040 ite 2 1036 126 1039 -1041 eq 1 1040 14 -1042 and 1 1034 1041 -1043 eq 1 369 999 -1044 and 1 766 1043 -1045 eq 1 369 1004 -1046 and 1 762 1045 -1047 ite 2 1046 129 751 -1048 ite 2 1044 126 1047 -1049 eq 1 1048 16 -1050 and 1 1042 1049 -1051 concat 4 262 687 -1052 add 4 298 1051 -1053 slice 2 1052 7 0 -1054 ite 2 675 1053 687 -1055 concat 4 262 1054 -1056 sub 4 1055 264 -1057 slice 2 1056 7 0 -1058 ite 2 678 1057 1054 -1059 eq 1 1058 18 -1060 and 1 1050 1059 -1061 eq 1 267 20 -1062 and 1 1060 1061 -1063 eq 1 323 22 -1064 and 1 1062 1063 -1065 eq 1 422 24 -1066 and 1 1064 1065 -1067 eq 1 516 26 -1068 and 1 1066 1067 -1069 eq 1 610 28 -1070 and 1 1068 1069 -1071 eq 1 704 30 -1072 and 1 1070 1071 -1073 eq 1 885 33 -1074 and 1 1072 1073 -1075 eq 1 883 35 -1076 and 1 1074 1075 -1077 eq 1 887 37 -1078 and 1 1076 1077 -1079 eq 1 891 39 -1080 and 1 1078 1079 -1081 eq 1 895 41 -1082 and 1 1080 1081 -1083 eq 1 903 43 -1084 and 1 1082 1083 -1085 eq 1 901 45 -1086 and 1 1084 1085 -1087 eq 1 905 47 -1088 and 1 1086 1087 -1089 eq 1 909 49 -1090 and 1 1088 1089 -1091 eq 1 913 51 -1092 and 1 1090 1091 -1093 eq 1 922 53 -1094 and 1 1092 1093 -1095 eq 1 920 55 -1096 and 1 1094 1095 -1097 eq 1 924 57 -1098 and 1 1096 1097 -1099 eq 1 928 59 -1100 and 1 1098 1099 -1101 eq 1 932 61 -1102 and 1 1100 1101 -1103 eq 1 941 63 -1104 and 1 1102 1103 -1105 eq 1 939 65 -1106 and 1 1104 1105 -1107 eq 1 943 67 -1108 and 1 1106 1107 -1109 eq 1 947 69 -1110 and 1 1108 1109 -1111 eq 1 951 71 -1112 and 1 1110 1111 -1113 eq 1 960 73 -1114 and 1 1112 1113 -1115 eq 1 958 75 -1116 and 1 1114 1115 -1117 eq 1 962 77 -1118 and 1 1116 1117 -1119 eq 1 966 79 -1120 and 1 1118 1119 -1121 eq 1 970 81 -1122 and 1 1120 1121 -1123 eq 1 979 83 -1124 and 1 1122 1123 -1125 eq 1 977 85 -1126 and 1 1124 1125 -1127 eq 1 981 87 -1128 and 1 1126 1127 -1129 eq 1 985 89 -1130 and 1 1128 1129 -1131 eq 1 989 91 -1132 and 1 1130 1131 -1133 and 1 1132 95 -1134 ite 4 190 298 325 -1135 ite 4 200 298 325 -1136 add 4 1134 1135 -1137 ite 4 210 298 325 -1138 add 4 1136 1137 -1139 ite 4 220 298 325 -1140 add 4 1138 1139 -1141 ite 4 230 298 325 -1142 add 4 1140 1141 -1143 ite 4 240 298 325 -1144 add 4 1142 1143 -1145 ulte 1 1144 298 -1146 ite 1 93 1133 -1145 -1147 next 1 95 1146 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-func-interl.btor2 deleted file mode 100644 index f0c8fd000f..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.7.prop1-func-interl.btor2 +++ /dev/null @@ -1,998 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_Slot_0 -7 init 2 6 5 -8 state 2 v_Slot_1 -9 init 2 8 5 -10 state 2 v_Slot_2 -11 init 2 10 5 -12 state 2 v_Slot_3 -13 init 2 12 5 -14 state 2 v_Slot_4 -15 init 2 14 5 -16 state 2 v_Slot_5 -17 init 2 16 5 -18 state 2 v_next -19 init 2 18 5 -20 state 2 v_my_place_P_0 -21 init 2 20 5 -22 state 2 v_my_place_P_1 -23 init 2 22 5 -24 state 2 v_my_place_P_2 -25 init 2 24 5 -26 state 2 v_my_place_P_3 -27 init 2 26 5 -28 state 2 v_my_place_P_4 -29 init 2 28 5 -30 state 2 v_my_place_P_5 -31 init 2 30 5 -32 zero 1 -33 state 1 a_NCS_P_0 -34 init 1 33 32 -35 state 1 a_p1_P_0 -36 init 1 35 32 -37 state 1 a_p2_P_0 -38 init 1 37 32 -39 state 1 a_p3_P_0 -40 init 1 39 32 -41 state 1 a_CS_P_0 -42 init 1 41 32 -43 state 1 a_NCS_P_1 -44 init 1 43 32 -45 state 1 a_p1_P_1 -46 init 1 45 32 -47 state 1 a_p2_P_1 -48 init 1 47 32 -49 state 1 a_p3_P_1 -50 init 1 49 32 -51 state 1 a_CS_P_1 -52 init 1 51 32 -53 state 1 a_NCS_P_2 -54 init 1 53 32 -55 state 1 a_p1_P_2 -56 init 1 55 32 -57 state 1 a_p2_P_2 -58 init 1 57 32 -59 state 1 a_p3_P_2 -60 init 1 59 32 -61 state 1 a_CS_P_2 -62 init 1 61 32 -63 state 1 a_NCS_P_3 -64 init 1 63 32 -65 state 1 a_p1_P_3 -66 init 1 65 32 -67 state 1 a_p2_P_3 -68 init 1 67 32 -69 state 1 a_p3_P_3 -70 init 1 69 32 -71 state 1 a_CS_P_3 -72 init 1 71 32 -73 state 1 a_NCS_P_4 -74 init 1 73 32 -75 state 1 a_p1_P_4 -76 init 1 75 32 -77 state 1 a_p2_P_4 -78 init 1 77 32 -79 state 1 a_p3_P_4 -80 init 1 79 32 -81 state 1 a_CS_P_4 -82 init 1 81 32 -83 state 1 a_NCS_P_5 -84 init 1 83 32 -85 state 1 a_p1_P_5 -86 init 1 85 32 -87 state 1 a_p2_P_5 -88 init 1 87 32 -89 state 1 a_p3_P_5 -90 init 1 89 32 -91 state 1 a_CS_P_5 -92 init 1 91 32 -93 state 1 dve_invalid -94 init 1 93 32 -95 constd 4 1 -96 constd 4 0 -97 ite 4 41 95 96 -98 ite 4 51 95 96 -99 add 4 97 98 -100 ite 4 61 95 96 -101 add 4 99 100 -102 ite 4 71 95 96 -103 add 4 101 102 -104 ite 4 81 95 96 -105 add 4 103 104 -106 ite 4 91 95 96 -107 add 4 105 106 -108 ulte 1 107 95 -109 and 1 -93 -108 -110 bad 109 -111 constd 2 1 -112 input 1 f35 -113 constd 3 0 -114 concat 4 113 30 -115 add 4 95 114 -116 constd 4 6 -117 srem 4 115 116 -118 eq 1 96 117 -119 and 1 112 118 -120 input 1 f34 -121 add 4 116 114 -122 sub 4 121 95 -123 srem 4 122 116 -124 eq 1 96 123 -125 and 1 120 124 -126 constd 2 0 -127 input 1 f29 -128 concat 4 113 28 -129 add 4 95 128 -130 srem 4 129 116 -131 eq 1 96 130 -132 and 1 127 131 -133 input 1 f28 -134 add 4 116 128 -135 sub 4 134 95 -136 srem 4 135 116 -137 eq 1 96 136 -138 and 1 133 137 -139 input 1 f23 -140 concat 4 113 26 -141 add 4 95 140 -142 srem 4 141 116 -143 eq 1 96 142 -144 and 1 139 143 -145 input 1 f22 -146 add 4 116 140 -147 sub 4 146 95 -148 srem 4 147 116 -149 eq 1 96 148 -150 and 1 145 149 -151 input 1 f17 -152 concat 4 113 24 -153 add 4 95 152 -154 srem 4 153 116 -155 eq 1 96 154 -156 and 1 151 155 -157 input 1 f16 -158 add 4 116 152 -159 sub 4 158 95 -160 srem 4 159 116 -161 eq 1 96 160 -162 and 1 157 161 -163 input 1 f11 -164 concat 4 113 22 -165 add 4 95 164 -166 srem 4 165 116 -167 eq 1 96 166 -168 and 1 163 167 -169 input 1 f10 -170 add 4 116 164 -171 sub 4 170 95 -172 srem 4 171 116 -173 eq 1 96 172 -174 and 1 169 173 -175 input 1 f05 -176 concat 4 113 20 -177 add 4 95 176 -178 srem 4 177 116 -179 eq 1 96 178 -180 and 1 175 179 -181 input 1 f04 -182 add 4 116 176 -183 sub 4 182 95 -184 srem 4 183 116 -185 eq 1 96 184 -186 and 1 181 185 -187 xor 2 111 6 -188 ite 2 186 126 187 -189 ite 2 180 111 188 -190 ite 2 174 126 189 -191 ite 2 168 111 190 -192 ite 2 162 126 191 -193 ite 2 156 111 192 -194 ite 2 150 126 193 -195 ite 2 144 111 194 -196 ite 2 138 126 195 -197 ite 2 132 111 196 -198 ite 2 125 126 197 -199 ite 2 119 111 198 -200 xor 2 111 199 -201 next 2 6 200 -202 eq 1 95 117 -203 and 1 112 202 -204 eq 1 95 123 -205 and 1 120 204 -206 eq 1 95 130 -207 and 1 127 206 -208 eq 1 95 136 -209 and 1 133 208 -210 eq 1 95 142 -211 and 1 139 210 -212 eq 1 95 148 -213 and 1 145 212 -214 eq 1 95 154 -215 and 1 151 214 -216 eq 1 95 160 -217 and 1 157 216 -218 eq 1 95 166 -219 and 1 163 218 -220 eq 1 95 172 -221 and 1 169 220 -222 eq 1 95 178 -223 and 1 175 222 -224 eq 1 95 184 -225 and 1 181 224 -226 ite 2 225 126 8 -227 ite 2 223 111 226 -228 ite 2 221 126 227 -229 ite 2 219 111 228 -230 ite 2 217 126 229 -231 ite 2 215 111 230 -232 ite 2 213 126 231 -233 ite 2 211 111 232 -234 ite 2 209 126 233 -235 ite 2 207 111 234 -236 ite 2 205 126 235 -237 ite 2 203 111 236 -238 next 2 8 237 -239 constd 4 2 -240 eq 1 239 117 -241 and 1 112 240 -242 eq 1 239 123 -243 and 1 120 242 -244 eq 1 239 130 -245 and 1 127 244 -246 eq 1 239 136 -247 and 1 133 246 -248 eq 1 239 142 -249 and 1 139 248 -250 eq 1 239 148 -251 and 1 145 250 -252 eq 1 239 154 -253 and 1 151 252 -254 eq 1 239 160 -255 and 1 157 254 -256 eq 1 239 166 -257 and 1 163 256 -258 eq 1 239 172 -259 and 1 169 258 -260 eq 1 239 178 -261 and 1 175 260 -262 eq 1 239 184 -263 and 1 181 262 -264 ite 2 263 126 10 -265 ite 2 261 111 264 -266 ite 2 259 126 265 -267 ite 2 257 111 266 -268 ite 2 255 126 267 -269 ite 2 253 111 268 -270 ite 2 251 126 269 -271 ite 2 249 111 270 -272 ite 2 247 126 271 -273 ite 2 245 111 272 -274 ite 2 243 126 273 -275 ite 2 241 111 274 -276 next 2 10 275 -277 constd 4 3 -278 eq 1 277 117 -279 and 1 112 278 -280 eq 1 277 123 -281 and 1 120 280 -282 eq 1 277 130 -283 and 1 127 282 -284 eq 1 277 136 -285 and 1 133 284 -286 eq 1 277 142 -287 and 1 139 286 -288 eq 1 277 148 -289 and 1 145 288 -290 eq 1 277 154 -291 and 1 151 290 -292 eq 1 277 160 -293 and 1 157 292 -294 eq 1 277 166 -295 and 1 163 294 -296 eq 1 277 172 -297 and 1 169 296 -298 eq 1 277 178 -299 and 1 175 298 -300 eq 1 277 184 -301 and 1 181 300 -302 ite 2 301 126 12 -303 ite 2 299 111 302 -304 ite 2 297 126 303 -305 ite 2 295 111 304 -306 ite 2 293 126 305 -307 ite 2 291 111 306 -308 ite 2 289 126 307 -309 ite 2 287 111 308 -310 ite 2 285 126 309 -311 ite 2 283 111 310 -312 ite 2 281 126 311 -313 ite 2 279 111 312 -314 next 2 12 313 -315 constd 4 4 -316 eq 1 315 117 -317 and 1 112 316 -318 eq 1 315 123 -319 and 1 120 318 -320 eq 1 315 130 -321 and 1 127 320 -322 eq 1 315 136 -323 and 1 133 322 -324 eq 1 315 142 -325 and 1 139 324 -326 eq 1 315 148 -327 and 1 145 326 -328 eq 1 315 154 -329 and 1 151 328 -330 eq 1 315 160 -331 and 1 157 330 -332 eq 1 315 166 -333 and 1 163 332 -334 eq 1 315 172 -335 and 1 169 334 -336 eq 1 315 178 -337 and 1 175 336 -338 eq 1 315 184 -339 and 1 181 338 -340 ite 2 339 126 14 -341 ite 2 337 111 340 -342 ite 2 335 126 341 -343 ite 2 333 111 342 -344 ite 2 331 126 343 -345 ite 2 329 111 344 -346 ite 2 327 126 345 -347 ite 2 325 111 346 -348 ite 2 323 126 347 -349 ite 2 321 111 348 -350 ite 2 319 126 349 -351 ite 2 317 111 350 -352 next 2 14 351 -353 constd 4 5 -354 eq 1 353 117 -355 and 1 112 354 -356 eq 1 353 123 -357 and 1 120 356 -358 eq 1 353 130 -359 and 1 127 358 -360 eq 1 353 136 -361 and 1 133 360 -362 eq 1 353 142 -363 and 1 139 362 -364 eq 1 353 148 -365 and 1 145 364 -366 eq 1 353 154 -367 and 1 151 366 -368 eq 1 353 160 -369 and 1 157 368 -370 eq 1 353 166 -371 and 1 163 370 -372 eq 1 353 172 -373 and 1 169 372 -374 eq 1 353 178 -375 and 1 175 374 -376 eq 1 353 184 -377 and 1 181 376 -378 ite 2 377 126 16 -379 ite 2 375 111 378 -380 ite 2 373 126 379 -381 ite 2 371 111 380 -382 ite 2 369 126 381 -383 ite 2 367 111 382 -384 ite 2 365 126 383 -385 ite 2 363 111 384 -386 ite 2 361 126 385 -387 ite 2 359 111 386 -388 ite 2 357 126 387 -389 ite 2 355 111 388 -390 next 2 16 389 -391 input 1 f31 -392 concat 4 113 18 -393 sub 4 392 116 -394 slice 2 393 7 0 -395 input 1 f30 -396 add 4 95 392 -397 slice 2 396 7 0 -398 input 1 f25 -399 input 1 f24 -400 input 1 f19 -401 input 1 f18 -402 input 1 f13 -403 input 1 f12 -404 input 1 f07 -405 input 1 f06 -406 input 1 f01 -407 input 1 f00 -408 ite 2 407 397 18 -409 ite 2 406 394 408 -410 ite 2 405 397 409 -411 ite 2 404 394 410 -412 ite 2 403 397 411 -413 ite 2 402 394 412 -414 ite 2 401 397 413 -415 ite 2 400 394 414 -416 ite 2 399 397 415 -417 ite 2 398 394 416 -418 ite 2 395 397 417 -419 ite 2 391 394 418 -420 next 2 18 419 -421 input 1 f02 -422 srem 4 176 116 -423 slice 2 422 7 0 -424 ite 2 407 18 20 -425 ite 2 421 423 424 -426 next 2 20 425 -427 input 1 f08 -428 srem 4 164 116 -429 slice 2 428 7 0 -430 ite 2 405 18 22 -431 ite 2 427 429 430 -432 next 2 22 431 -433 input 1 f14 -434 srem 4 152 116 -435 slice 2 434 7 0 -436 ite 2 403 18 24 -437 ite 2 433 435 436 -438 next 2 24 437 -439 input 1 f20 -440 srem 4 140 116 -441 slice 2 440 7 0 -442 ite 2 401 18 26 -443 ite 2 439 441 442 -444 next 2 26 443 -445 input 1 f26 -446 srem 4 128 116 -447 slice 2 446 7 0 -448 ite 2 399 18 28 -449 ite 2 445 447 448 -450 next 2 28 449 -451 input 1 f32 -452 srem 4 114 116 -453 slice 2 452 7 0 -454 ite 2 395 18 30 -455 ite 2 451 453 454 -456 next 2 30 455 -457 and 1 -33 -407 -458 or 1 457 175 -459 next 1 33 -458 -460 or 1 35 407 -461 and 1 460 -406 -462 and 1 461 -421 -463 next 1 35 462 -464 or 1 37 406 -465 or 1 464 421 -466 input 1 f03 -467 and 1 465 -466 -468 next 1 37 467 -469 or 1 39 466 -470 and 1 469 -181 -471 next 1 39 470 -472 or 1 41 181 -473 and 1 472 -175 -474 next 1 41 473 -475 and 1 -43 -405 -476 or 1 475 163 -477 next 1 43 -476 -478 or 1 45 405 -479 and 1 478 -404 -480 and 1 479 -427 -481 next 1 45 480 -482 or 1 47 404 -483 or 1 482 427 -484 input 1 f09 -485 and 1 483 -484 -486 next 1 47 485 -487 or 1 49 484 -488 and 1 487 -169 -489 next 1 49 488 -490 or 1 51 169 -491 and 1 490 -163 -492 next 1 51 491 -493 and 1 -53 -403 -494 or 1 493 151 -495 next 1 53 -494 -496 or 1 55 403 -497 and 1 496 -402 -498 and 1 497 -433 -499 next 1 55 498 -500 or 1 57 402 -501 or 1 500 433 -502 input 1 f15 -503 and 1 501 -502 -504 next 1 57 503 -505 or 1 59 502 -506 and 1 505 -157 -507 next 1 59 506 -508 or 1 61 157 -509 and 1 508 -151 -510 next 1 61 509 -511 and 1 -63 -401 -512 or 1 511 139 -513 next 1 63 -512 -514 or 1 65 401 -515 and 1 514 -400 -516 and 1 515 -439 -517 next 1 65 516 -518 or 1 67 400 -519 or 1 518 439 -520 input 1 f21 -521 and 1 519 -520 -522 next 1 67 521 -523 or 1 69 520 -524 and 1 523 -145 -525 next 1 69 524 -526 or 1 71 145 -527 and 1 526 -139 -528 next 1 71 527 -529 and 1 -73 -399 -530 or 1 529 127 -531 next 1 73 -530 -532 or 1 75 399 -533 and 1 532 -398 -534 and 1 533 -445 -535 next 1 75 534 -536 or 1 77 398 -537 or 1 536 445 -538 input 1 f27 -539 and 1 537 -538 -540 next 1 77 539 -541 or 1 79 538 -542 and 1 541 -133 -543 next 1 79 542 -544 or 1 81 133 -545 and 1 544 -127 -546 next 1 81 545 -547 and 1 -83 -395 -548 or 1 547 112 -549 next 1 83 -548 -550 or 1 85 395 -551 and 1 550 -391 -552 and 1 551 -451 -553 next 1 85 552 -554 or 1 87 391 -555 or 1 554 451 -556 input 1 f33 -557 and 1 555 -556 -558 next 1 87 557 -559 or 1 89 556 -560 and 1 559 -120 -561 next 1 89 560 -562 or 1 91 120 -563 and 1 562 -112 -564 next 1 91 563 -565 or 1 -33 -407 -566 constd 2 5 -567 eq 1 566 20 -568 and 1 35 567 -569 or 1 -406 568 -570 and 1 565 569 -571 and 1 35 -567 -572 or 1 -421 571 -573 and 1 570 572 -574 eq 1 126 20 -575 eq 1 111 20 -576 constd 2 2 -577 eq 1 576 20 -578 constd 2 3 -579 eq 1 578 20 -580 constd 2 4 -581 eq 1 580 20 -582 ite 2 581 14 16 -583 ite 2 579 12 582 -584 ite 2 577 10 583 -585 ite 2 575 8 584 -586 ite 2 574 187 585 -587 eq 1 111 586 -588 and 1 37 587 -589 or 1 -466 588 -590 and 1 573 589 -591 or 1 39 -181 -592 and 1 590 591 -593 or 1 41 -175 -594 and 1 592 593 -595 or 1 -43 -405 -596 and 1 594 595 -597 eq 1 566 22 -598 and 1 45 597 -599 or 1 -404 598 -600 and 1 596 599 -601 and 1 45 -597 -602 or 1 -427 601 -603 and 1 600 602 -604 eq 1 126 22 -605 eq 1 111 22 -606 eq 1 576 22 -607 eq 1 578 22 -608 eq 1 580 22 -609 ite 2 608 14 16 -610 ite 2 607 12 609 -611 ite 2 606 10 610 -612 ite 2 605 8 611 -613 ite 2 604 187 612 -614 eq 1 111 613 -615 and 1 47 614 -616 or 1 -484 615 -617 and 1 603 616 -618 or 1 49 -169 -619 and 1 617 618 -620 or 1 51 -163 -621 and 1 619 620 -622 or 1 -53 -403 -623 and 1 621 622 -624 eq 1 566 24 -625 and 1 55 624 -626 or 1 -402 625 -627 and 1 623 626 -628 and 1 55 -624 -629 or 1 -433 628 -630 and 1 627 629 -631 eq 1 126 24 -632 eq 1 111 24 -633 eq 1 576 24 -634 eq 1 578 24 -635 eq 1 580 24 -636 ite 2 635 14 16 -637 ite 2 634 12 636 -638 ite 2 633 10 637 -639 ite 2 632 8 638 -640 ite 2 631 187 639 -641 eq 1 111 640 -642 and 1 57 641 -643 or 1 -502 642 -644 and 1 630 643 -645 or 1 59 -157 -646 and 1 644 645 -647 or 1 61 -151 -648 and 1 646 647 -649 or 1 -63 -401 -650 and 1 648 649 -651 eq 1 566 26 -652 and 1 65 651 -653 or 1 -400 652 -654 and 1 650 653 -655 and 1 65 -651 -656 or 1 -439 655 -657 and 1 654 656 -658 eq 1 126 26 -659 eq 1 111 26 -660 eq 1 576 26 -661 eq 1 578 26 -662 eq 1 580 26 -663 ite 2 662 14 16 -664 ite 2 661 12 663 -665 ite 2 660 10 664 -666 ite 2 659 8 665 -667 ite 2 658 187 666 -668 eq 1 111 667 -669 and 1 67 668 -670 or 1 -520 669 -671 and 1 657 670 -672 or 1 69 -145 -673 and 1 671 672 -674 or 1 71 -139 -675 and 1 673 674 -676 or 1 -73 -399 -677 and 1 675 676 -678 eq 1 566 28 -679 and 1 75 678 -680 or 1 -398 679 -681 and 1 677 680 -682 and 1 75 -678 -683 or 1 -445 682 -684 and 1 681 683 -685 eq 1 126 28 -686 eq 1 111 28 -687 eq 1 576 28 -688 eq 1 578 28 -689 eq 1 580 28 -690 ite 2 689 14 16 -691 ite 2 688 12 690 -692 ite 2 687 10 691 -693 ite 2 686 8 692 -694 ite 2 685 187 693 -695 eq 1 111 694 -696 and 1 77 695 -697 or 1 -538 696 -698 and 1 684 697 -699 or 1 79 -133 -700 and 1 698 699 -701 or 1 81 -127 -702 and 1 700 701 -703 or 1 -83 -395 -704 and 1 702 703 -705 eq 1 566 30 -706 and 1 85 705 -707 or 1 -391 706 -708 and 1 704 707 -709 and 1 85 -705 -710 or 1 -451 709 -711 and 1 708 710 -712 eq 1 126 30 -713 eq 1 111 30 -714 eq 1 576 30 -715 eq 1 578 30 -716 eq 1 580 30 -717 ite 2 716 14 16 -718 ite 2 715 12 717 -719 ite 2 714 10 718 -720 ite 2 713 8 719 -721 ite 2 712 187 720 -722 eq 1 111 721 -723 and 1 87 722 -724 or 1 -556 723 -725 and 1 711 724 -726 or 1 89 -120 -727 and 1 725 726 -728 or 1 91 -112 -729 and 1 727 728 -730 or 1 407 406 -731 or 1 421 730 -732 or 1 466 731 -733 or 1 181 732 -734 or 1 175 733 -735 or 1 405 734 -736 or 1 404 735 -737 or 1 427 736 -738 or 1 484 737 -739 or 1 169 738 -740 or 1 163 739 -741 or 1 403 740 -742 or 1 402 741 -743 or 1 433 742 -744 or 1 502 743 -745 or 1 157 744 -746 or 1 151 745 -747 or 1 401 746 -748 or 1 400 747 -749 or 1 439 748 -750 or 1 520 749 -751 or 1 145 750 -752 or 1 139 751 -753 or 1 399 752 -754 or 1 398 753 -755 or 1 445 754 -756 or 1 538 755 -757 or 1 133 756 -758 or 1 127 757 -759 or 1 395 758 -760 or 1 391 759 -761 or 1 451 760 -762 or 1 556 761 -763 or 1 120 762 -764 or 1 112 763 -765 and 1 729 764 -766 and 1 407 406 -767 and 1 421 730 -768 or 1 766 767 -769 and 1 466 731 -770 or 1 768 769 -771 and 1 181 732 -772 or 1 770 771 -773 and 1 175 733 -774 or 1 772 773 -775 and 1 405 734 -776 or 1 774 775 -777 and 1 404 735 -778 or 1 776 777 -779 and 1 427 736 -780 or 1 778 779 -781 and 1 484 737 -782 or 1 780 781 -783 and 1 169 738 -784 or 1 782 783 -785 and 1 163 739 -786 or 1 784 785 -787 and 1 403 740 -788 or 1 786 787 -789 and 1 402 741 -790 or 1 788 789 -791 and 1 433 742 -792 or 1 790 791 -793 and 1 502 743 -794 or 1 792 793 -795 and 1 157 744 -796 or 1 794 795 -797 and 1 151 745 -798 or 1 796 797 -799 and 1 401 746 -800 or 1 798 799 -801 and 1 400 747 -802 or 1 800 801 -803 and 1 439 748 -804 or 1 802 803 -805 and 1 520 749 -806 or 1 804 805 -807 and 1 145 750 -808 or 1 806 807 -809 and 1 139 751 -810 or 1 808 809 -811 and 1 399 752 -812 or 1 810 811 -813 and 1 398 753 -814 or 1 812 813 -815 and 1 445 754 -816 or 1 814 815 -817 and 1 538 755 -818 or 1 816 817 -819 and 1 133 756 -820 or 1 818 819 -821 and 1 127 757 -822 or 1 820 821 -823 and 1 395 758 -824 or 1 822 823 -825 and 1 391 759 -826 or 1 824 825 -827 and 1 451 760 -828 or 1 826 827 -829 and 1 556 761 -830 or 1 828 829 -831 and 1 120 762 -832 or 1 830 831 -833 and 1 112 763 -834 or 1 832 833 -835 and 1 765 -834 -836 and 1 -33 35 -837 or 1 -33 35 -838 and 1 37 837 -839 or 1 836 838 -840 or 1 37 837 -841 and 1 39 840 -842 or 1 839 841 -843 or 1 39 840 -844 and 1 41 843 -845 or 1 842 844 -846 or 1 41 843 -847 and 1 -845 846 -848 and 1 -43 45 -849 or 1 -43 45 -850 and 1 47 849 -851 or 1 848 850 -852 or 1 47 849 -853 and 1 49 852 -854 or 1 851 853 -855 or 1 49 852 -856 and 1 51 855 -857 or 1 854 856 -858 and 1 847 -857 -859 or 1 51 855 -860 and 1 858 859 -861 and 1 -53 55 -862 or 1 -53 55 -863 and 1 57 862 -864 or 1 861 863 -865 or 1 57 862 -866 and 1 59 865 -867 or 1 864 866 -868 or 1 59 865 -869 and 1 61 868 -870 or 1 867 869 -871 and 1 860 -870 -872 or 1 61 868 -873 and 1 871 872 -874 and 1 -63 65 -875 or 1 -63 65 -876 and 1 67 875 -877 or 1 874 876 -878 or 1 67 875 -879 and 1 69 878 -880 or 1 877 879 -881 or 1 69 878 -882 and 1 71 881 -883 or 1 880 882 -884 and 1 873 -883 -885 or 1 71 881 -886 and 1 884 885 -887 and 1 -73 75 -888 or 1 -73 75 -889 and 1 77 888 -890 or 1 887 889 -891 or 1 77 888 -892 and 1 79 891 -893 or 1 890 892 -894 or 1 79 891 -895 and 1 81 894 -896 or 1 893 895 -897 and 1 886 -896 -898 or 1 81 894 -899 and 1 897 898 -900 and 1 -83 85 -901 or 1 -83 85 -902 and 1 87 901 -903 or 1 900 902 -904 or 1 87 901 -905 and 1 89 904 -906 or 1 903 905 -907 or 1 89 904 -908 and 1 91 907 -909 or 1 906 908 -910 and 1 899 -909 -911 or 1 91 907 -912 and 1 910 911 -913 and 1 835 912 -914 and 1 462 458 -915 or 1 462 458 -916 and 1 467 915 -917 or 1 914 916 -918 or 1 467 915 -919 and 1 470 918 -920 or 1 917 919 -921 or 1 470 918 -922 and 1 473 921 -923 or 1 920 922 -924 or 1 473 921 -925 and 1 -923 924 -926 and 1 480 476 -927 or 1 480 476 -928 and 1 485 927 -929 or 1 926 928 -930 or 1 485 927 -931 and 1 488 930 -932 or 1 929 931 -933 or 1 488 930 -934 and 1 491 933 -935 or 1 932 934 -936 and 1 925 -935 -937 or 1 491 933 -938 and 1 936 937 -939 and 1 498 494 -940 or 1 498 494 -941 and 1 503 940 -942 or 1 939 941 -943 or 1 503 940 -944 and 1 506 943 -945 or 1 942 944 -946 or 1 506 943 -947 and 1 509 946 -948 or 1 945 947 -949 and 1 938 -948 -950 or 1 509 946 -951 and 1 949 950 -952 and 1 516 512 -953 or 1 516 512 -954 and 1 521 953 -955 or 1 952 954 -956 or 1 521 953 -957 and 1 524 956 -958 or 1 955 957 -959 or 1 524 956 -960 and 1 527 959 -961 or 1 958 960 -962 and 1 951 -961 -963 or 1 527 959 -964 and 1 962 963 -965 and 1 534 530 -966 or 1 534 530 -967 and 1 539 966 -968 or 1 965 967 -969 or 1 539 966 -970 and 1 542 969 -971 or 1 968 970 -972 or 1 542 969 -973 and 1 545 972 -974 or 1 971 973 -975 and 1 964 -974 -976 or 1 545 972 -977 and 1 975 976 -978 and 1 552 548 -979 or 1 552 548 -980 and 1 557 979 -981 or 1 978 980 -982 or 1 557 979 -983 and 1 560 982 -984 or 1 981 983 -985 or 1 560 982 -986 and 1 563 985 -987 or 1 984 986 -988 and 1 977 -987 -989 or 1 563 985 -990 and 1 988 989 -991 and 1 913 990 -992 and 1 991 -93 -993 next 1 93 -992 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-back-serstep.btor2 deleted file mode 100644 index ae957a3e43..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-back-serstep.btor2 +++ /dev/null @@ -1,1332 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_Slot_0 -7 init 2 6 5 -8 state 2 nextv_Slot_1 -9 init 2 8 5 -10 state 2 nextv_Slot_2 -11 init 2 10 5 -12 state 2 nextv_Slot_3 -13 init 2 12 5 -14 state 2 nextv_Slot_4 -15 init 2 14 5 -16 state 2 nextv_Slot_5 -17 init 2 16 5 -18 state 2 nextv_Slot_6 -19 init 2 18 5 -20 state 2 nextv_next -21 init 2 20 5 -22 state 2 nextv_my_place_P_0 -23 init 2 22 5 -24 state 2 nextv_my_place_P_1 -25 init 2 24 5 -26 state 2 nextv_my_place_P_2 -27 init 2 26 5 -28 state 2 nextv_my_place_P_3 -29 init 2 28 5 -30 state 2 nextv_my_place_P_4 -31 init 2 30 5 -32 state 2 nextv_my_place_P_5 -33 init 2 32 5 -34 state 2 nextv_my_place_P_6 -35 init 2 34 5 -36 zero 1 -37 state 1 nexta_NCS_P_0 -38 init 1 37 36 -39 state 1 nexta_p1_P_0 -40 init 1 39 36 -41 state 1 nexta_p2_P_0 -42 init 1 41 36 -43 state 1 nexta_p3_P_0 -44 init 1 43 36 -45 state 1 nexta_CS_P_0 -46 init 1 45 36 -47 state 1 nexta_NCS_P_1 -48 init 1 47 36 -49 state 1 nexta_p1_P_1 -50 init 1 49 36 -51 state 1 nexta_p2_P_1 -52 init 1 51 36 -53 state 1 nexta_p3_P_1 -54 init 1 53 36 -55 state 1 nexta_CS_P_1 -56 init 1 55 36 -57 state 1 nexta_NCS_P_2 -58 init 1 57 36 -59 state 1 nexta_p1_P_2 -60 init 1 59 36 -61 state 1 nexta_p2_P_2 -62 init 1 61 36 -63 state 1 nexta_p3_P_2 -64 init 1 63 36 -65 state 1 nexta_CS_P_2 -66 init 1 65 36 -67 state 1 nexta_NCS_P_3 -68 init 1 67 36 -69 state 1 nexta_p1_P_3 -70 init 1 69 36 -71 state 1 nexta_p2_P_3 -72 init 1 71 36 -73 state 1 nexta_p3_P_3 -74 init 1 73 36 -75 state 1 nexta_CS_P_3 -76 init 1 75 36 -77 state 1 nexta_NCS_P_4 -78 init 1 77 36 -79 state 1 nexta_p1_P_4 -80 init 1 79 36 -81 state 1 nexta_p2_P_4 -82 init 1 81 36 -83 state 1 nexta_p3_P_4 -84 init 1 83 36 -85 state 1 nexta_CS_P_4 -86 init 1 85 36 -87 state 1 nexta_NCS_P_5 -88 init 1 87 36 -89 state 1 nexta_p1_P_5 -90 init 1 89 36 -91 state 1 nexta_p2_P_5 -92 init 1 91 36 -93 state 1 nexta_p3_P_5 -94 init 1 93 36 -95 state 1 nexta_CS_P_5 -96 init 1 95 36 -97 state 1 nexta_NCS_P_6 -98 init 1 97 36 -99 state 1 nexta_p1_P_6 -100 init 1 99 36 -101 state 1 nexta_p2_P_6 -102 init 1 101 36 -103 state 1 nexta_p3_P_6 -104 init 1 103 36 -105 state 1 nexta_CS_P_6 -106 init 1 105 36 -107 state 1 dve_initialized -108 init 1 107 36 -109 state 1 dve_valid -110 init 1 109 36 -111 and 1 37 -39 -112 and 1 111 -41 -113 and 1 112 -43 -114 and 1 113 -45 -115 and 1 114 47 -116 and 1 115 -49 -117 and 1 116 -51 -118 and 1 117 -53 -119 and 1 118 -55 -120 and 1 119 57 -121 and 1 120 -59 -122 and 1 121 -61 -123 and 1 122 -63 -124 and 1 123 -65 -125 and 1 124 67 -126 and 1 125 -69 -127 and 1 126 -71 -128 and 1 127 -73 -129 and 1 128 -75 -130 and 1 129 77 -131 and 1 130 -79 -132 and 1 131 -81 -133 and 1 132 -83 -134 and 1 133 -85 -135 and 1 134 87 -136 and 1 135 -89 -137 and 1 136 -91 -138 and 1 137 -93 -139 and 1 138 -95 -140 and 1 139 97 -141 and 1 140 -99 -142 and 1 141 -101 -143 and 1 142 -103 -144 and 1 143 -105 -145 constd 2 1 -146 eq 1 145 6 -147 and 1 144 146 -148 constd 2 0 -149 eq 1 148 8 -150 and 1 147 149 -151 eq 1 148 10 -152 and 1 150 151 -153 eq 1 148 12 -154 and 1 152 153 -155 eq 1 148 14 -156 and 1 154 155 -157 eq 1 148 16 -158 and 1 156 157 -159 eq 1 148 18 -160 and 1 158 159 -161 eq 1 148 20 -162 and 1 160 161 -163 eq 1 148 22 -164 and 1 162 163 -165 eq 1 148 24 -166 and 1 164 165 -167 eq 1 148 26 -168 and 1 166 167 -169 eq 1 148 28 -170 and 1 168 169 -171 eq 1 148 30 -172 and 1 170 171 -173 eq 1 148 32 -174 and 1 172 173 -175 eq 1 148 34 -176 and 1 174 175 -177 and 1 109 176 -178 bad 177 -179 input 2 v_Slot_0 -180 next 2 6 179 -181 input 2 v_Slot_1 -182 next 2 8 181 -183 input 2 v_Slot_2 -184 next 2 10 183 -185 input 2 v_Slot_3 -186 next 2 12 185 -187 input 2 v_Slot_4 -188 next 2 14 187 -189 input 2 v_Slot_5 -190 next 2 16 189 -191 input 2 v_Slot_6 -192 next 2 18 191 -193 input 2 v_next -194 next 2 20 193 -195 input 2 v_my_place_P_0 -196 next 2 22 195 -197 input 2 v_my_place_P_1 -198 next 2 24 197 -199 input 2 v_my_place_P_2 -200 next 2 26 199 -201 input 2 v_my_place_P_3 -202 next 2 28 201 -203 input 2 v_my_place_P_4 -204 next 2 30 203 -205 input 2 v_my_place_P_5 -206 next 2 32 205 -207 input 2 v_my_place_P_6 -208 next 2 34 207 -209 input 1 a_NCS_P_0 -210 next 1 37 209 -211 input 1 a_p1_P_0 -212 next 1 39 211 -213 input 1 a_p2_P_0 -214 next 1 41 213 -215 input 1 a_p3_P_0 -216 next 1 43 215 -217 input 1 a_CS_P_0 -218 next 1 45 217 -219 input 1 a_NCS_P_1 -220 next 1 47 219 -221 input 1 a_p1_P_1 -222 next 1 49 221 -223 input 1 a_p2_P_1 -224 next 1 51 223 -225 input 1 a_p3_P_1 -226 next 1 53 225 -227 input 1 a_CS_P_1 -228 next 1 55 227 -229 input 1 a_NCS_P_2 -230 next 1 57 229 -231 input 1 a_p1_P_2 -232 next 1 59 231 -233 input 1 a_p2_P_2 -234 next 1 61 233 -235 input 1 a_p3_P_2 -236 next 1 63 235 -237 input 1 a_CS_P_2 -238 next 1 65 237 -239 input 1 a_NCS_P_3 -240 next 1 67 239 -241 input 1 a_p1_P_3 -242 next 1 69 241 -243 input 1 a_p2_P_3 -244 next 1 71 243 -245 input 1 a_p3_P_3 -246 next 1 73 245 -247 input 1 a_CS_P_3 -248 next 1 75 247 -249 input 1 a_NCS_P_4 -250 next 1 77 249 -251 input 1 a_p1_P_4 -252 next 1 79 251 -253 input 1 a_p2_P_4 -254 next 1 81 253 -255 input 1 a_p3_P_4 -256 next 1 83 255 -257 input 1 a_CS_P_4 -258 next 1 85 257 -259 input 1 a_NCS_P_5 -260 next 1 87 259 -261 input 1 a_p1_P_5 -262 next 1 89 261 -263 input 1 a_p2_P_5 -264 next 1 91 263 -265 input 1 a_p3_P_5 -266 next 1 93 265 -267 input 1 a_CS_P_5 -268 next 1 95 267 -269 input 1 a_NCS_P_6 -270 next 1 97 269 -271 input 1 a_p1_P_6 -272 next 1 99 271 -273 input 1 a_p2_P_6 -274 next 1 101 273 -275 input 1 a_p3_P_6 -276 next 1 103 275 -277 input 1 a_CS_P_6 -278 next 1 105 277 -279 const 1 1 -280 next 1 107 279 -281 input 1 f00 -282 or 1 209 -281 -283 input 1 f01 -284 or 1 211 281 -285 constd 2 6 -286 ite 2 281 193 195 -287 eq 1 285 286 -288 and 1 284 287 -289 or 1 -283 288 -290 and 1 282 289 -291 input 1 f02 -292 and 1 284 -283 -293 and 1 -287 292 -294 or 1 -291 293 -295 and 1 290 294 -296 input 1 f03 -297 or 1 213 283 -298 or 1 297 291 -299 constd 3 0 -300 concat 4 299 286 -301 constd 4 7 -302 srem 4 300 301 -303 slice 2 302 7 0 -304 ite 2 291 303 286 -305 eq 1 148 304 -306 eq 1 145 304 -307 constd 2 2 -308 eq 1 307 304 -309 constd 2 3 -310 eq 1 309 304 -311 constd 2 4 -312 eq 1 311 304 -313 constd 2 5 -314 eq 1 313 304 -315 ite 2 314 189 191 -316 ite 2 312 187 315 -317 ite 2 310 185 316 -318 ite 2 308 183 317 -319 ite 2 306 181 318 -320 ite 2 305 179 319 -321 eq 1 145 320 -322 and 1 298 321 -323 or 1 -296 322 -324 and 1 295 323 -325 or 1 215 296 -326 input 1 f04 -327 or 1 325 -326 -328 and 1 324 327 -329 or 1 217 326 -330 input 1 f05 -331 or 1 329 -330 -332 and 1 328 331 -333 input 1 f06 -334 or 1 219 -333 -335 and 1 332 334 -336 input 1 f07 -337 or 1 221 333 -338 constd 4 1 -339 concat 4 299 193 -340 add 4 338 339 -341 slice 2 340 7 0 -342 ite 2 281 341 193 -343 concat 4 299 342 -344 sub 4 343 301 -345 slice 2 344 7 0 -346 ite 2 283 345 342 -347 ite 2 333 346 197 -348 eq 1 285 347 -349 and 1 337 348 -350 or 1 -336 349 -351 and 1 335 350 -352 input 1 f08 -353 and 1 337 -336 -354 and 1 -348 353 -355 or 1 -352 354 -356 and 1 351 355 -357 input 1 f09 -358 or 1 223 336 -359 or 1 358 352 -360 concat 4 299 347 -361 srem 4 360 301 -362 slice 2 361 7 0 -363 ite 2 352 362 347 -364 eq 1 148 363 -365 constd 4 0 -366 concat 4 299 304 -367 add 4 338 366 -368 srem 4 367 301 -369 eq 1 365 368 -370 and 1 330 369 -371 and 1 305 326 -372 ite 2 371 148 179 -373 ite 2 370 145 372 -374 eq 1 145 363 -375 eq 1 338 368 -376 and 1 330 375 -377 and 1 306 326 -378 ite 2 377 148 181 -379 ite 2 376 145 378 -380 eq 1 307 363 -381 constd 4 2 -382 eq 1 381 368 -383 and 1 330 382 -384 and 1 308 326 -385 ite 2 384 148 183 -386 ite 2 383 145 385 -387 eq 1 309 363 -388 constd 4 3 -389 eq 1 388 368 -390 and 1 330 389 -391 and 1 310 326 -392 ite 2 391 148 185 -393 ite 2 390 145 392 -394 eq 1 311 363 -395 constd 4 4 -396 eq 1 395 368 -397 and 1 330 396 -398 and 1 312 326 -399 ite 2 398 148 187 -400 ite 2 397 145 399 -401 eq 1 313 363 -402 constd 4 5 -403 eq 1 402 368 -404 and 1 330 403 -405 and 1 314 326 -406 ite 2 405 148 189 -407 ite 2 404 145 406 -408 constd 4 6 -409 eq 1 408 368 -410 and 1 330 409 -411 eq 1 285 304 -412 and 1 411 326 -413 ite 2 412 148 191 -414 ite 2 410 145 413 -415 ite 2 401 407 414 -416 ite 2 394 400 415 -417 ite 2 387 393 416 -418 ite 2 380 386 417 -419 ite 2 374 379 418 -420 ite 2 364 373 419 -421 eq 1 145 420 -422 and 1 359 421 -423 or 1 -357 422 -424 and 1 356 423 -425 or 1 225 357 -426 input 1 f10 -427 or 1 425 -426 -428 and 1 424 427 -429 or 1 227 426 -430 input 1 f11 -431 or 1 429 -430 -432 and 1 428 431 -433 input 1 f12 -434 or 1 229 -433 -435 and 1 432 434 -436 input 1 f13 -437 or 1 231 433 -438 concat 4 299 346 -439 add 4 338 438 -440 slice 2 439 7 0 -441 ite 2 333 440 346 -442 concat 4 299 441 -443 sub 4 442 301 -444 slice 2 443 7 0 -445 ite 2 336 444 441 -446 ite 2 433 445 199 -447 eq 1 285 446 -448 and 1 437 447 -449 or 1 -436 448 -450 and 1 435 449 -451 input 1 f14 -452 and 1 437 -436 -453 and 1 -447 452 -454 or 1 -451 453 -455 and 1 450 454 -456 input 1 f15 -457 or 1 233 436 -458 or 1 457 451 -459 concat 4 299 446 -460 srem 4 459 301 -461 slice 2 460 7 0 -462 ite 2 451 461 446 -463 eq 1 148 462 -464 concat 4 299 363 -465 add 4 338 464 -466 srem 4 465 301 -467 eq 1 365 466 -468 and 1 430 467 -469 and 1 364 426 -470 ite 2 469 148 373 -471 ite 2 468 145 470 -472 eq 1 145 462 -473 eq 1 338 466 -474 and 1 430 473 -475 and 1 374 426 -476 ite 2 475 148 379 -477 ite 2 474 145 476 -478 eq 1 307 462 -479 eq 1 381 466 -480 and 1 430 479 -481 and 1 380 426 -482 ite 2 481 148 386 -483 ite 2 480 145 482 -484 eq 1 309 462 -485 eq 1 388 466 -486 and 1 430 485 -487 and 1 387 426 -488 ite 2 487 148 393 -489 ite 2 486 145 488 -490 eq 1 311 462 -491 eq 1 395 466 -492 and 1 430 491 -493 and 1 394 426 -494 ite 2 493 148 400 -495 ite 2 492 145 494 -496 eq 1 313 462 -497 eq 1 402 466 -498 and 1 430 497 -499 and 1 401 426 -500 ite 2 499 148 407 -501 ite 2 498 145 500 -502 eq 1 408 466 -503 and 1 430 502 -504 eq 1 285 363 -505 and 1 504 426 -506 ite 2 505 148 414 -507 ite 2 503 145 506 -508 ite 2 496 501 507 -509 ite 2 490 495 508 -510 ite 2 484 489 509 -511 ite 2 478 483 510 -512 ite 2 472 477 511 -513 ite 2 463 471 512 -514 eq 1 145 513 -515 and 1 458 514 -516 or 1 -456 515 -517 and 1 455 516 -518 or 1 235 456 -519 input 1 f16 -520 or 1 518 -519 -521 and 1 517 520 -522 or 1 237 519 -523 input 1 f17 -524 or 1 522 -523 -525 and 1 521 524 -526 input 1 f18 -527 or 1 239 -526 -528 and 1 525 527 -529 input 1 f19 -530 or 1 241 526 -531 concat 4 299 445 -532 add 4 338 531 -533 slice 2 532 7 0 -534 ite 2 433 533 445 -535 concat 4 299 534 -536 sub 4 535 301 -537 slice 2 536 7 0 -538 ite 2 436 537 534 -539 ite 2 526 538 201 -540 eq 1 285 539 -541 and 1 530 540 -542 or 1 -529 541 -543 and 1 528 542 -544 input 1 f20 -545 and 1 530 -529 -546 and 1 -540 545 -547 or 1 -544 546 -548 and 1 543 547 -549 input 1 f21 -550 or 1 243 529 -551 or 1 550 544 -552 concat 4 299 539 -553 srem 4 552 301 -554 slice 2 553 7 0 -555 ite 2 544 554 539 -556 eq 1 148 555 -557 concat 4 299 462 -558 add 4 338 557 -559 srem 4 558 301 -560 eq 1 365 559 -561 and 1 523 560 -562 and 1 463 519 -563 ite 2 562 148 471 -564 ite 2 561 145 563 -565 eq 1 145 555 -566 eq 1 338 559 -567 and 1 523 566 -568 and 1 472 519 -569 ite 2 568 148 477 -570 ite 2 567 145 569 -571 eq 1 307 555 -572 eq 1 381 559 -573 and 1 523 572 -574 and 1 478 519 -575 ite 2 574 148 483 -576 ite 2 573 145 575 -577 eq 1 309 555 -578 eq 1 388 559 -579 and 1 523 578 -580 and 1 484 519 -581 ite 2 580 148 489 -582 ite 2 579 145 581 -583 eq 1 311 555 -584 eq 1 395 559 -585 and 1 523 584 -586 and 1 490 519 -587 ite 2 586 148 495 -588 ite 2 585 145 587 -589 eq 1 313 555 -590 eq 1 402 559 -591 and 1 523 590 -592 and 1 496 519 -593 ite 2 592 148 501 -594 ite 2 591 145 593 -595 eq 1 408 559 -596 and 1 523 595 -597 eq 1 285 462 -598 and 1 597 519 -599 ite 2 598 148 507 -600 ite 2 596 145 599 -601 ite 2 589 594 600 -602 ite 2 583 588 601 -603 ite 2 577 582 602 -604 ite 2 571 576 603 -605 ite 2 565 570 604 -606 ite 2 556 564 605 -607 eq 1 145 606 -608 and 1 551 607 -609 or 1 -549 608 -610 and 1 548 609 -611 or 1 245 549 -612 input 1 f22 -613 or 1 611 -612 -614 and 1 610 613 -615 or 1 247 612 -616 input 1 f23 -617 or 1 615 -616 -618 and 1 614 617 -619 input 1 f24 -620 or 1 249 -619 -621 and 1 618 620 -622 input 1 f25 -623 or 1 251 619 -624 concat 4 299 538 -625 add 4 338 624 -626 slice 2 625 7 0 -627 ite 2 526 626 538 -628 concat 4 299 627 -629 sub 4 628 301 -630 slice 2 629 7 0 -631 ite 2 529 630 627 -632 ite 2 619 631 203 -633 eq 1 285 632 -634 and 1 623 633 -635 or 1 -622 634 -636 and 1 621 635 -637 input 1 f26 -638 and 1 623 -622 -639 and 1 -633 638 -640 or 1 -637 639 -641 and 1 636 640 -642 input 1 f27 -643 or 1 253 622 -644 or 1 643 637 -645 concat 4 299 632 -646 srem 4 645 301 -647 slice 2 646 7 0 -648 ite 2 637 647 632 -649 eq 1 148 648 -650 concat 4 299 555 -651 add 4 338 650 -652 srem 4 651 301 -653 eq 1 365 652 -654 and 1 616 653 -655 and 1 556 612 -656 ite 2 655 148 564 -657 ite 2 654 145 656 -658 eq 1 145 648 -659 eq 1 338 652 -660 and 1 616 659 -661 and 1 565 612 -662 ite 2 661 148 570 -663 ite 2 660 145 662 -664 eq 1 307 648 -665 eq 1 381 652 -666 and 1 616 665 -667 and 1 571 612 -668 ite 2 667 148 576 -669 ite 2 666 145 668 -670 eq 1 309 648 -671 eq 1 388 652 -672 and 1 616 671 -673 and 1 577 612 -674 ite 2 673 148 582 -675 ite 2 672 145 674 -676 eq 1 311 648 -677 eq 1 395 652 -678 and 1 616 677 -679 and 1 583 612 -680 ite 2 679 148 588 -681 ite 2 678 145 680 -682 eq 1 313 648 -683 eq 1 402 652 -684 and 1 616 683 -685 and 1 589 612 -686 ite 2 685 148 594 -687 ite 2 684 145 686 -688 eq 1 408 652 -689 and 1 616 688 -690 eq 1 285 555 -691 and 1 690 612 -692 ite 2 691 148 600 -693 ite 2 689 145 692 -694 ite 2 682 687 693 -695 ite 2 676 681 694 -696 ite 2 670 675 695 -697 ite 2 664 669 696 -698 ite 2 658 663 697 -699 ite 2 649 657 698 -700 eq 1 145 699 -701 and 1 644 700 -702 or 1 -642 701 -703 and 1 641 702 -704 or 1 255 642 -705 input 1 f28 -706 or 1 704 -705 -707 and 1 703 706 -708 or 1 257 705 -709 input 1 f29 -710 or 1 708 -709 -711 and 1 707 710 -712 input 1 f30 -713 or 1 259 -712 -714 and 1 711 713 -715 input 1 f31 -716 or 1 261 712 -717 concat 4 299 631 -718 add 4 338 717 -719 slice 2 718 7 0 -720 ite 2 619 719 631 -721 concat 4 299 720 -722 sub 4 721 301 -723 slice 2 722 7 0 -724 ite 2 622 723 720 -725 ite 2 712 724 205 -726 eq 1 285 725 -727 and 1 716 726 -728 or 1 -715 727 -729 and 1 714 728 -730 input 1 f32 -731 and 1 716 -715 -732 and 1 -726 731 -733 or 1 -730 732 -734 and 1 729 733 -735 input 1 f33 -736 or 1 263 715 -737 or 1 736 730 -738 concat 4 299 725 -739 srem 4 738 301 -740 slice 2 739 7 0 -741 ite 2 730 740 725 -742 eq 1 148 741 -743 concat 4 299 648 -744 add 4 338 743 -745 srem 4 744 301 -746 eq 1 365 745 -747 and 1 709 746 -748 and 1 649 705 -749 ite 2 748 148 657 -750 ite 2 747 145 749 -751 eq 1 145 741 -752 eq 1 338 745 -753 and 1 709 752 -754 and 1 658 705 -755 ite 2 754 148 663 -756 ite 2 753 145 755 -757 eq 1 307 741 -758 eq 1 381 745 -759 and 1 709 758 -760 and 1 664 705 -761 ite 2 760 148 669 -762 ite 2 759 145 761 -763 eq 1 309 741 -764 eq 1 388 745 -765 and 1 709 764 -766 and 1 670 705 -767 ite 2 766 148 675 -768 ite 2 765 145 767 -769 eq 1 311 741 -770 eq 1 395 745 -771 and 1 709 770 -772 and 1 676 705 -773 ite 2 772 148 681 -774 ite 2 771 145 773 -775 eq 1 313 741 -776 eq 1 402 745 -777 and 1 709 776 -778 and 1 682 705 -779 ite 2 778 148 687 -780 ite 2 777 145 779 -781 eq 1 408 745 -782 and 1 709 781 -783 eq 1 285 648 -784 and 1 783 705 -785 ite 2 784 148 693 -786 ite 2 782 145 785 -787 ite 2 775 780 786 -788 ite 2 769 774 787 -789 ite 2 763 768 788 -790 ite 2 757 762 789 -791 ite 2 751 756 790 -792 ite 2 742 750 791 -793 eq 1 145 792 -794 and 1 737 793 -795 or 1 -735 794 -796 and 1 734 795 -797 or 1 265 735 -798 input 1 f34 -799 or 1 797 -798 -800 and 1 796 799 -801 or 1 267 798 -802 input 1 f35 -803 or 1 801 -802 -804 and 1 800 803 -805 input 1 f36 -806 or 1 269 -805 -807 and 1 804 806 -808 input 1 f37 -809 or 1 271 805 -810 concat 4 299 724 -811 add 4 338 810 -812 slice 2 811 7 0 -813 ite 2 712 812 724 -814 concat 4 299 813 -815 sub 4 814 301 -816 slice 2 815 7 0 -817 ite 2 715 816 813 -818 ite 2 805 817 207 -819 eq 1 285 818 -820 and 1 809 819 -821 or 1 -808 820 -822 and 1 807 821 -823 input 1 f38 -824 and 1 809 -808 -825 and 1 -819 824 -826 or 1 -823 825 -827 and 1 822 826 -828 input 1 f39 -829 or 1 273 808 -830 or 1 829 823 -831 concat 4 299 818 -832 srem 4 831 301 -833 slice 2 832 7 0 -834 ite 2 823 833 818 -835 eq 1 148 834 -836 concat 4 299 741 -837 add 4 338 836 -838 srem 4 837 301 -839 eq 1 365 838 -840 and 1 802 839 -841 and 1 742 798 -842 ite 2 841 148 750 -843 ite 2 840 145 842 -844 eq 1 145 834 -845 eq 1 338 838 -846 and 1 802 845 -847 and 1 751 798 -848 ite 2 847 148 756 -849 ite 2 846 145 848 -850 eq 1 307 834 -851 eq 1 381 838 -852 and 1 802 851 -853 and 1 757 798 -854 ite 2 853 148 762 -855 ite 2 852 145 854 -856 eq 1 309 834 -857 eq 1 388 838 -858 and 1 802 857 -859 and 1 763 798 -860 ite 2 859 148 768 -861 ite 2 858 145 860 -862 eq 1 311 834 -863 eq 1 395 838 -864 and 1 802 863 -865 and 1 769 798 -866 ite 2 865 148 774 -867 ite 2 864 145 866 -868 eq 1 313 834 -869 eq 1 402 838 -870 and 1 802 869 -871 and 1 775 798 -872 ite 2 871 148 780 -873 ite 2 870 145 872 -874 eq 1 408 838 -875 and 1 802 874 -876 eq 1 285 741 -877 and 1 876 798 -878 ite 2 877 148 786 -879 ite 2 875 145 878 -880 ite 2 868 873 879 -881 ite 2 862 867 880 -882 ite 2 856 861 881 -883 ite 2 850 855 882 -884 ite 2 844 849 883 -885 ite 2 835 843 884 -886 eq 1 145 885 -887 and 1 830 886 -888 or 1 -828 887 -889 and 1 827 888 -890 or 1 275 828 -891 input 1 f40 -892 or 1 890 -891 -893 and 1 889 892 -894 or 1 277 891 -895 input 1 f41 -896 or 1 894 -895 -897 and 1 893 896 -898 or 1 281 283 -899 or 1 291 898 -900 or 1 296 899 -901 or 1 326 900 -902 or 1 330 901 -903 or 1 333 902 -904 or 1 336 903 -905 or 1 352 904 -906 or 1 357 905 -907 or 1 426 906 -908 or 1 430 907 -909 or 1 433 908 -910 or 1 436 909 -911 or 1 451 910 -912 or 1 456 911 -913 or 1 519 912 -914 or 1 523 913 -915 or 1 526 914 -916 or 1 529 915 -917 or 1 544 916 -918 or 1 549 917 -919 or 1 612 918 -920 or 1 616 919 -921 or 1 619 920 -922 or 1 622 921 -923 or 1 637 922 -924 or 1 642 923 -925 or 1 705 924 -926 or 1 709 925 -927 or 1 712 926 -928 or 1 715 927 -929 or 1 730 928 -930 or 1 735 929 -931 or 1 798 930 -932 or 1 802 931 -933 or 1 805 932 -934 or 1 808 933 -935 or 1 823 934 -936 or 1 828 935 -937 or 1 891 936 -938 or 1 895 937 -939 and 1 897 938 -940 and 1 209 211 -941 or 1 209 211 -942 and 1 213 941 -943 or 1 940 942 -944 or 1 213 941 -945 and 1 215 944 -946 or 1 943 945 -947 or 1 215 944 -948 and 1 217 947 -949 or 1 946 948 -950 or 1 217 947 -951 and 1 -949 950 -952 and 1 219 221 -953 or 1 219 221 -954 and 1 223 953 -955 or 1 952 954 -956 or 1 223 953 -957 and 1 225 956 -958 or 1 955 957 -959 or 1 225 956 -960 and 1 227 959 -961 or 1 958 960 -962 and 1 951 -961 -963 or 1 227 959 -964 and 1 962 963 -965 and 1 229 231 -966 or 1 229 231 -967 and 1 233 966 -968 or 1 965 967 -969 or 1 233 966 -970 and 1 235 969 -971 or 1 968 970 -972 or 1 235 969 -973 and 1 237 972 -974 or 1 971 973 -975 and 1 964 -974 -976 or 1 237 972 -977 and 1 975 976 -978 and 1 239 241 -979 or 1 239 241 -980 and 1 243 979 -981 or 1 978 980 -982 or 1 243 979 -983 and 1 245 982 -984 or 1 981 983 -985 or 1 245 982 -986 and 1 247 985 -987 or 1 984 986 -988 and 1 977 -987 -989 or 1 247 985 -990 and 1 988 989 -991 and 1 249 251 -992 or 1 249 251 -993 and 1 253 992 -994 or 1 991 993 -995 or 1 253 992 -996 and 1 255 995 -997 or 1 994 996 -998 or 1 255 995 -999 and 1 257 998 -1000 or 1 997 999 -1001 and 1 990 -1000 -1002 or 1 257 998 -1003 and 1 1001 1002 -1004 and 1 259 261 -1005 or 1 259 261 -1006 and 1 263 1005 -1007 or 1 1004 1006 -1008 or 1 263 1005 -1009 and 1 265 1008 -1010 or 1 1007 1009 -1011 or 1 265 1008 -1012 and 1 267 1011 -1013 or 1 1010 1012 -1014 and 1 1003 -1013 -1015 or 1 267 1011 -1016 and 1 1014 1015 -1017 and 1 269 271 -1018 or 1 269 271 -1019 and 1 273 1018 -1020 or 1 1017 1019 -1021 or 1 273 1018 -1022 and 1 275 1021 -1023 or 1 1020 1022 -1024 or 1 275 1021 -1025 and 1 277 1024 -1026 or 1 1023 1025 -1027 and 1 1016 -1026 -1028 or 1 277 1024 -1029 and 1 1027 1028 -1030 and 1 939 1029 -1031 and 1 292 -291 -1032 and 1 209 -281 -1033 or 1 1032 330 -1034 and 1 1031 1033 -1035 and 1 298 -296 -1036 or 1 1031 1033 -1037 and 1 1035 1036 -1038 or 1 1034 1037 -1039 and 1 325 -326 -1040 or 1 1035 1036 -1041 and 1 1039 1040 -1042 or 1 1038 1041 -1043 and 1 329 -330 -1044 or 1 1039 1040 -1045 and 1 1043 1044 -1046 or 1 1042 1045 -1047 or 1 1043 1044 -1048 and 1 -1046 1047 -1049 and 1 353 -352 -1050 and 1 219 -333 -1051 or 1 1050 430 -1052 and 1 1049 1051 -1053 and 1 359 -357 -1054 or 1 1049 1051 -1055 and 1 1053 1054 -1056 or 1 1052 1055 -1057 and 1 425 -426 -1058 or 1 1053 1054 -1059 and 1 1057 1058 -1060 or 1 1056 1059 -1061 and 1 429 -430 -1062 or 1 1057 1058 -1063 and 1 1061 1062 -1064 or 1 1060 1063 -1065 and 1 1048 -1064 -1066 or 1 1061 1062 -1067 and 1 1065 1066 -1068 and 1 452 -451 -1069 and 1 229 -433 -1070 or 1 1069 523 -1071 and 1 1068 1070 -1072 and 1 458 -456 -1073 or 1 1068 1070 -1074 and 1 1072 1073 -1075 or 1 1071 1074 -1076 and 1 518 -519 -1077 or 1 1072 1073 -1078 and 1 1076 1077 -1079 or 1 1075 1078 -1080 and 1 522 -523 -1081 or 1 1076 1077 -1082 and 1 1080 1081 -1083 or 1 1079 1082 -1084 and 1 1067 -1083 -1085 or 1 1080 1081 -1086 and 1 1084 1085 -1087 and 1 545 -544 -1088 and 1 239 -526 -1089 or 1 1088 616 -1090 and 1 1087 1089 -1091 and 1 551 -549 -1092 or 1 1087 1089 -1093 and 1 1091 1092 -1094 or 1 1090 1093 -1095 and 1 611 -612 -1096 or 1 1091 1092 -1097 and 1 1095 1096 -1098 or 1 1094 1097 -1099 and 1 615 -616 -1100 or 1 1095 1096 -1101 and 1 1099 1100 -1102 or 1 1098 1101 -1103 and 1 1086 -1102 -1104 or 1 1099 1100 -1105 and 1 1103 1104 -1106 and 1 638 -637 -1107 and 1 249 -619 -1108 or 1 1107 709 -1109 and 1 1106 1108 -1110 and 1 644 -642 -1111 or 1 1106 1108 -1112 and 1 1110 1111 -1113 or 1 1109 1112 -1114 and 1 704 -705 -1115 or 1 1110 1111 -1116 and 1 1114 1115 -1117 or 1 1113 1116 -1118 and 1 708 -709 -1119 or 1 1114 1115 -1120 and 1 1118 1119 -1121 or 1 1117 1120 -1122 and 1 1105 -1121 -1123 or 1 1118 1119 -1124 and 1 1122 1123 -1125 and 1 731 -730 -1126 and 1 259 -712 -1127 or 1 1126 802 -1128 and 1 1125 1127 -1129 and 1 737 -735 -1130 or 1 1125 1127 -1131 and 1 1129 1130 -1132 or 1 1128 1131 -1133 and 1 797 -798 -1134 or 1 1129 1130 -1135 and 1 1133 1134 -1136 or 1 1132 1135 -1137 and 1 801 -802 -1138 or 1 1133 1134 -1139 and 1 1137 1138 -1140 or 1 1136 1139 -1141 and 1 1124 -1140 -1142 or 1 1137 1138 -1143 and 1 1141 1142 -1144 and 1 824 -823 -1145 and 1 269 -805 -1146 or 1 1145 895 -1147 and 1 1144 1146 -1148 and 1 830 -828 -1149 or 1 1144 1146 -1150 and 1 1148 1149 -1151 or 1 1147 1150 -1152 and 1 890 -891 -1153 or 1 1148 1149 -1154 and 1 1152 1153 -1155 or 1 1151 1154 -1156 and 1 894 -895 -1157 or 1 1152 1153 -1158 and 1 1156 1157 -1159 or 1 1155 1158 -1160 and 1 1143 -1159 -1161 or 1 1156 1157 -1162 and 1 1160 1161 -1163 and 1 1030 1162 -1164 concat 4 299 834 -1165 add 4 338 1164 -1166 srem 4 1165 301 -1167 eq 1 365 1166 -1168 and 1 895 1167 -1169 and 1 835 891 -1170 ite 2 1169 148 843 -1171 ite 2 1168 145 1170 -1172 eq 1 1171 6 -1173 and 1 1163 1172 -1174 eq 1 338 1166 -1175 and 1 895 1174 -1176 and 1 844 891 -1177 ite 2 1176 148 849 -1178 ite 2 1175 145 1177 -1179 eq 1 1178 8 -1180 and 1 1173 1179 -1181 eq 1 381 1166 -1182 and 1 895 1181 -1183 and 1 850 891 -1184 ite 2 1183 148 855 -1185 ite 2 1182 145 1184 -1186 eq 1 1185 10 -1187 and 1 1180 1186 -1188 eq 1 388 1166 -1189 and 1 895 1188 -1190 and 1 856 891 -1191 ite 2 1190 148 861 -1192 ite 2 1189 145 1191 -1193 eq 1 1192 12 -1194 and 1 1187 1193 -1195 eq 1 395 1166 -1196 and 1 895 1195 -1197 and 1 862 891 -1198 ite 2 1197 148 867 -1199 ite 2 1196 145 1198 -1200 eq 1 1199 14 -1201 and 1 1194 1200 -1202 eq 1 402 1166 -1203 and 1 895 1202 -1204 and 1 868 891 -1205 ite 2 1204 148 873 -1206 ite 2 1203 145 1205 -1207 eq 1 1206 16 -1208 and 1 1201 1207 -1209 eq 1 408 1166 -1210 and 1 895 1209 -1211 eq 1 285 834 -1212 and 1 1211 891 -1213 ite 2 1212 148 879 -1214 ite 2 1210 145 1213 -1215 eq 1 1214 18 -1216 and 1 1208 1215 -1217 concat 4 299 817 -1218 add 4 338 1217 -1219 slice 2 1218 7 0 -1220 ite 2 805 1219 817 -1221 concat 4 299 1220 -1222 sub 4 1221 301 -1223 slice 2 1222 7 0 -1224 ite 2 808 1223 1220 -1225 eq 1 1224 20 -1226 and 1 1216 1225 -1227 eq 1 304 22 -1228 and 1 1226 1227 -1229 eq 1 363 24 -1230 and 1 1228 1229 -1231 eq 1 462 26 -1232 and 1 1230 1231 -1233 eq 1 555 28 -1234 and 1 1232 1233 -1235 eq 1 648 30 -1236 and 1 1234 1235 -1237 eq 1 741 32 -1238 and 1 1236 1237 -1239 eq 1 834 34 -1240 and 1 1238 1239 -1241 eq 1 1033 37 -1242 and 1 1240 1241 -1243 eq 1 1031 39 -1244 and 1 1242 1243 -1245 eq 1 1035 41 -1246 and 1 1244 1245 -1247 eq 1 1039 43 -1248 and 1 1246 1247 -1249 eq 1 1043 45 -1250 and 1 1248 1249 -1251 eq 1 1051 47 -1252 and 1 1250 1251 -1253 eq 1 1049 49 -1254 and 1 1252 1253 -1255 eq 1 1053 51 -1256 and 1 1254 1255 -1257 eq 1 1057 53 -1258 and 1 1256 1257 -1259 eq 1 1061 55 -1260 and 1 1258 1259 -1261 eq 1 1070 57 -1262 and 1 1260 1261 -1263 eq 1 1068 59 -1264 and 1 1262 1263 -1265 eq 1 1072 61 -1266 and 1 1264 1265 -1267 eq 1 1076 63 -1268 and 1 1266 1267 -1269 eq 1 1080 65 -1270 and 1 1268 1269 -1271 eq 1 1089 67 -1272 and 1 1270 1271 -1273 eq 1 1087 69 -1274 and 1 1272 1273 -1275 eq 1 1091 71 -1276 and 1 1274 1275 -1277 eq 1 1095 73 -1278 and 1 1276 1277 -1279 eq 1 1099 75 -1280 and 1 1278 1279 -1281 eq 1 1108 77 -1282 and 1 1280 1281 -1283 eq 1 1106 79 -1284 and 1 1282 1283 -1285 eq 1 1110 81 -1286 and 1 1284 1285 -1287 eq 1 1114 83 -1288 and 1 1286 1287 -1289 eq 1 1118 85 -1290 and 1 1288 1289 -1291 eq 1 1127 87 -1292 and 1 1290 1291 -1293 eq 1 1125 89 -1294 and 1 1292 1293 -1295 eq 1 1129 91 -1296 and 1 1294 1295 -1297 eq 1 1133 93 -1298 and 1 1296 1297 -1299 eq 1 1137 95 -1300 and 1 1298 1299 -1301 eq 1 1146 97 -1302 and 1 1300 1301 -1303 eq 1 1144 99 -1304 and 1 1302 1303 -1305 eq 1 1148 101 -1306 and 1 1304 1305 -1307 eq 1 1152 103 -1308 and 1 1306 1307 -1309 eq 1 1156 105 -1310 and 1 1308 1309 -1311 and 1 1310 109 -1312 ite 4 217 338 365 -1313 ite 4 227 338 365 -1314 add 4 1312 1313 -1315 ite 4 237 338 365 -1316 add 4 1314 1315 -1317 ite 4 247 338 365 -1318 add 4 1316 1317 -1319 ite 4 257 338 365 -1320 add 4 1318 1319 -1321 ite 4 267 338 365 -1322 add 4 1320 1321 -1323 ite 4 277 338 365 -1324 add 4 1322 1323 -1325 ulte 1 1324 338 -1326 ite 1 107 1311 -1325 -1327 next 1 109 1326 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-func-interl.btor2 deleted file mode 100644 index bb67106c08..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.8.prop1-func-interl.btor2 +++ /dev/null @@ -1,1146 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_Slot_0 -7 init 2 6 5 -8 state 2 v_Slot_1 -9 init 2 8 5 -10 state 2 v_Slot_2 -11 init 2 10 5 -12 state 2 v_Slot_3 -13 init 2 12 5 -14 state 2 v_Slot_4 -15 init 2 14 5 -16 state 2 v_Slot_5 -17 init 2 16 5 -18 state 2 v_Slot_6 -19 init 2 18 5 -20 state 2 v_next -21 init 2 20 5 -22 state 2 v_my_place_P_0 -23 init 2 22 5 -24 state 2 v_my_place_P_1 -25 init 2 24 5 -26 state 2 v_my_place_P_2 -27 init 2 26 5 -28 state 2 v_my_place_P_3 -29 init 2 28 5 -30 state 2 v_my_place_P_4 -31 init 2 30 5 -32 state 2 v_my_place_P_5 -33 init 2 32 5 -34 state 2 v_my_place_P_6 -35 init 2 34 5 -36 zero 1 -37 state 1 a_NCS_P_0 -38 init 1 37 36 -39 state 1 a_p1_P_0 -40 init 1 39 36 -41 state 1 a_p2_P_0 -42 init 1 41 36 -43 state 1 a_p3_P_0 -44 init 1 43 36 -45 state 1 a_CS_P_0 -46 init 1 45 36 -47 state 1 a_NCS_P_1 -48 init 1 47 36 -49 state 1 a_p1_P_1 -50 init 1 49 36 -51 state 1 a_p2_P_1 -52 init 1 51 36 -53 state 1 a_p3_P_1 -54 init 1 53 36 -55 state 1 a_CS_P_1 -56 init 1 55 36 -57 state 1 a_NCS_P_2 -58 init 1 57 36 -59 state 1 a_p1_P_2 -60 init 1 59 36 -61 state 1 a_p2_P_2 -62 init 1 61 36 -63 state 1 a_p3_P_2 -64 init 1 63 36 -65 state 1 a_CS_P_2 -66 init 1 65 36 -67 state 1 a_NCS_P_3 -68 init 1 67 36 -69 state 1 a_p1_P_3 -70 init 1 69 36 -71 state 1 a_p2_P_3 -72 init 1 71 36 -73 state 1 a_p3_P_3 -74 init 1 73 36 -75 state 1 a_CS_P_3 -76 init 1 75 36 -77 state 1 a_NCS_P_4 -78 init 1 77 36 -79 state 1 a_p1_P_4 -80 init 1 79 36 -81 state 1 a_p2_P_4 -82 init 1 81 36 -83 state 1 a_p3_P_4 -84 init 1 83 36 -85 state 1 a_CS_P_4 -86 init 1 85 36 -87 state 1 a_NCS_P_5 -88 init 1 87 36 -89 state 1 a_p1_P_5 -90 init 1 89 36 -91 state 1 a_p2_P_5 -92 init 1 91 36 -93 state 1 a_p3_P_5 -94 init 1 93 36 -95 state 1 a_CS_P_5 -96 init 1 95 36 -97 state 1 a_NCS_P_6 -98 init 1 97 36 -99 state 1 a_p1_P_6 -100 init 1 99 36 -101 state 1 a_p2_P_6 -102 init 1 101 36 -103 state 1 a_p3_P_6 -104 init 1 103 36 -105 state 1 a_CS_P_6 -106 init 1 105 36 -107 state 1 dve_invalid -108 init 1 107 36 -109 constd 4 1 -110 constd 4 0 -111 ite 4 45 109 110 -112 ite 4 55 109 110 -113 add 4 111 112 -114 ite 4 65 109 110 -115 add 4 113 114 -116 ite 4 75 109 110 -117 add 4 115 116 -118 ite 4 85 109 110 -119 add 4 117 118 -120 ite 4 95 109 110 -121 add 4 119 120 -122 ite 4 105 109 110 -123 add 4 121 122 -124 ulte 1 123 109 -125 and 1 -107 -124 -126 bad 125 -127 constd 2 1 -128 input 1 f41 -129 constd 3 0 -130 concat 4 129 34 -131 add 4 109 130 -132 constd 4 7 -133 srem 4 131 132 -134 eq 1 110 133 -135 and 1 128 134 -136 constd 2 0 -137 eq 1 136 34 -138 input 1 f40 -139 and 1 137 138 -140 input 1 f35 -141 concat 4 129 32 -142 add 4 109 141 -143 srem 4 142 132 -144 eq 1 110 143 -145 and 1 140 144 -146 eq 1 136 32 -147 input 1 f34 -148 and 1 146 147 -149 input 1 f29 -150 concat 4 129 30 -151 add 4 109 150 -152 srem 4 151 132 -153 eq 1 110 152 -154 and 1 149 153 -155 eq 1 136 30 -156 input 1 f28 -157 and 1 155 156 -158 input 1 f23 -159 concat 4 129 28 -160 add 4 109 159 -161 srem 4 160 132 -162 eq 1 110 161 -163 and 1 158 162 -164 eq 1 136 28 -165 input 1 f22 -166 and 1 164 165 -167 input 1 f17 -168 concat 4 129 26 -169 add 4 109 168 -170 srem 4 169 132 -171 eq 1 110 170 -172 and 1 167 171 -173 eq 1 136 26 -174 input 1 f16 -175 and 1 173 174 -176 input 1 f11 -177 concat 4 129 24 -178 add 4 109 177 -179 srem 4 178 132 -180 eq 1 110 179 -181 and 1 176 180 -182 eq 1 136 24 -183 input 1 f10 -184 and 1 182 183 -185 input 1 f05 -186 concat 4 129 22 -187 add 4 109 186 -188 srem 4 187 132 -189 eq 1 110 188 -190 and 1 185 189 -191 eq 1 136 22 -192 input 1 f04 -193 and 1 191 192 -194 xor 2 127 6 -195 ite 2 193 136 194 -196 ite 2 190 127 195 -197 ite 2 184 136 196 -198 ite 2 181 127 197 -199 ite 2 175 136 198 -200 ite 2 172 127 199 -201 ite 2 166 136 200 -202 ite 2 163 127 201 -203 ite 2 157 136 202 -204 ite 2 154 127 203 -205 ite 2 148 136 204 -206 ite 2 145 127 205 -207 ite 2 139 136 206 -208 ite 2 135 127 207 -209 xor 2 127 208 -210 next 2 6 209 -211 eq 1 109 133 -212 and 1 128 211 -213 eq 1 127 34 -214 and 1 213 138 -215 eq 1 109 143 -216 and 1 140 215 -217 eq 1 127 32 -218 and 1 217 147 -219 eq 1 109 152 -220 and 1 149 219 -221 eq 1 127 30 -222 and 1 221 156 -223 eq 1 109 161 -224 and 1 158 223 -225 eq 1 127 28 -226 and 1 225 165 -227 eq 1 109 170 -228 and 1 167 227 -229 eq 1 127 26 -230 and 1 229 174 -231 eq 1 109 179 -232 and 1 176 231 -233 eq 1 127 24 -234 and 1 233 183 -235 eq 1 109 188 -236 and 1 185 235 -237 eq 1 127 22 -238 and 1 237 192 -239 ite 2 238 136 8 -240 ite 2 236 127 239 -241 ite 2 234 136 240 -242 ite 2 232 127 241 -243 ite 2 230 136 242 -244 ite 2 228 127 243 -245 ite 2 226 136 244 -246 ite 2 224 127 245 -247 ite 2 222 136 246 -248 ite 2 220 127 247 -249 ite 2 218 136 248 -250 ite 2 216 127 249 -251 ite 2 214 136 250 -252 ite 2 212 127 251 -253 next 2 8 252 -254 constd 4 2 -255 eq 1 254 133 -256 and 1 128 255 -257 constd 2 2 -258 eq 1 257 34 -259 and 1 258 138 -260 eq 1 254 143 -261 and 1 140 260 -262 eq 1 257 32 -263 and 1 262 147 -264 eq 1 254 152 -265 and 1 149 264 -266 eq 1 257 30 -267 and 1 266 156 -268 eq 1 254 161 -269 and 1 158 268 -270 eq 1 257 28 -271 and 1 270 165 -272 eq 1 254 170 -273 and 1 167 272 -274 eq 1 257 26 -275 and 1 274 174 -276 eq 1 254 179 -277 and 1 176 276 -278 eq 1 257 24 -279 and 1 278 183 -280 eq 1 254 188 -281 and 1 185 280 -282 eq 1 257 22 -283 and 1 282 192 -284 ite 2 283 136 10 -285 ite 2 281 127 284 -286 ite 2 279 136 285 -287 ite 2 277 127 286 -288 ite 2 275 136 287 -289 ite 2 273 127 288 -290 ite 2 271 136 289 -291 ite 2 269 127 290 -292 ite 2 267 136 291 -293 ite 2 265 127 292 -294 ite 2 263 136 293 -295 ite 2 261 127 294 -296 ite 2 259 136 295 -297 ite 2 256 127 296 -298 next 2 10 297 -299 constd 4 3 -300 eq 1 299 133 -301 and 1 128 300 -302 constd 2 3 -303 eq 1 302 34 -304 and 1 303 138 -305 eq 1 299 143 -306 and 1 140 305 -307 eq 1 302 32 -308 and 1 307 147 -309 eq 1 299 152 -310 and 1 149 309 -311 eq 1 302 30 -312 and 1 311 156 -313 eq 1 299 161 -314 and 1 158 313 -315 eq 1 302 28 -316 and 1 315 165 -317 eq 1 299 170 -318 and 1 167 317 -319 eq 1 302 26 -320 and 1 319 174 -321 eq 1 299 179 -322 and 1 176 321 -323 eq 1 302 24 -324 and 1 323 183 -325 eq 1 299 188 -326 and 1 185 325 -327 eq 1 302 22 -328 and 1 327 192 -329 ite 2 328 136 12 -330 ite 2 326 127 329 -331 ite 2 324 136 330 -332 ite 2 322 127 331 -333 ite 2 320 136 332 -334 ite 2 318 127 333 -335 ite 2 316 136 334 -336 ite 2 314 127 335 -337 ite 2 312 136 336 -338 ite 2 310 127 337 -339 ite 2 308 136 338 -340 ite 2 306 127 339 -341 ite 2 304 136 340 -342 ite 2 301 127 341 -343 next 2 12 342 -344 constd 4 4 -345 eq 1 344 133 -346 and 1 128 345 -347 constd 2 4 -348 eq 1 347 34 -349 and 1 348 138 -350 eq 1 344 143 -351 and 1 140 350 -352 eq 1 347 32 -353 and 1 352 147 -354 eq 1 344 152 -355 and 1 149 354 -356 eq 1 347 30 -357 and 1 356 156 -358 eq 1 344 161 -359 and 1 158 358 -360 eq 1 347 28 -361 and 1 360 165 -362 eq 1 344 170 -363 and 1 167 362 -364 eq 1 347 26 -365 and 1 364 174 -366 eq 1 344 179 -367 and 1 176 366 -368 eq 1 347 24 -369 and 1 368 183 -370 eq 1 344 188 -371 and 1 185 370 -372 eq 1 347 22 -373 and 1 372 192 -374 ite 2 373 136 14 -375 ite 2 371 127 374 -376 ite 2 369 136 375 -377 ite 2 367 127 376 -378 ite 2 365 136 377 -379 ite 2 363 127 378 -380 ite 2 361 136 379 -381 ite 2 359 127 380 -382 ite 2 357 136 381 -383 ite 2 355 127 382 -384 ite 2 353 136 383 -385 ite 2 351 127 384 -386 ite 2 349 136 385 -387 ite 2 346 127 386 -388 next 2 14 387 -389 constd 4 5 -390 eq 1 389 133 -391 and 1 128 390 -392 constd 2 5 -393 eq 1 392 34 -394 and 1 393 138 -395 eq 1 389 143 -396 and 1 140 395 -397 eq 1 392 32 -398 and 1 397 147 -399 eq 1 389 152 -400 and 1 149 399 -401 eq 1 392 30 -402 and 1 401 156 -403 eq 1 389 161 -404 and 1 158 403 -405 eq 1 392 28 -406 and 1 405 165 -407 eq 1 389 170 -408 and 1 167 407 -409 eq 1 392 26 -410 and 1 409 174 -411 eq 1 389 179 -412 and 1 176 411 -413 eq 1 392 24 -414 and 1 413 183 -415 eq 1 389 188 -416 and 1 185 415 -417 eq 1 392 22 -418 and 1 417 192 -419 ite 2 418 136 16 -420 ite 2 416 127 419 -421 ite 2 414 136 420 -422 ite 2 412 127 421 -423 ite 2 410 136 422 -424 ite 2 408 127 423 -425 ite 2 406 136 424 -426 ite 2 404 127 425 -427 ite 2 402 136 426 -428 ite 2 400 127 427 -429 ite 2 398 136 428 -430 ite 2 396 127 429 -431 ite 2 394 136 430 -432 ite 2 391 127 431 -433 next 2 16 432 -434 constd 4 6 -435 eq 1 434 133 -436 and 1 128 435 -437 constd 2 6 -438 eq 1 437 34 -439 and 1 438 138 -440 eq 1 434 143 -441 and 1 140 440 -442 eq 1 437 32 -443 and 1 442 147 -444 eq 1 434 152 -445 and 1 149 444 -446 eq 1 437 30 -447 and 1 446 156 -448 eq 1 434 161 -449 and 1 158 448 -450 eq 1 437 28 -451 and 1 450 165 -452 eq 1 434 170 -453 and 1 167 452 -454 eq 1 437 26 -455 and 1 454 174 -456 eq 1 434 179 -457 and 1 176 456 -458 eq 1 437 24 -459 and 1 458 183 -460 eq 1 434 188 -461 and 1 185 460 -462 eq 1 437 22 -463 and 1 462 192 -464 ite 2 463 136 18 -465 ite 2 461 127 464 -466 ite 2 459 136 465 -467 ite 2 457 127 466 -468 ite 2 455 136 467 -469 ite 2 453 127 468 -470 ite 2 451 136 469 -471 ite 2 449 127 470 -472 ite 2 447 136 471 -473 ite 2 445 127 472 -474 ite 2 443 136 473 -475 ite 2 441 127 474 -476 ite 2 439 136 475 -477 ite 2 436 127 476 -478 next 2 18 477 -479 input 1 f37 -480 concat 4 129 20 -481 sub 4 480 132 -482 slice 2 481 7 0 -483 input 1 f36 -484 add 4 109 480 -485 slice 2 484 7 0 -486 input 1 f31 -487 input 1 f30 -488 input 1 f25 -489 input 1 f24 -490 input 1 f19 -491 input 1 f18 -492 input 1 f13 -493 input 1 f12 -494 input 1 f07 -495 input 1 f06 -496 input 1 f01 -497 input 1 f00 -498 ite 2 497 485 20 -499 ite 2 496 482 498 -500 ite 2 495 485 499 -501 ite 2 494 482 500 -502 ite 2 493 485 501 -503 ite 2 492 482 502 -504 ite 2 491 485 503 -505 ite 2 490 482 504 -506 ite 2 489 485 505 -507 ite 2 488 482 506 -508 ite 2 487 485 507 -509 ite 2 486 482 508 -510 ite 2 483 485 509 -511 ite 2 479 482 510 -512 next 2 20 511 -513 input 1 f02 -514 srem 4 186 132 -515 slice 2 514 7 0 -516 ite 2 497 20 22 -517 ite 2 513 515 516 -518 next 2 22 517 -519 input 1 f08 -520 srem 4 177 132 -521 slice 2 520 7 0 -522 ite 2 495 20 24 -523 ite 2 519 521 522 -524 next 2 24 523 -525 input 1 f14 -526 srem 4 168 132 -527 slice 2 526 7 0 -528 ite 2 493 20 26 -529 ite 2 525 527 528 -530 next 2 26 529 -531 input 1 f20 -532 srem 4 159 132 -533 slice 2 532 7 0 -534 ite 2 491 20 28 -535 ite 2 531 533 534 -536 next 2 28 535 -537 input 1 f26 -538 srem 4 150 132 -539 slice 2 538 7 0 -540 ite 2 489 20 30 -541 ite 2 537 539 540 -542 next 2 30 541 -543 input 1 f32 -544 srem 4 141 132 -545 slice 2 544 7 0 -546 ite 2 487 20 32 -547 ite 2 543 545 546 -548 next 2 32 547 -549 input 1 f38 -550 srem 4 130 132 -551 slice 2 550 7 0 -552 ite 2 483 20 34 -553 ite 2 549 551 552 -554 next 2 34 553 -555 and 1 -37 -497 -556 or 1 555 185 -557 next 1 37 -556 -558 or 1 39 497 -559 and 1 558 -496 -560 and 1 559 -513 -561 next 1 39 560 -562 or 1 41 496 -563 or 1 562 513 -564 input 1 f03 -565 and 1 563 -564 -566 next 1 41 565 -567 or 1 43 564 -568 and 1 567 -192 -569 next 1 43 568 -570 or 1 45 192 -571 and 1 570 -185 -572 next 1 45 571 -573 and 1 -47 -495 -574 or 1 573 176 -575 next 1 47 -574 -576 or 1 49 495 -577 and 1 576 -494 -578 and 1 577 -519 -579 next 1 49 578 -580 or 1 51 494 -581 or 1 580 519 -582 input 1 f09 -583 and 1 581 -582 -584 next 1 51 583 -585 or 1 53 582 -586 and 1 585 -183 -587 next 1 53 586 -588 or 1 55 183 -589 and 1 588 -176 -590 next 1 55 589 -591 and 1 -57 -493 -592 or 1 591 167 -593 next 1 57 -592 -594 or 1 59 493 -595 and 1 594 -492 -596 and 1 595 -525 -597 next 1 59 596 -598 or 1 61 492 -599 or 1 598 525 -600 input 1 f15 -601 and 1 599 -600 -602 next 1 61 601 -603 or 1 63 600 -604 and 1 603 -174 -605 next 1 63 604 -606 or 1 65 174 -607 and 1 606 -167 -608 next 1 65 607 -609 and 1 -67 -491 -610 or 1 609 158 -611 next 1 67 -610 -612 or 1 69 491 -613 and 1 612 -490 -614 and 1 613 -531 -615 next 1 69 614 -616 or 1 71 490 -617 or 1 616 531 -618 input 1 f21 -619 and 1 617 -618 -620 next 1 71 619 -621 or 1 73 618 -622 and 1 621 -165 -623 next 1 73 622 -624 or 1 75 165 -625 and 1 624 -158 -626 next 1 75 625 -627 and 1 -77 -489 -628 or 1 627 149 -629 next 1 77 -628 -630 or 1 79 489 -631 and 1 630 -488 -632 and 1 631 -537 -633 next 1 79 632 -634 or 1 81 488 -635 or 1 634 537 -636 input 1 f27 -637 and 1 635 -636 -638 next 1 81 637 -639 or 1 83 636 -640 and 1 639 -156 -641 next 1 83 640 -642 or 1 85 156 -643 and 1 642 -149 -644 next 1 85 643 -645 and 1 -87 -487 -646 or 1 645 140 -647 next 1 87 -646 -648 or 1 89 487 -649 and 1 648 -486 -650 and 1 649 -543 -651 next 1 89 650 -652 or 1 91 486 -653 or 1 652 543 -654 input 1 f33 -655 and 1 653 -654 -656 next 1 91 655 -657 or 1 93 654 -658 and 1 657 -147 -659 next 1 93 658 -660 or 1 95 147 -661 and 1 660 -140 -662 next 1 95 661 -663 and 1 -97 -483 -664 or 1 663 128 -665 next 1 97 -664 -666 or 1 99 483 -667 and 1 666 -479 -668 and 1 667 -549 -669 next 1 99 668 -670 or 1 101 479 -671 or 1 670 549 -672 input 1 f39 -673 and 1 671 -672 -674 next 1 101 673 -675 or 1 103 672 -676 and 1 675 -138 -677 next 1 103 676 -678 or 1 105 138 -679 and 1 678 -128 -680 next 1 105 679 -681 or 1 -37 -497 -682 and 1 39 462 -683 or 1 -496 682 -684 and 1 681 683 -685 and 1 39 -462 -686 or 1 -513 685 -687 and 1 684 686 -688 ite 2 417 16 18 -689 ite 2 372 14 688 -690 ite 2 327 12 689 -691 ite 2 282 10 690 -692 ite 2 237 8 691 -693 ite 2 191 194 692 -694 eq 1 127 693 -695 and 1 41 694 -696 or 1 -564 695 -697 and 1 687 696 -698 or 1 43 -192 -699 and 1 697 698 -700 or 1 45 -185 -701 and 1 699 700 -702 or 1 -47 -495 -703 and 1 701 702 -704 and 1 49 458 -705 or 1 -494 704 -706 and 1 703 705 -707 and 1 49 -458 -708 or 1 -519 707 -709 and 1 706 708 -710 ite 2 413 16 18 -711 ite 2 368 14 710 -712 ite 2 323 12 711 -713 ite 2 278 10 712 -714 ite 2 233 8 713 -715 ite 2 182 194 714 -716 eq 1 127 715 -717 and 1 51 716 -718 or 1 -582 717 -719 and 1 709 718 -720 or 1 53 -183 -721 and 1 719 720 -722 or 1 55 -176 -723 and 1 721 722 -724 or 1 -57 -493 -725 and 1 723 724 -726 and 1 59 454 -727 or 1 -492 726 -728 and 1 725 727 -729 and 1 59 -454 -730 or 1 -525 729 -731 and 1 728 730 -732 ite 2 409 16 18 -733 ite 2 364 14 732 -734 ite 2 319 12 733 -735 ite 2 274 10 734 -736 ite 2 229 8 735 -737 ite 2 173 194 736 -738 eq 1 127 737 -739 and 1 61 738 -740 or 1 -600 739 -741 and 1 731 740 -742 or 1 63 -174 -743 and 1 741 742 -744 or 1 65 -167 -745 and 1 743 744 -746 or 1 -67 -491 -747 and 1 745 746 -748 and 1 69 450 -749 or 1 -490 748 -750 and 1 747 749 -751 and 1 69 -450 -752 or 1 -531 751 -753 and 1 750 752 -754 ite 2 405 16 18 -755 ite 2 360 14 754 -756 ite 2 315 12 755 -757 ite 2 270 10 756 -758 ite 2 225 8 757 -759 ite 2 164 194 758 -760 eq 1 127 759 -761 and 1 71 760 -762 or 1 -618 761 -763 and 1 753 762 -764 or 1 73 -165 -765 and 1 763 764 -766 or 1 75 -158 -767 and 1 765 766 -768 or 1 -77 -489 -769 and 1 767 768 -770 and 1 79 446 -771 or 1 -488 770 -772 and 1 769 771 -773 and 1 79 -446 -774 or 1 -537 773 -775 and 1 772 774 -776 ite 2 401 16 18 -777 ite 2 356 14 776 -778 ite 2 311 12 777 -779 ite 2 266 10 778 -780 ite 2 221 8 779 -781 ite 2 155 194 780 -782 eq 1 127 781 -783 and 1 81 782 -784 or 1 -636 783 -785 and 1 775 784 -786 or 1 83 -156 -787 and 1 785 786 -788 or 1 85 -149 -789 and 1 787 788 -790 or 1 -87 -487 -791 and 1 789 790 -792 and 1 89 442 -793 or 1 -486 792 -794 and 1 791 793 -795 and 1 89 -442 -796 or 1 -543 795 -797 and 1 794 796 -798 ite 2 397 16 18 -799 ite 2 352 14 798 -800 ite 2 307 12 799 -801 ite 2 262 10 800 -802 ite 2 217 8 801 -803 ite 2 146 194 802 -804 eq 1 127 803 -805 and 1 91 804 -806 or 1 -654 805 -807 and 1 797 806 -808 or 1 93 -147 -809 and 1 807 808 -810 or 1 95 -140 -811 and 1 809 810 -812 or 1 -97 -483 -813 and 1 811 812 -814 and 1 99 438 -815 or 1 -479 814 -816 and 1 813 815 -817 and 1 99 -438 -818 or 1 -549 817 -819 and 1 816 818 -820 ite 2 393 16 18 -821 ite 2 348 14 820 -822 ite 2 303 12 821 -823 ite 2 258 10 822 -824 ite 2 213 8 823 -825 ite 2 137 194 824 -826 eq 1 127 825 -827 and 1 101 826 -828 or 1 -672 827 -829 and 1 819 828 -830 or 1 103 -138 -831 and 1 829 830 -832 or 1 105 -128 -833 and 1 831 832 -834 or 1 497 496 -835 or 1 513 834 -836 or 1 564 835 -837 or 1 192 836 -838 or 1 185 837 -839 or 1 495 838 -840 or 1 494 839 -841 or 1 519 840 -842 or 1 582 841 -843 or 1 183 842 -844 or 1 176 843 -845 or 1 493 844 -846 or 1 492 845 -847 or 1 525 846 -848 or 1 600 847 -849 or 1 174 848 -850 or 1 167 849 -851 or 1 491 850 -852 or 1 490 851 -853 or 1 531 852 -854 or 1 618 853 -855 or 1 165 854 -856 or 1 158 855 -857 or 1 489 856 -858 or 1 488 857 -859 or 1 537 858 -860 or 1 636 859 -861 or 1 156 860 -862 or 1 149 861 -863 or 1 487 862 -864 or 1 486 863 -865 or 1 543 864 -866 or 1 654 865 -867 or 1 147 866 -868 or 1 140 867 -869 or 1 483 868 -870 or 1 479 869 -871 or 1 549 870 -872 or 1 672 871 -873 or 1 138 872 -874 or 1 128 873 -875 and 1 833 874 -876 and 1 497 496 -877 and 1 513 834 -878 or 1 876 877 -879 and 1 564 835 -880 or 1 878 879 -881 and 1 192 836 -882 or 1 880 881 -883 and 1 185 837 -884 or 1 882 883 -885 and 1 495 838 -886 or 1 884 885 -887 and 1 494 839 -888 or 1 886 887 -889 and 1 519 840 -890 or 1 888 889 -891 and 1 582 841 -892 or 1 890 891 -893 and 1 183 842 -894 or 1 892 893 -895 and 1 176 843 -896 or 1 894 895 -897 and 1 493 844 -898 or 1 896 897 -899 and 1 492 845 -900 or 1 898 899 -901 and 1 525 846 -902 or 1 900 901 -903 and 1 600 847 -904 or 1 902 903 -905 and 1 174 848 -906 or 1 904 905 -907 and 1 167 849 -908 or 1 906 907 -909 and 1 491 850 -910 or 1 908 909 -911 and 1 490 851 -912 or 1 910 911 -913 and 1 531 852 -914 or 1 912 913 -915 and 1 618 853 -916 or 1 914 915 -917 and 1 165 854 -918 or 1 916 917 -919 and 1 158 855 -920 or 1 918 919 -921 and 1 489 856 -922 or 1 920 921 -923 and 1 488 857 -924 or 1 922 923 -925 and 1 537 858 -926 or 1 924 925 -927 and 1 636 859 -928 or 1 926 927 -929 and 1 156 860 -930 or 1 928 929 -931 and 1 149 861 -932 or 1 930 931 -933 and 1 487 862 -934 or 1 932 933 -935 and 1 486 863 -936 or 1 934 935 -937 and 1 543 864 -938 or 1 936 937 -939 and 1 654 865 -940 or 1 938 939 -941 and 1 147 866 -942 or 1 940 941 -943 and 1 140 867 -944 or 1 942 943 -945 and 1 483 868 -946 or 1 944 945 -947 and 1 479 869 -948 or 1 946 947 -949 and 1 549 870 -950 or 1 948 949 -951 and 1 672 871 -952 or 1 950 951 -953 and 1 138 872 -954 or 1 952 953 -955 and 1 128 873 -956 or 1 954 955 -957 and 1 875 -956 -958 and 1 -37 39 -959 or 1 -37 39 -960 and 1 41 959 -961 or 1 958 960 -962 or 1 41 959 -963 and 1 43 962 -964 or 1 961 963 -965 or 1 43 962 -966 and 1 45 965 -967 or 1 964 966 -968 or 1 45 965 -969 and 1 -967 968 -970 and 1 -47 49 -971 or 1 -47 49 -972 and 1 51 971 -973 or 1 970 972 -974 or 1 51 971 -975 and 1 53 974 -976 or 1 973 975 -977 or 1 53 974 -978 and 1 55 977 -979 or 1 976 978 -980 and 1 969 -979 -981 or 1 55 977 -982 and 1 980 981 -983 and 1 -57 59 -984 or 1 -57 59 -985 and 1 61 984 -986 or 1 983 985 -987 or 1 61 984 -988 and 1 63 987 -989 or 1 986 988 -990 or 1 63 987 -991 and 1 65 990 -992 or 1 989 991 -993 and 1 982 -992 -994 or 1 65 990 -995 and 1 993 994 -996 and 1 -67 69 -997 or 1 -67 69 -998 and 1 71 997 -999 or 1 996 998 -1000 or 1 71 997 -1001 and 1 73 1000 -1002 or 1 999 1001 -1003 or 1 73 1000 -1004 and 1 75 1003 -1005 or 1 1002 1004 -1006 and 1 995 -1005 -1007 or 1 75 1003 -1008 and 1 1006 1007 -1009 and 1 -77 79 -1010 or 1 -77 79 -1011 and 1 81 1010 -1012 or 1 1009 1011 -1013 or 1 81 1010 -1014 and 1 83 1013 -1015 or 1 1012 1014 -1016 or 1 83 1013 -1017 and 1 85 1016 -1018 or 1 1015 1017 -1019 and 1 1008 -1018 -1020 or 1 85 1016 -1021 and 1 1019 1020 -1022 and 1 -87 89 -1023 or 1 -87 89 -1024 and 1 91 1023 -1025 or 1 1022 1024 -1026 or 1 91 1023 -1027 and 1 93 1026 -1028 or 1 1025 1027 -1029 or 1 93 1026 -1030 and 1 95 1029 -1031 or 1 1028 1030 -1032 and 1 1021 -1031 -1033 or 1 95 1029 -1034 and 1 1032 1033 -1035 and 1 -97 99 -1036 or 1 -97 99 -1037 and 1 101 1036 -1038 or 1 1035 1037 -1039 or 1 101 1036 -1040 and 1 103 1039 -1041 or 1 1038 1040 -1042 or 1 103 1039 -1043 and 1 105 1042 -1044 or 1 1041 1043 -1045 and 1 1034 -1044 -1046 or 1 105 1042 -1047 and 1 1045 1046 -1048 and 1 957 1047 -1049 and 1 560 556 -1050 or 1 560 556 -1051 and 1 565 1050 -1052 or 1 1049 1051 -1053 or 1 565 1050 -1054 and 1 568 1053 -1055 or 1 1052 1054 -1056 or 1 568 1053 -1057 and 1 571 1056 -1058 or 1 1055 1057 -1059 or 1 571 1056 -1060 and 1 -1058 1059 -1061 and 1 578 574 -1062 or 1 578 574 -1063 and 1 583 1062 -1064 or 1 1061 1063 -1065 or 1 583 1062 -1066 and 1 586 1065 -1067 or 1 1064 1066 -1068 or 1 586 1065 -1069 and 1 589 1068 -1070 or 1 1067 1069 -1071 and 1 1060 -1070 -1072 or 1 589 1068 -1073 and 1 1071 1072 -1074 and 1 596 592 -1075 or 1 596 592 -1076 and 1 601 1075 -1077 or 1 1074 1076 -1078 or 1 601 1075 -1079 and 1 604 1078 -1080 or 1 1077 1079 -1081 or 1 604 1078 -1082 and 1 607 1081 -1083 or 1 1080 1082 -1084 and 1 1073 -1083 -1085 or 1 607 1081 -1086 and 1 1084 1085 -1087 and 1 614 610 -1088 or 1 614 610 -1089 and 1 619 1088 -1090 or 1 1087 1089 -1091 or 1 619 1088 -1092 and 1 622 1091 -1093 or 1 1090 1092 -1094 or 1 622 1091 -1095 and 1 625 1094 -1096 or 1 1093 1095 -1097 and 1 1086 -1096 -1098 or 1 625 1094 -1099 and 1 1097 1098 -1100 and 1 632 628 -1101 or 1 632 628 -1102 and 1 637 1101 -1103 or 1 1100 1102 -1104 or 1 637 1101 -1105 and 1 640 1104 -1106 or 1 1103 1105 -1107 or 1 640 1104 -1108 and 1 643 1107 -1109 or 1 1106 1108 -1110 and 1 1099 -1109 -1111 or 1 643 1107 -1112 and 1 1110 1111 -1113 and 1 650 646 -1114 or 1 650 646 -1115 and 1 655 1114 -1116 or 1 1113 1115 -1117 or 1 655 1114 -1118 and 1 658 1117 -1119 or 1 1116 1118 -1120 or 1 658 1117 -1121 and 1 661 1120 -1122 or 1 1119 1121 -1123 and 1 1112 -1122 -1124 or 1 661 1120 -1125 and 1 1123 1124 -1126 and 1 668 664 -1127 or 1 668 664 -1128 and 1 673 1127 -1129 or 1 1126 1128 -1130 or 1 673 1127 -1131 and 1 676 1130 -1132 or 1 1129 1131 -1133 or 1 676 1130 -1134 and 1 679 1133 -1135 or 1 1132 1134 -1136 and 1 1125 -1135 -1137 or 1 679 1133 -1138 and 1 1136 1137 -1139 and 1 1048 1138 -1140 and 1 1139 -107 -1141 next 1 107 -1140 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-back-serstep.btor2 deleted file mode 100644 index c7659d7c4b..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-back-serstep.btor2 +++ /dev/null @@ -1,1508 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_x -7 init 2 6 5 -8 state 2 nextv_y -9 init 2 8 5 -10 state 2 nextv_z -11 init 2 10 5 -12 state 2 nextv_t_0 -13 init 2 12 5 -14 state 2 nextv_t_1 -15 init 2 14 5 -16 state 2 nextv_t_2 -17 init 2 16 5 -18 state 2 nextv_t_3 -19 init 2 18 5 -20 state 2 nextv_t_4 -21 init 2 20 5 -22 zero 1 -23 state 1 nexta_q -24 init 1 23 22 -25 state 1 nexta_NCS_P_0 -26 init 1 25 22 -27 state 1 nexta_p2_P_0 -28 init 1 27 22 -29 state 1 nexta_p3_P_0 -30 init 1 29 22 -31 state 1 nexta_p4_P_0 -32 init 1 31 22 -33 state 1 nexta_p5_P_0 -34 init 1 33 22 -35 state 1 nexta_p6_P_0 -36 init 1 35 22 -37 state 1 nexta_p7_P_0 -38 init 1 37 22 -39 state 1 nexta_p8_P_0 -40 init 1 39 22 -41 state 1 nexta_p9_P_0 -42 init 1 41 22 -43 state 1 nexta_CS_P_0 -44 init 1 43 22 -45 state 1 nexta_p12_P_0 -46 init 1 45 22 -47 state 1 nexta_p13_P_0 -48 init 1 47 22 -49 state 1 nexta_NCS_P_1 -50 init 1 49 22 -51 state 1 nexta_p2_P_1 -52 init 1 51 22 -53 state 1 nexta_p3_P_1 -54 init 1 53 22 -55 state 1 nexta_p4_P_1 -56 init 1 55 22 -57 state 1 nexta_p5_P_1 -58 init 1 57 22 -59 state 1 nexta_p6_P_1 -60 init 1 59 22 -61 state 1 nexta_p7_P_1 -62 init 1 61 22 -63 state 1 nexta_p8_P_1 -64 init 1 63 22 -65 state 1 nexta_p9_P_1 -66 init 1 65 22 -67 state 1 nexta_CS_P_1 -68 init 1 67 22 -69 state 1 nexta_p12_P_1 -70 init 1 69 22 -71 state 1 nexta_p13_P_1 -72 init 1 71 22 -73 state 1 nexta_NCS_P_2 -74 init 1 73 22 -75 state 1 nexta_p2_P_2 -76 init 1 75 22 -77 state 1 nexta_p3_P_2 -78 init 1 77 22 -79 state 1 nexta_p4_P_2 -80 init 1 79 22 -81 state 1 nexta_p5_P_2 -82 init 1 81 22 -83 state 1 nexta_p6_P_2 -84 init 1 83 22 -85 state 1 nexta_p7_P_2 -86 init 1 85 22 -87 state 1 nexta_p8_P_2 -88 init 1 87 22 -89 state 1 nexta_p9_P_2 -90 init 1 89 22 -91 state 1 nexta_CS_P_2 -92 init 1 91 22 -93 state 1 nexta_p12_P_2 -94 init 1 93 22 -95 state 1 nexta_p13_P_2 -96 init 1 95 22 -97 state 1 nexta_NCS_P_3 -98 init 1 97 22 -99 state 1 nexta_p2_P_3 -100 init 1 99 22 -101 state 1 nexta_p3_P_3 -102 init 1 101 22 -103 state 1 nexta_p4_P_3 -104 init 1 103 22 -105 state 1 nexta_p5_P_3 -106 init 1 105 22 -107 state 1 nexta_p6_P_3 -108 init 1 107 22 -109 state 1 nexta_p7_P_3 -110 init 1 109 22 -111 state 1 nexta_p8_P_3 -112 init 1 111 22 -113 state 1 nexta_p9_P_3 -114 init 1 113 22 -115 state 1 nexta_CS_P_3 -116 init 1 115 22 -117 state 1 nexta_p12_P_3 -118 init 1 117 22 -119 state 1 nexta_p13_P_3 -120 init 1 119 22 -121 state 1 nexta_NCS_P_4 -122 init 1 121 22 -123 state 1 nexta_p2_P_4 -124 init 1 123 22 -125 state 1 nexta_p3_P_4 -126 init 1 125 22 -127 state 1 nexta_p4_P_4 -128 init 1 127 22 -129 state 1 nexta_p5_P_4 -130 init 1 129 22 -131 state 1 nexta_p6_P_4 -132 init 1 131 22 -133 state 1 nexta_p7_P_4 -134 init 1 133 22 -135 state 1 nexta_p8_P_4 -136 init 1 135 22 -137 state 1 nexta_p9_P_4 -138 init 1 137 22 -139 state 1 nexta_CS_P_4 -140 init 1 139 22 -141 state 1 nexta_p12_P_4 -142 init 1 141 22 -143 state 1 nexta_p13_P_4 -144 init 1 143 22 -145 state 1 dve_initialized -146 init 1 145 22 -147 state 1 dve_valid -148 init 1 147 22 -149 and 1 23 25 -150 and 1 149 -27 -151 and 1 150 -29 -152 and 1 151 -31 -153 and 1 152 -33 -154 and 1 153 -35 -155 and 1 154 -37 -156 and 1 155 -39 -157 and 1 156 -41 -158 and 1 157 -43 -159 and 1 158 -45 -160 and 1 159 -47 -161 and 1 160 49 -162 and 1 161 -51 -163 and 1 162 -53 -164 and 1 163 -55 -165 and 1 164 -57 -166 and 1 165 -59 -167 and 1 166 -61 -168 and 1 167 -63 -169 and 1 168 -65 -170 and 1 169 -67 -171 and 1 170 -69 -172 and 1 171 -71 -173 and 1 172 73 -174 and 1 173 -75 -175 and 1 174 -77 -176 and 1 175 -79 -177 and 1 176 -81 -178 and 1 177 -83 -179 and 1 178 -85 -180 and 1 179 -87 -181 and 1 180 -89 -182 and 1 181 -91 -183 and 1 182 -93 -184 and 1 183 -95 -185 and 1 184 97 -186 and 1 185 -99 -187 and 1 186 -101 -188 and 1 187 -103 -189 and 1 188 -105 -190 and 1 189 -107 -191 and 1 190 -109 -192 and 1 191 -111 -193 and 1 192 -113 -194 and 1 193 -115 -195 and 1 194 -117 -196 and 1 195 -119 -197 and 1 196 121 -198 and 1 197 -123 -199 and 1 198 -125 -200 and 1 199 -127 -201 and 1 200 -129 -202 and 1 201 -131 -203 and 1 202 -133 -204 and 1 203 -135 -205 and 1 204 -137 -206 and 1 205 -139 -207 and 1 206 -141 -208 and 1 207 -143 -209 constd 2 0 -210 eq 1 209 6 -211 and 1 208 210 -212 constd 2 255 -213 eq 1 212 8 -214 and 1 211 213 -215 eq 1 209 10 -216 and 1 214 215 -217 eq 1 212 12 -218 and 1 216 217 -219 eq 1 212 14 -220 and 1 218 219 -221 eq 1 212 16 -222 and 1 220 221 -223 eq 1 212 18 -224 and 1 222 223 -225 eq 1 212 20 -226 and 1 224 225 -227 and 1 147 226 -228 bad 227 -229 input 2 v_x -230 next 2 6 229 -231 input 2 v_y -232 next 2 8 231 -233 input 2 v_z -234 next 2 10 233 -235 input 2 v_t_0 -236 next 2 12 235 -237 input 2 v_t_1 -238 next 2 14 237 -239 input 2 v_t_2 -240 next 2 16 239 -241 input 2 v_t_3 -242 next 2 18 241 -243 input 2 v_t_4 -244 next 2 20 243 -245 input 1 a_q -246 next 1 23 245 -247 input 1 a_NCS_P_0 -248 next 1 25 247 -249 input 1 a_p2_P_0 -250 next 1 27 249 -251 input 1 a_p3_P_0 -252 next 1 29 251 -253 input 1 a_p4_P_0 -254 next 1 31 253 -255 input 1 a_p5_P_0 -256 next 1 33 255 -257 input 1 a_p6_P_0 -258 next 1 35 257 -259 input 1 a_p7_P_0 -260 next 1 37 259 -261 input 1 a_p8_P_0 -262 next 1 39 261 -263 input 1 a_p9_P_0 -264 next 1 41 263 -265 input 1 a_CS_P_0 -266 next 1 43 265 -267 input 1 a_p12_P_0 -268 next 1 45 267 -269 input 1 a_p13_P_0 -270 next 1 47 269 -271 input 1 a_NCS_P_1 -272 next 1 49 271 -273 input 1 a_p2_P_1 -274 next 1 51 273 -275 input 1 a_p3_P_1 -276 next 1 53 275 -277 input 1 a_p4_P_1 -278 next 1 55 277 -279 input 1 a_p5_P_1 -280 next 1 57 279 -281 input 1 a_p6_P_1 -282 next 1 59 281 -283 input 1 a_p7_P_1 -284 next 1 61 283 -285 input 1 a_p8_P_1 -286 next 1 63 285 -287 input 1 a_p9_P_1 -288 next 1 65 287 -289 input 1 a_CS_P_1 -290 next 1 67 289 -291 input 1 a_p12_P_1 -292 next 1 69 291 -293 input 1 a_p13_P_1 -294 next 1 71 293 -295 input 1 a_NCS_P_2 -296 next 1 73 295 -297 input 1 a_p2_P_2 -298 next 1 75 297 -299 input 1 a_p3_P_2 -300 next 1 77 299 -301 input 1 a_p4_P_2 -302 next 1 79 301 -303 input 1 a_p5_P_2 -304 next 1 81 303 -305 input 1 a_p6_P_2 -306 next 1 83 305 -307 input 1 a_p7_P_2 -308 next 1 85 307 -309 input 1 a_p8_P_2 -310 next 1 87 309 -311 input 1 a_p9_P_2 -312 next 1 89 311 -313 input 1 a_CS_P_2 -314 next 1 91 313 -315 input 1 a_p12_P_2 -316 next 1 93 315 -317 input 1 a_p13_P_2 -318 next 1 95 317 -319 input 1 a_NCS_P_3 -320 next 1 97 319 -321 input 1 a_p2_P_3 -322 next 1 99 321 -323 input 1 a_p3_P_3 -324 next 1 101 323 -325 input 1 a_p4_P_3 -326 next 1 103 325 -327 input 1 a_p5_P_3 -328 next 1 105 327 -329 input 1 a_p6_P_3 -330 next 1 107 329 -331 input 1 a_p7_P_3 -332 next 1 109 331 -333 input 1 a_p8_P_3 -334 next 1 111 333 -335 input 1 a_p9_P_3 -336 next 1 113 335 -337 input 1 a_CS_P_3 -338 next 1 115 337 -339 input 1 a_p12_P_3 -340 next 1 117 339 -341 input 1 a_p13_P_3 -342 next 1 119 341 -343 input 1 a_NCS_P_4 -344 next 1 121 343 -345 input 1 a_p2_P_4 -346 next 1 123 345 -347 input 1 a_p3_P_4 -348 next 1 125 347 -349 input 1 a_p4_P_4 -350 next 1 127 349 -351 input 1 a_p5_P_4 -352 next 1 129 351 -353 input 1 a_p6_P_4 -354 next 1 131 353 -355 input 1 a_p7_P_4 -356 next 1 133 355 -357 input 1 a_p8_P_4 -358 next 1 135 357 -359 input 1 a_p9_P_4 -360 next 1 137 359 -361 input 1 a_CS_P_4 -362 next 1 139 361 -363 input 1 a_p12_P_4 -364 next 1 141 363 -365 input 1 a_p13_P_4 -366 next 1 143 365 -367 const 1 1 -368 next 1 145 367 -369 input 1 f00 -370 eq 1 209 235 -371 eq 1 209 237 -372 and 1 -370 -371 -373 eq 1 209 239 -374 and 1 372 -373 -375 eq 1 209 241 -376 and 1 374 -375 -377 eq 1 209 243 -378 and 1 376 -377 -379 and 1 245 378 -380 or 1 -369 379 -381 input 1 f01 -382 or 1 247 -381 -383 and 1 380 382 -384 input 1 f02 -385 or 1 251 381 -386 eq 1 212 231 -387 and 1 385 386 -388 or 1 -384 387 -389 and 1 383 388 -390 or 1 253 384 -391 input 1 f03 -392 or 1 390 -391 -393 and 1 389 392 -394 input 1 f04 -395 or 1 255 391 -396 ite 2 381 209 229 -397 eq 1 209 396 -398 and 1 395 397 -399 or 1 -394 398 -400 and 1 393 399 -401 or 1 263 394 -402 input 1 f05 -403 or 1 401 -402 -404 and 1 400 403 -405 input 1 f06 -406 and 1 395 -394 -407 and 1 -397 406 -408 or 1 -405 407 -409 and 1 404 408 -410 input 1 f07 -411 or 1 257 405 -412 constd 2 5 -413 constd 2 3 -414 constd 3 0 -415 concat 4 414 235 -416 constd 4 1 -417 sub 4 415 416 -418 constd 4 255 -419 eq 1 212 235 -420 constd 4 0 -421 ite 4 419 416 420 -422 mul 4 418 421 -423 or 4 417 422 -424 slice 2 423 7 0 -425 ite 2 369 424 235 -426 ite 2 381 212 425 -427 ite 2 384 413 426 -428 ite 2 391 413 427 -429 ite 2 394 413 428 -430 ite 2 402 212 429 -431 ite 2 405 412 430 -432 eq 1 209 431 -433 and 1 411 432 -434 or 1 -410 433 -435 and 1 409 434 -436 input 1 f08 -437 or 1 259 410 -438 ite 2 391 209 231 -439 eq 1 209 438 -440 and 1 437 -439 -441 or 1 -436 440 -442 and 1 435 441 -443 input 1 f09 -444 and 1 437 -436 -445 and 1 439 444 -446 or 1 -443 445 -447 and 1 442 446 -448 input 1 f10 -449 or 1 261 443 -450 constd 2 1 -451 ite 2 402 450 233 -452 eq 1 209 451 -453 and 1 449 452 -454 or 1 -448 453 -455 and 1 447 454 -456 or 1 265 402 -457 or 1 456 448 -458 input 1 f11 -459 or 1 457 -458 -460 and 1 455 459 -461 input 1 f12 -462 or 1 267 458 -463 and 1 -439 462 -464 or 1 -461 463 -465 and 1 460 464 -466 input 1 f13 -467 and 1 462 -461 -468 and 1 439 467 -469 or 1 -466 468 -470 and 1 465 469 -471 or 1 269 466 -472 input 1 f14 -473 or 1 471 -472 -474 and 1 470 473 -475 input 1 f15 -476 or 1 271 -475 -477 and 1 474 476 -478 input 1 f16 -479 or 1 275 475 -480 ite 2 472 212 438 -481 eq 1 212 480 -482 and 1 479 481 -483 or 1 -478 482 -484 and 1 477 483 -485 or 1 277 478 -486 input 1 f17 -487 or 1 485 -486 -488 and 1 484 487 -489 input 1 f18 -490 or 1 279 486 -491 ite 2 475 450 396 -492 eq 1 450 491 -493 and 1 490 492 -494 or 1 -489 493 -495 and 1 488 494 -496 or 1 287 489 -497 input 1 f19 -498 or 1 496 -497 -499 and 1 495 498 -500 input 1 f20 -501 and 1 490 -489 -502 and 1 -492 501 -503 or 1 -500 502 -504 and 1 499 503 -505 input 1 f21 -506 or 1 281 500 -507 concat 4 414 237 -508 sub 4 507 416 -509 eq 1 212 237 -510 ite 4 509 416 420 -511 mul 4 418 510 -512 or 4 508 511 -513 slice 2 512 7 0 -514 ite 2 369 513 237 -515 ite 2 475 212 514 -516 ite 2 478 413 515 -517 ite 2 486 413 516 -518 ite 2 489 413 517 -519 ite 2 497 212 518 -520 ite 2 500 412 519 -521 eq 1 209 520 -522 and 1 506 521 -523 or 1 -505 522 -524 and 1 504 523 -525 input 1 f22 -526 or 1 283 505 -527 ite 2 486 450 480 -528 eq 1 450 527 -529 and 1 526 -528 -530 or 1 -525 529 -531 and 1 524 530 -532 input 1 f23 -533 and 1 526 -525 -534 and 1 528 533 -535 or 1 -532 534 -536 and 1 531 535 -537 input 1 f24 -538 or 1 285 532 -539 ite 2 458 209 451 -540 ite 2 497 450 539 -541 eq 1 209 540 -542 and 1 538 541 -543 or 1 -537 542 -544 and 1 536 543 -545 or 1 289 497 -546 or 1 545 537 -547 input 1 f25 -548 or 1 546 -547 -549 and 1 544 548 -550 input 1 f26 -551 or 1 291 547 -552 and 1 -528 551 -553 or 1 -550 552 -554 and 1 549 553 -555 input 1 f27 -556 and 1 551 -550 -557 and 1 528 556 -558 or 1 -555 557 -559 and 1 554 558 -560 or 1 293 555 -561 input 1 f28 -562 or 1 560 -561 -563 and 1 559 562 -564 input 1 f29 -565 or 1 295 -564 -566 and 1 563 565 -567 input 1 f30 -568 or 1 299 564 -569 ite 2 561 212 527 -570 eq 1 212 569 -571 and 1 568 570 -572 or 1 -567 571 -573 and 1 566 572 -574 or 1 301 567 -575 input 1 f31 -576 or 1 574 -575 -577 and 1 573 576 -578 input 1 f32 -579 or 1 303 575 -580 constd 2 2 -581 ite 2 564 580 491 -582 eq 1 580 581 -583 and 1 579 582 -584 or 1 -578 583 -585 and 1 577 584 -586 or 1 311 578 -587 input 1 f33 -588 or 1 586 -587 -589 and 1 585 588 -590 input 1 f34 -591 and 1 579 -578 -592 and 1 -582 591 -593 or 1 -590 592 -594 and 1 589 593 -595 input 1 f35 -596 or 1 305 590 -597 concat 4 414 239 -598 sub 4 597 416 -599 eq 1 212 239 -600 ite 4 599 416 420 -601 mul 4 418 600 -602 or 4 598 601 -603 slice 2 602 7 0 -604 ite 2 369 603 239 -605 ite 2 564 212 604 -606 ite 2 567 413 605 -607 ite 2 575 413 606 -608 ite 2 578 413 607 -609 ite 2 587 212 608 -610 ite 2 590 412 609 -611 eq 1 209 610 -612 and 1 596 611 -613 or 1 -595 612 -614 and 1 594 613 -615 input 1 f36 -616 or 1 307 595 -617 ite 2 575 580 569 -618 eq 1 580 617 -619 and 1 616 -618 -620 or 1 -615 619 -621 and 1 614 620 -622 input 1 f37 -623 and 1 616 -615 -624 and 1 618 623 -625 or 1 -622 624 -626 and 1 621 625 -627 input 1 f38 -628 or 1 309 622 -629 ite 2 547 209 540 -630 ite 2 587 450 629 -631 eq 1 209 630 -632 and 1 628 631 -633 or 1 -627 632 -634 and 1 626 633 -635 or 1 313 587 -636 or 1 635 627 -637 input 1 f39 -638 or 1 636 -637 -639 and 1 634 638 -640 input 1 f40 -641 or 1 315 637 -642 and 1 -618 641 -643 or 1 -640 642 -644 and 1 639 643 -645 input 1 f41 -646 and 1 641 -640 -647 and 1 618 646 -648 or 1 -645 647 -649 and 1 644 648 -650 or 1 317 645 -651 input 1 f42 -652 or 1 650 -651 -653 and 1 649 652 -654 input 1 f43 -655 or 1 319 -654 -656 and 1 653 655 -657 input 1 f44 -658 or 1 323 654 -659 ite 2 651 212 617 -660 eq 1 212 659 -661 and 1 658 660 -662 or 1 -657 661 -663 and 1 656 662 -664 or 1 325 657 -665 input 1 f45 -666 or 1 664 -665 -667 and 1 663 666 -668 input 1 f46 -669 or 1 327 665 -670 ite 2 654 413 581 -671 eq 1 413 670 -672 and 1 669 671 -673 or 1 -668 672 -674 and 1 667 673 -675 or 1 335 668 -676 input 1 f47 -677 or 1 675 -676 -678 and 1 674 677 -679 input 1 f48 -680 and 1 669 -668 -681 and 1 -671 680 -682 or 1 -679 681 -683 and 1 678 682 -684 input 1 f49 -685 or 1 329 679 -686 concat 4 414 241 -687 sub 4 686 416 -688 eq 1 212 241 -689 ite 4 688 416 420 -690 mul 4 418 689 -691 or 4 687 690 -692 slice 2 691 7 0 -693 ite 2 369 692 241 -694 ite 2 654 212 693 -695 ite 2 657 413 694 -696 ite 2 665 413 695 -697 ite 2 668 413 696 -698 ite 2 676 212 697 -699 ite 2 679 412 698 -700 eq 1 209 699 -701 and 1 685 700 -702 or 1 -684 701 -703 and 1 683 702 -704 input 1 f50 -705 or 1 331 684 -706 ite 2 665 413 659 -707 eq 1 413 706 -708 and 1 705 -707 -709 or 1 -704 708 -710 and 1 703 709 -711 input 1 f51 -712 and 1 705 -704 -713 and 1 707 712 -714 or 1 -711 713 -715 and 1 710 714 -716 input 1 f52 -717 or 1 333 711 -718 ite 2 637 209 630 -719 ite 2 676 450 718 -720 eq 1 209 719 -721 and 1 717 720 -722 or 1 -716 721 -723 and 1 715 722 -724 or 1 337 676 -725 or 1 724 716 -726 input 1 f53 -727 or 1 725 -726 -728 and 1 723 727 -729 input 1 f54 -730 or 1 339 726 -731 and 1 -707 730 -732 or 1 -729 731 -733 and 1 728 732 -734 input 1 f55 -735 and 1 730 -729 -736 and 1 707 735 -737 or 1 -734 736 -738 and 1 733 737 -739 or 1 341 734 -740 input 1 f56 -741 or 1 739 -740 -742 and 1 738 741 -743 input 1 f57 -744 or 1 343 -743 -745 and 1 742 744 -746 input 1 f58 -747 or 1 347 743 -748 ite 2 740 212 706 -749 eq 1 212 748 -750 and 1 747 749 -751 or 1 -746 750 -752 and 1 745 751 -753 or 1 349 746 -754 input 1 f59 -755 or 1 753 -754 -756 and 1 752 755 -757 input 1 f60 -758 or 1 351 754 -759 constd 2 4 -760 ite 2 743 759 670 -761 eq 1 759 760 -762 and 1 758 761 -763 or 1 -757 762 -764 and 1 756 763 -765 or 1 359 757 -766 input 1 f61 -767 or 1 765 -766 -768 and 1 764 767 -769 input 1 f62 -770 and 1 758 -757 -771 and 1 -761 770 -772 or 1 -769 771 -773 and 1 768 772 -774 input 1 f63 -775 or 1 353 769 -776 concat 4 414 243 -777 sub 4 776 416 -778 eq 1 212 243 -779 ite 4 778 416 420 -780 mul 4 418 779 -781 or 4 777 780 -782 slice 2 781 7 0 -783 ite 2 369 782 243 -784 ite 2 743 212 783 -785 ite 2 746 413 784 -786 ite 2 754 413 785 -787 ite 2 757 413 786 -788 ite 2 766 212 787 -789 ite 2 769 412 788 -790 eq 1 209 789 -791 and 1 775 790 -792 or 1 -774 791 -793 and 1 773 792 -794 input 1 f64 -795 or 1 355 774 -796 ite 2 754 759 748 -797 eq 1 759 796 -798 and 1 795 -797 -799 or 1 -794 798 -800 and 1 793 799 -801 input 1 f65 -802 and 1 795 -794 -803 and 1 797 802 -804 or 1 -801 803 -805 and 1 800 804 -806 input 1 f66 -807 or 1 357 801 -808 ite 2 726 209 719 -809 ite 2 766 450 808 -810 eq 1 209 809 -811 and 1 807 810 -812 or 1 -806 811 -813 and 1 805 812 -814 or 1 361 766 -815 or 1 814 806 -816 input 1 f67 -817 or 1 815 -816 -818 and 1 813 817 -819 input 1 f68 -820 or 1 363 816 -821 and 1 -797 820 -822 or 1 -819 821 -823 and 1 818 822 -824 input 1 f69 -825 and 1 820 -819 -826 and 1 797 825 -827 or 1 -824 826 -828 and 1 823 827 -829 or 1 365 824 -830 input 1 f70 -831 or 1 829 -830 -832 and 1 828 831 -833 or 1 369 381 -834 or 1 384 833 -835 or 1 391 834 -836 or 1 394 835 -837 or 1 402 836 -838 or 1 405 837 -839 or 1 410 838 -840 or 1 436 839 -841 or 1 443 840 -842 or 1 448 841 -843 or 1 458 842 -844 or 1 461 843 -845 or 1 466 844 -846 or 1 472 845 -847 or 1 475 846 -848 or 1 478 847 -849 or 1 486 848 -850 or 1 489 849 -851 or 1 497 850 -852 or 1 500 851 -853 or 1 505 852 -854 or 1 525 853 -855 or 1 532 854 -856 or 1 537 855 -857 or 1 547 856 -858 or 1 550 857 -859 or 1 555 858 -860 or 1 561 859 -861 or 1 564 860 -862 or 1 567 861 -863 or 1 575 862 -864 or 1 578 863 -865 or 1 587 864 -866 or 1 590 865 -867 or 1 595 866 -868 or 1 615 867 -869 or 1 622 868 -870 or 1 627 869 -871 or 1 637 870 -872 or 1 640 871 -873 or 1 645 872 -874 or 1 651 873 -875 or 1 654 874 -876 or 1 657 875 -877 or 1 665 876 -878 or 1 668 877 -879 or 1 676 878 -880 or 1 679 879 -881 or 1 684 880 -882 or 1 704 881 -883 or 1 711 882 -884 or 1 716 883 -885 or 1 726 884 -886 or 1 729 885 -887 or 1 734 886 -888 or 1 740 887 -889 or 1 743 888 -890 or 1 746 889 -891 or 1 754 890 -892 or 1 757 891 -893 or 1 766 892 -894 or 1 769 893 -895 or 1 774 894 -896 or 1 794 895 -897 or 1 801 896 -898 or 1 806 897 -899 or 1 816 898 -900 or 1 819 899 -901 or 1 824 900 -902 or 1 830 901 -903 and 1 832 902 -904 and 1 247 249 -905 or 1 247 249 -906 and 1 251 905 -907 or 1 904 906 -908 or 1 251 905 -909 and 1 253 908 -910 or 1 907 909 -911 or 1 253 908 -912 and 1 255 911 -913 or 1 910 912 -914 or 1 255 911 -915 and 1 257 914 -916 or 1 913 915 -917 or 1 257 914 -918 and 1 259 917 -919 or 1 916 918 -920 or 1 259 917 -921 and 1 261 920 -922 or 1 919 921 -923 or 1 261 920 -924 and 1 263 923 -925 or 1 922 924 -926 or 1 263 923 -927 and 1 265 926 -928 or 1 925 927 -929 or 1 265 926 -930 and 1 267 929 -931 or 1 928 930 -932 or 1 267 929 -933 and 1 269 932 -934 or 1 931 933 -935 and 1 245 -934 -936 or 1 269 932 -937 and 1 935 936 -938 and 1 271 273 -939 or 1 271 273 -940 and 1 275 939 -941 or 1 938 940 -942 or 1 275 939 -943 and 1 277 942 -944 or 1 941 943 -945 or 1 277 942 -946 and 1 279 945 -947 or 1 944 946 -948 or 1 279 945 -949 and 1 281 948 -950 or 1 947 949 -951 or 1 281 948 -952 and 1 283 951 -953 or 1 950 952 -954 or 1 283 951 -955 and 1 285 954 -956 or 1 953 955 -957 or 1 285 954 -958 and 1 287 957 -959 or 1 956 958 -960 or 1 287 957 -961 and 1 289 960 -962 or 1 959 961 -963 or 1 289 960 -964 and 1 291 963 -965 or 1 962 964 -966 or 1 291 963 -967 and 1 293 966 -968 or 1 965 967 -969 and 1 937 -968 -970 or 1 293 966 -971 and 1 969 970 -972 and 1 295 297 -973 or 1 295 297 -974 and 1 299 973 -975 or 1 972 974 -976 or 1 299 973 -977 and 1 301 976 -978 or 1 975 977 -979 or 1 301 976 -980 and 1 303 979 -981 or 1 978 980 -982 or 1 303 979 -983 and 1 305 982 -984 or 1 981 983 -985 or 1 305 982 -986 and 1 307 985 -987 or 1 984 986 -988 or 1 307 985 -989 and 1 309 988 -990 or 1 987 989 -991 or 1 309 988 -992 and 1 311 991 -993 or 1 990 992 -994 or 1 311 991 -995 and 1 313 994 -996 or 1 993 995 -997 or 1 313 994 -998 and 1 315 997 -999 or 1 996 998 -1000 or 1 315 997 -1001 and 1 317 1000 -1002 or 1 999 1001 -1003 and 1 971 -1002 -1004 or 1 317 1000 -1005 and 1 1003 1004 -1006 and 1 319 321 -1007 or 1 319 321 -1008 and 1 323 1007 -1009 or 1 1006 1008 -1010 or 1 323 1007 -1011 and 1 325 1010 -1012 or 1 1009 1011 -1013 or 1 325 1010 -1014 and 1 327 1013 -1015 or 1 1012 1014 -1016 or 1 327 1013 -1017 and 1 329 1016 -1018 or 1 1015 1017 -1019 or 1 329 1016 -1020 and 1 331 1019 -1021 or 1 1018 1020 -1022 or 1 331 1019 -1023 and 1 333 1022 -1024 or 1 1021 1023 -1025 or 1 333 1022 -1026 and 1 335 1025 -1027 or 1 1024 1026 -1028 or 1 335 1025 -1029 and 1 337 1028 -1030 or 1 1027 1029 -1031 or 1 337 1028 -1032 and 1 339 1031 -1033 or 1 1030 1032 -1034 or 1 339 1031 -1035 and 1 341 1034 -1036 or 1 1033 1035 -1037 and 1 1005 -1036 -1038 or 1 341 1034 -1039 and 1 1037 1038 -1040 and 1 343 345 -1041 or 1 343 345 -1042 and 1 347 1041 -1043 or 1 1040 1042 -1044 or 1 347 1041 -1045 and 1 349 1044 -1046 or 1 1043 1045 -1047 or 1 349 1044 -1048 and 1 351 1047 -1049 or 1 1046 1048 -1050 or 1 351 1047 -1051 and 1 353 1050 -1052 or 1 1049 1051 -1053 or 1 353 1050 -1054 and 1 355 1053 -1055 or 1 1052 1054 -1056 or 1 355 1053 -1057 and 1 357 1056 -1058 or 1 1055 1057 -1059 or 1 357 1056 -1060 and 1 359 1059 -1061 or 1 1058 1060 -1062 or 1 359 1059 -1063 and 1 361 1062 -1064 or 1 1061 1063 -1065 or 1 361 1062 -1066 and 1 363 1065 -1067 or 1 1064 1066 -1068 or 1 363 1065 -1069 and 1 365 1068 -1070 or 1 1067 1069 -1071 and 1 1039 -1070 -1072 or 1 365 1068 -1073 and 1 1071 1072 -1074 and 1 903 1073 -1075 and 1 247 -381 -1076 or 1 1075 436 -1077 or 1 1076 461 -1078 or 1 1077 472 -1079 and 1 249 1078 -1080 and 1 385 -384 -1081 or 1 249 1078 -1082 and 1 1080 1081 -1083 or 1 1079 1082 -1084 and 1 390 -391 -1085 or 1 1080 1081 -1086 and 1 1084 1085 -1087 or 1 1083 1086 -1088 and 1 406 -405 -1089 or 1 1084 1085 -1090 and 1 1088 1089 -1091 or 1 1087 1090 -1092 and 1 411 -410 -1093 or 1 1088 1089 -1094 and 1 1092 1093 -1095 or 1 1091 1094 -1096 and 1 444 -443 -1097 or 1 1092 1093 -1098 and 1 1096 1097 -1099 or 1 1095 1098 -1100 and 1 449 -448 -1101 or 1 1096 1097 -1102 and 1 1100 1101 -1103 or 1 1099 1102 -1104 and 1 401 -402 -1105 or 1 1100 1101 -1106 and 1 1104 1105 -1107 or 1 1103 1106 -1108 and 1 457 -458 -1109 or 1 1104 1105 -1110 and 1 1108 1109 -1111 or 1 1107 1110 -1112 and 1 467 -466 -1113 or 1 1108 1109 -1114 and 1 1112 1113 -1115 or 1 1111 1114 -1116 and 1 471 -472 -1117 or 1 1112 1113 -1118 and 1 1116 1117 -1119 or 1 1115 1118 -1120 and 1 245 -1119 -1121 or 1 1116 1117 -1122 and 1 1120 1121 -1123 and 1 271 -475 -1124 or 1 1123 525 -1125 or 1 1124 550 -1126 or 1 1125 561 -1127 and 1 273 1126 -1128 and 1 479 -478 -1129 or 1 273 1126 -1130 and 1 1128 1129 -1131 or 1 1127 1130 -1132 and 1 485 -486 -1133 or 1 1128 1129 -1134 and 1 1132 1133 -1135 or 1 1131 1134 -1136 and 1 501 -500 -1137 or 1 1132 1133 -1138 and 1 1136 1137 -1139 or 1 1135 1138 -1140 and 1 506 -505 -1141 or 1 1136 1137 -1142 and 1 1140 1141 -1143 or 1 1139 1142 -1144 and 1 533 -532 -1145 or 1 1140 1141 -1146 and 1 1144 1145 -1147 or 1 1143 1146 -1148 and 1 538 -537 -1149 or 1 1144 1145 -1150 and 1 1148 1149 -1151 or 1 1147 1150 -1152 and 1 496 -497 -1153 or 1 1148 1149 -1154 and 1 1152 1153 -1155 or 1 1151 1154 -1156 and 1 546 -547 -1157 or 1 1152 1153 -1158 and 1 1156 1157 -1159 or 1 1155 1158 -1160 and 1 556 -555 -1161 or 1 1156 1157 -1162 and 1 1160 1161 -1163 or 1 1159 1162 -1164 and 1 560 -561 -1165 or 1 1160 1161 -1166 and 1 1164 1165 -1167 or 1 1163 1166 -1168 and 1 1122 -1167 -1169 or 1 1164 1165 -1170 and 1 1168 1169 -1171 and 1 295 -564 -1172 or 1 1171 615 -1173 or 1 1172 640 -1174 or 1 1173 651 -1175 and 1 297 1174 -1176 and 1 568 -567 -1177 or 1 297 1174 -1178 and 1 1176 1177 -1179 or 1 1175 1178 -1180 and 1 574 -575 -1181 or 1 1176 1177 -1182 and 1 1180 1181 -1183 or 1 1179 1182 -1184 and 1 591 -590 -1185 or 1 1180 1181 -1186 and 1 1184 1185 -1187 or 1 1183 1186 -1188 and 1 596 -595 -1189 or 1 1184 1185 -1190 and 1 1188 1189 -1191 or 1 1187 1190 -1192 and 1 623 -622 -1193 or 1 1188 1189 -1194 and 1 1192 1193 -1195 or 1 1191 1194 -1196 and 1 628 -627 -1197 or 1 1192 1193 -1198 and 1 1196 1197 -1199 or 1 1195 1198 -1200 and 1 586 -587 -1201 or 1 1196 1197 -1202 and 1 1200 1201 -1203 or 1 1199 1202 -1204 and 1 636 -637 -1205 or 1 1200 1201 -1206 and 1 1204 1205 -1207 or 1 1203 1206 -1208 and 1 646 -645 -1209 or 1 1204 1205 -1210 and 1 1208 1209 -1211 or 1 1207 1210 -1212 and 1 650 -651 -1213 or 1 1208 1209 -1214 and 1 1212 1213 -1215 or 1 1211 1214 -1216 and 1 1170 -1215 -1217 or 1 1212 1213 -1218 and 1 1216 1217 -1219 and 1 319 -654 -1220 or 1 1219 704 -1221 or 1 1220 729 -1222 or 1 1221 740 -1223 and 1 321 1222 -1224 and 1 658 -657 -1225 or 1 321 1222 -1226 and 1 1224 1225 -1227 or 1 1223 1226 -1228 and 1 664 -665 -1229 or 1 1224 1225 -1230 and 1 1228 1229 -1231 or 1 1227 1230 -1232 and 1 680 -679 -1233 or 1 1228 1229 -1234 and 1 1232 1233 -1235 or 1 1231 1234 -1236 and 1 685 -684 -1237 or 1 1232 1233 -1238 and 1 1236 1237 -1239 or 1 1235 1238 -1240 and 1 712 -711 -1241 or 1 1236 1237 -1242 and 1 1240 1241 -1243 or 1 1239 1242 -1244 and 1 717 -716 -1245 or 1 1240 1241 -1246 and 1 1244 1245 -1247 or 1 1243 1246 -1248 and 1 675 -676 -1249 or 1 1244 1245 -1250 and 1 1248 1249 -1251 or 1 1247 1250 -1252 and 1 725 -726 -1253 or 1 1248 1249 -1254 and 1 1252 1253 -1255 or 1 1251 1254 -1256 and 1 735 -734 -1257 or 1 1252 1253 -1258 and 1 1256 1257 -1259 or 1 1255 1258 -1260 and 1 739 -740 -1261 or 1 1256 1257 -1262 and 1 1260 1261 -1263 or 1 1259 1262 -1264 and 1 1218 -1263 -1265 or 1 1260 1261 -1266 and 1 1264 1265 -1267 and 1 343 -743 -1268 or 1 1267 794 -1269 or 1 1268 819 -1270 or 1 1269 830 -1271 and 1 345 1270 -1272 and 1 747 -746 -1273 or 1 345 1270 -1274 and 1 1272 1273 -1275 or 1 1271 1274 -1276 and 1 753 -754 -1277 or 1 1272 1273 -1278 and 1 1276 1277 -1279 or 1 1275 1278 -1280 and 1 770 -769 -1281 or 1 1276 1277 -1282 and 1 1280 1281 -1283 or 1 1279 1282 -1284 and 1 775 -774 -1285 or 1 1280 1281 -1286 and 1 1284 1285 -1287 or 1 1283 1286 -1288 and 1 802 -801 -1289 or 1 1284 1285 -1290 and 1 1288 1289 -1291 or 1 1287 1290 -1292 and 1 807 -806 -1293 or 1 1288 1289 -1294 and 1 1292 1293 -1295 or 1 1291 1294 -1296 and 1 765 -766 -1297 or 1 1292 1293 -1298 and 1 1296 1297 -1299 or 1 1295 1298 -1300 and 1 815 -816 -1301 or 1 1296 1297 -1302 and 1 1300 1301 -1303 or 1 1299 1302 -1304 and 1 825 -824 -1305 or 1 1300 1301 -1306 and 1 1304 1305 -1307 or 1 1303 1306 -1308 and 1 829 -830 -1309 or 1 1304 1305 -1310 and 1 1308 1309 -1311 or 1 1307 1310 -1312 and 1 1266 -1311 -1313 or 1 1308 1309 -1314 and 1 1312 1313 -1315 and 1 1074 1314 -1316 eq 1 760 6 -1317 and 1 1315 1316 -1318 ite 2 830 212 796 -1319 eq 1 1318 8 -1320 and 1 1317 1319 -1321 ite 2 816 209 809 -1322 eq 1 1321 10 -1323 and 1 1320 1322 -1324 ite 2 410 413 431 -1325 ite 2 436 413 1324 -1326 ite 2 443 212 1325 -1327 ite 2 458 413 1326 -1328 ite 2 461 212 1327 -1329 ite 2 466 413 1328 -1330 ite 2 472 212 1329 -1331 eq 1 1330 12 -1332 and 1 1323 1331 -1333 ite 2 505 413 520 -1334 ite 2 525 413 1333 -1335 ite 2 532 212 1334 -1336 ite 2 547 413 1335 -1337 ite 2 550 212 1336 -1338 ite 2 555 413 1337 -1339 ite 2 561 212 1338 -1340 eq 1 1339 14 -1341 and 1 1332 1340 -1342 ite 2 595 413 610 -1343 ite 2 615 413 1342 -1344 ite 2 622 212 1343 -1345 ite 2 637 413 1344 -1346 ite 2 640 212 1345 -1347 ite 2 645 413 1346 -1348 ite 2 651 212 1347 -1349 eq 1 1348 16 -1350 and 1 1341 1349 -1351 ite 2 684 413 699 -1352 ite 2 704 413 1351 -1353 ite 2 711 212 1352 -1354 ite 2 726 413 1353 -1355 ite 2 729 212 1354 -1356 ite 2 734 413 1355 -1357 ite 2 740 212 1356 -1358 eq 1 1357 18 -1359 and 1 1350 1358 -1360 ite 2 774 413 789 -1361 ite 2 794 413 1360 -1362 ite 2 801 212 1361 -1363 ite 2 816 413 1362 -1364 ite 2 819 212 1363 -1365 ite 2 824 413 1364 -1366 ite 2 830 212 1365 -1367 eq 1 1366 20 -1368 and 1 1359 1367 -1369 eq 1 245 23 -1370 and 1 1368 1369 -1371 eq 1 1078 25 -1372 and 1 1370 1371 -1373 eq 1 249 27 -1374 and 1 1372 1373 -1375 eq 1 1080 29 -1376 and 1 1374 1375 -1377 eq 1 1084 31 -1378 and 1 1376 1377 -1379 eq 1 1088 33 -1380 and 1 1378 1379 -1381 eq 1 1092 35 -1382 and 1 1380 1381 -1383 eq 1 1096 37 -1384 and 1 1382 1383 -1385 eq 1 1100 39 -1386 and 1 1384 1385 -1387 eq 1 1104 41 -1388 and 1 1386 1387 -1389 eq 1 1108 43 -1390 and 1 1388 1389 -1391 eq 1 1112 45 -1392 and 1 1390 1391 -1393 eq 1 1116 47 -1394 and 1 1392 1393 -1395 eq 1 1126 49 -1396 and 1 1394 1395 -1397 eq 1 273 51 -1398 and 1 1396 1397 -1399 eq 1 1128 53 -1400 and 1 1398 1399 -1401 eq 1 1132 55 -1402 and 1 1400 1401 -1403 eq 1 1136 57 -1404 and 1 1402 1403 -1405 eq 1 1140 59 -1406 and 1 1404 1405 -1407 eq 1 1144 61 -1408 and 1 1406 1407 -1409 eq 1 1148 63 -1410 and 1 1408 1409 -1411 eq 1 1152 65 -1412 and 1 1410 1411 -1413 eq 1 1156 67 -1414 and 1 1412 1413 -1415 eq 1 1160 69 -1416 and 1 1414 1415 -1417 eq 1 1164 71 -1418 and 1 1416 1417 -1419 eq 1 1174 73 -1420 and 1 1418 1419 -1421 eq 1 297 75 -1422 and 1 1420 1421 -1423 eq 1 1176 77 -1424 and 1 1422 1423 -1425 eq 1 1180 79 -1426 and 1 1424 1425 -1427 eq 1 1184 81 -1428 and 1 1426 1427 -1429 eq 1 1188 83 -1430 and 1 1428 1429 -1431 eq 1 1192 85 -1432 and 1 1430 1431 -1433 eq 1 1196 87 -1434 and 1 1432 1433 -1435 eq 1 1200 89 -1436 and 1 1434 1435 -1437 eq 1 1204 91 -1438 and 1 1436 1437 -1439 eq 1 1208 93 -1440 and 1 1438 1439 -1441 eq 1 1212 95 -1442 and 1 1440 1441 -1443 eq 1 1222 97 -1444 and 1 1442 1443 -1445 eq 1 321 99 -1446 and 1 1444 1445 -1447 eq 1 1224 101 -1448 and 1 1446 1447 -1449 eq 1 1228 103 -1450 and 1 1448 1449 -1451 eq 1 1232 105 -1452 and 1 1450 1451 -1453 eq 1 1236 107 -1454 and 1 1452 1453 -1455 eq 1 1240 109 -1456 and 1 1454 1455 -1457 eq 1 1244 111 -1458 and 1 1456 1457 -1459 eq 1 1248 113 -1460 and 1 1458 1459 -1461 eq 1 1252 115 -1462 and 1 1460 1461 -1463 eq 1 1256 117 -1464 and 1 1462 1463 -1465 eq 1 1260 119 -1466 and 1 1464 1465 -1467 eq 1 1270 121 -1468 and 1 1466 1467 -1469 eq 1 345 123 -1470 and 1 1468 1469 -1471 eq 1 1272 125 -1472 and 1 1470 1471 -1473 eq 1 1276 127 -1474 and 1 1472 1473 -1475 eq 1 1280 129 -1476 and 1 1474 1475 -1477 eq 1 1284 131 -1478 and 1 1476 1477 -1479 eq 1 1288 133 -1480 and 1 1478 1479 -1481 eq 1 1292 135 -1482 and 1 1480 1481 -1483 eq 1 1296 137 -1484 and 1 1482 1483 -1485 eq 1 1300 139 -1486 and 1 1484 1485 -1487 eq 1 1304 141 -1488 and 1 1486 1487 -1489 eq 1 1308 143 -1490 and 1 1488 1489 -1491 and 1 1490 147 -1492 ite 4 265 416 420 -1493 ite 4 289 416 420 -1494 add 4 1492 1493 -1495 ite 4 313 416 420 -1496 add 4 1494 1495 -1497 ite 4 337 416 420 -1498 add 4 1496 1497 -1499 ite 4 361 416 420 -1500 add 4 1498 1499 -1501 ulte 1 1500 416 -1502 ite 1 145 1491 -1501 -1503 next 1 147 1502 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-func-interl.btor2 deleted file mode 100644 index 2fc0596e02..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/at.6.prop1-func-interl.btor2 +++ /dev/null @@ -1,1359 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_x -7 init 2 6 5 -8 state 2 v_y -9 init 2 8 5 -10 state 2 v_z -11 init 2 10 5 -12 state 2 v_t_0 -13 init 2 12 5 -14 state 2 v_t_1 -15 init 2 14 5 -16 state 2 v_t_2 -17 init 2 16 5 -18 state 2 v_t_3 -19 init 2 18 5 -20 state 2 v_t_4 -21 init 2 20 5 -22 zero 1 -23 state 1 a_q -24 init 1 23 22 -25 state 1 a_NCS_P_0 -26 init 1 25 22 -27 state 1 a_p2_P_0 -28 init 1 27 22 -29 state 1 a_p3_P_0 -30 init 1 29 22 -31 state 1 a_p4_P_0 -32 init 1 31 22 -33 state 1 a_p5_P_0 -34 init 1 33 22 -35 state 1 a_p6_P_0 -36 init 1 35 22 -37 state 1 a_p7_P_0 -38 init 1 37 22 -39 state 1 a_p8_P_0 -40 init 1 39 22 -41 state 1 a_p9_P_0 -42 init 1 41 22 -43 state 1 a_CS_P_0 -44 init 1 43 22 -45 state 1 a_p12_P_0 -46 init 1 45 22 -47 state 1 a_p13_P_0 -48 init 1 47 22 -49 state 1 a_NCS_P_1 -50 init 1 49 22 -51 state 1 a_p2_P_1 -52 init 1 51 22 -53 state 1 a_p3_P_1 -54 init 1 53 22 -55 state 1 a_p4_P_1 -56 init 1 55 22 -57 state 1 a_p5_P_1 -58 init 1 57 22 -59 state 1 a_p6_P_1 -60 init 1 59 22 -61 state 1 a_p7_P_1 -62 init 1 61 22 -63 state 1 a_p8_P_1 -64 init 1 63 22 -65 state 1 a_p9_P_1 -66 init 1 65 22 -67 state 1 a_CS_P_1 -68 init 1 67 22 -69 state 1 a_p12_P_1 -70 init 1 69 22 -71 state 1 a_p13_P_1 -72 init 1 71 22 -73 state 1 a_NCS_P_2 -74 init 1 73 22 -75 state 1 a_p2_P_2 -76 init 1 75 22 -77 state 1 a_p3_P_2 -78 init 1 77 22 -79 state 1 a_p4_P_2 -80 init 1 79 22 -81 state 1 a_p5_P_2 -82 init 1 81 22 -83 state 1 a_p6_P_2 -84 init 1 83 22 -85 state 1 a_p7_P_2 -86 init 1 85 22 -87 state 1 a_p8_P_2 -88 init 1 87 22 -89 state 1 a_p9_P_2 -90 init 1 89 22 -91 state 1 a_CS_P_2 -92 init 1 91 22 -93 state 1 a_p12_P_2 -94 init 1 93 22 -95 state 1 a_p13_P_2 -96 init 1 95 22 -97 state 1 a_NCS_P_3 -98 init 1 97 22 -99 state 1 a_p2_P_3 -100 init 1 99 22 -101 state 1 a_p3_P_3 -102 init 1 101 22 -103 state 1 a_p4_P_3 -104 init 1 103 22 -105 state 1 a_p5_P_3 -106 init 1 105 22 -107 state 1 a_p6_P_3 -108 init 1 107 22 -109 state 1 a_p7_P_3 -110 init 1 109 22 -111 state 1 a_p8_P_3 -112 init 1 111 22 -113 state 1 a_p9_P_3 -114 init 1 113 22 -115 state 1 a_CS_P_3 -116 init 1 115 22 -117 state 1 a_p12_P_3 -118 init 1 117 22 -119 state 1 a_p13_P_3 -120 init 1 119 22 -121 state 1 a_NCS_P_4 -122 init 1 121 22 -123 state 1 a_p2_P_4 -124 init 1 123 22 -125 state 1 a_p3_P_4 -126 init 1 125 22 -127 state 1 a_p4_P_4 -128 init 1 127 22 -129 state 1 a_p5_P_4 -130 init 1 129 22 -131 state 1 a_p6_P_4 -132 init 1 131 22 -133 state 1 a_p7_P_4 -134 init 1 133 22 -135 state 1 a_p8_P_4 -136 init 1 135 22 -137 state 1 a_p9_P_4 -138 init 1 137 22 -139 state 1 a_CS_P_4 -140 init 1 139 22 -141 state 1 a_p12_P_4 -142 init 1 141 22 -143 state 1 a_p13_P_4 -144 init 1 143 22 -145 state 1 dve_invalid -146 init 1 145 22 -147 constd 4 1 -148 constd 4 0 -149 ite 4 43 147 148 -150 ite 4 67 147 148 -151 add 4 149 150 -152 ite 4 91 147 148 -153 add 4 151 152 -154 ite 4 115 147 148 -155 add 4 153 154 -156 ite 4 139 147 148 -157 add 4 155 156 -158 ulte 1 157 147 -159 and 1 -145 -158 -160 bad 159 -161 input 1 f57 -162 constd 2 4 -163 input 1 f43 -164 constd 2 3 -165 input 1 f29 -166 constd 2 2 -167 input 1 f15 -168 constd 2 1 -169 input 1 f01 -170 constd 2 0 -171 ite 2 169 170 6 -172 ite 2 167 168 171 -173 ite 2 165 166 172 -174 ite 2 163 164 173 -175 ite 2 161 162 174 -176 next 2 6 175 -177 constd 2 255 -178 input 1 f70 -179 input 1 f59 -180 input 1 f56 -181 input 1 f45 -182 input 1 f42 -183 input 1 f31 -184 input 1 f28 -185 input 1 f17 -186 input 1 f14 -187 input 1 f03 -188 xor 2 177 8 -189 ite 2 187 170 188 -190 ite 2 186 177 189 -191 ite 2 185 168 190 -192 ite 2 184 177 191 -193 ite 2 183 166 192 -194 ite 2 182 177 193 -195 ite 2 181 164 194 -196 ite 2 180 177 195 -197 ite 2 179 162 196 -198 ite 2 178 177 197 -199 xor 2 177 198 -200 next 2 8 199 -201 input 1 f67 -202 input 1 f61 -203 input 1 f53 -204 input 1 f47 -205 input 1 f39 -206 input 1 f33 -207 input 1 f25 -208 input 1 f19 -209 input 1 f11 -210 input 1 f05 -211 ite 2 210 168 10 -212 ite 2 209 170 211 -213 ite 2 208 168 212 -214 ite 2 207 170 213 -215 ite 2 206 168 214 -216 ite 2 205 170 215 -217 ite 2 204 168 216 -218 ite 2 203 170 217 -219 ite 2 202 168 218 -220 ite 2 201 170 219 -221 next 2 10 220 -222 input 1 f13 -223 input 1 f12 -224 input 1 f09 -225 input 1 f08 -226 input 1 f07 -227 input 1 f06 -228 constd 2 5 -229 input 1 f04 -230 input 1 f02 -231 input 1 f00 -232 constd 3 0 -233 xor 2 177 12 -234 concat 4 232 233 -235 sub 4 234 147 -236 constd 4 255 -237 eq 1 177 233 -238 ite 4 237 147 148 -239 mul 4 236 238 -240 or 4 235 239 -241 slice 2 240 7 0 -242 ite 2 231 241 233 -243 ite 2 169 177 242 -244 ite 2 230 164 243 -245 ite 2 187 164 244 -246 ite 2 229 164 245 -247 ite 2 210 177 246 -248 ite 2 227 228 247 -249 ite 2 226 164 248 -250 ite 2 225 164 249 -251 ite 2 224 177 250 -252 ite 2 209 164 251 -253 ite 2 223 177 252 -254 ite 2 222 164 253 -255 ite 2 186 177 254 -256 xor 2 177 255 -257 next 2 12 256 -258 input 1 f27 -259 input 1 f26 -260 input 1 f23 -261 input 1 f22 -262 input 1 f21 -263 input 1 f20 -264 input 1 f18 -265 input 1 f16 -266 xor 2 177 14 -267 concat 4 232 266 -268 sub 4 267 147 -269 eq 1 177 266 -270 ite 4 269 147 148 -271 mul 4 236 270 -272 or 4 268 271 -273 slice 2 272 7 0 -274 ite 2 231 273 266 -275 ite 2 167 177 274 -276 ite 2 265 164 275 -277 ite 2 185 164 276 -278 ite 2 264 164 277 -279 ite 2 208 177 278 -280 ite 2 263 228 279 -281 ite 2 262 164 280 -282 ite 2 261 164 281 -283 ite 2 260 177 282 -284 ite 2 207 164 283 -285 ite 2 259 177 284 -286 ite 2 258 164 285 -287 ite 2 184 177 286 -288 xor 2 177 287 -289 next 2 14 288 -290 input 1 f41 -291 input 1 f40 -292 input 1 f37 -293 input 1 f36 -294 input 1 f35 -295 input 1 f34 -296 input 1 f32 -297 input 1 f30 -298 xor 2 177 16 -299 concat 4 232 298 -300 sub 4 299 147 -301 eq 1 177 298 -302 ite 4 301 147 148 -303 mul 4 236 302 -304 or 4 300 303 -305 slice 2 304 7 0 -306 ite 2 231 305 298 -307 ite 2 165 177 306 -308 ite 2 297 164 307 -309 ite 2 183 164 308 -310 ite 2 296 164 309 -311 ite 2 206 177 310 -312 ite 2 295 228 311 -313 ite 2 294 164 312 -314 ite 2 293 164 313 -315 ite 2 292 177 314 -316 ite 2 205 164 315 -317 ite 2 291 177 316 -318 ite 2 290 164 317 -319 ite 2 182 177 318 -320 xor 2 177 319 -321 next 2 16 320 -322 input 1 f55 -323 input 1 f54 -324 input 1 f51 -325 input 1 f50 -326 input 1 f49 -327 input 1 f48 -328 input 1 f46 -329 input 1 f44 -330 xor 2 177 18 -331 concat 4 232 330 -332 sub 4 331 147 -333 eq 1 177 330 -334 ite 4 333 147 148 -335 mul 4 236 334 -336 or 4 332 335 -337 slice 2 336 7 0 -338 ite 2 231 337 330 -339 ite 2 163 177 338 -340 ite 2 329 164 339 -341 ite 2 181 164 340 -342 ite 2 328 164 341 -343 ite 2 204 177 342 -344 ite 2 327 228 343 -345 ite 2 326 164 344 -346 ite 2 325 164 345 -347 ite 2 324 177 346 -348 ite 2 203 164 347 -349 ite 2 323 177 348 -350 ite 2 322 164 349 -351 ite 2 180 177 350 -352 xor 2 177 351 -353 next 2 18 352 -354 input 1 f69 -355 input 1 f68 -356 input 1 f65 -357 input 1 f64 -358 input 1 f63 -359 input 1 f62 -360 input 1 f60 -361 input 1 f58 -362 xor 2 177 20 -363 concat 4 232 362 -364 sub 4 363 147 -365 eq 1 177 362 -366 ite 4 365 147 148 -367 mul 4 236 366 -368 or 4 364 367 -369 slice 2 368 7 0 -370 ite 2 231 369 362 -371 ite 2 161 177 370 -372 ite 2 361 164 371 -373 ite 2 179 164 372 -374 ite 2 360 164 373 -375 ite 2 202 177 374 -376 ite 2 359 228 375 -377 ite 2 358 164 376 -378 ite 2 357 164 377 -379 ite 2 356 177 378 -380 ite 2 201 164 379 -381 ite 2 355 177 380 -382 ite 2 354 164 381 -383 ite 2 178 177 382 -384 xor 2 177 383 -385 next 2 20 384 -386 next 1 23 23 -387 and 1 -25 -169 -388 or 1 387 225 -389 or 1 388 223 -390 or 1 389 186 -391 next 1 25 -390 -392 next 1 27 27 -393 or 1 29 169 -394 and 1 393 -230 -395 next 1 29 394 -396 or 1 31 230 -397 and 1 396 -187 -398 next 1 31 397 -399 or 1 33 187 -400 and 1 399 -229 -401 and 1 400 -227 -402 next 1 33 401 -403 or 1 35 227 -404 and 1 403 -226 -405 next 1 35 404 -406 or 1 37 226 -407 and 1 406 -225 -408 and 1 407 -224 -409 next 1 37 408 -410 or 1 39 224 -411 input 1 f10 -412 and 1 410 -411 -413 next 1 39 412 -414 or 1 41 229 -415 and 1 414 -210 -416 next 1 41 415 -417 or 1 43 210 -418 or 1 417 411 -419 and 1 418 -209 -420 next 1 43 419 -421 or 1 45 209 -422 and 1 421 -223 -423 and 1 422 -222 -424 next 1 45 423 -425 or 1 47 222 -426 and 1 425 -186 -427 next 1 47 426 -428 and 1 -49 -167 -429 or 1 428 261 -430 or 1 429 259 -431 or 1 430 184 -432 next 1 49 -431 -433 next 1 51 51 -434 or 1 53 167 -435 and 1 434 -265 -436 next 1 53 435 -437 or 1 55 265 -438 and 1 437 -185 -439 next 1 55 438 -440 or 1 57 185 -441 and 1 440 -264 -442 and 1 441 -263 -443 next 1 57 442 -444 or 1 59 263 -445 and 1 444 -262 -446 next 1 59 445 -447 or 1 61 262 -448 and 1 447 -261 -449 and 1 448 -260 -450 next 1 61 449 -451 or 1 63 260 -452 input 1 f24 -453 and 1 451 -452 -454 next 1 63 453 -455 or 1 65 264 -456 and 1 455 -208 -457 next 1 65 456 -458 or 1 67 208 -459 or 1 458 452 -460 and 1 459 -207 -461 next 1 67 460 -462 or 1 69 207 -463 and 1 462 -259 -464 and 1 463 -258 -465 next 1 69 464 -466 or 1 71 258 -467 and 1 466 -184 -468 next 1 71 467 -469 and 1 -73 -165 -470 or 1 469 293 -471 or 1 470 291 -472 or 1 471 182 -473 next 1 73 -472 -474 next 1 75 75 -475 or 1 77 165 -476 and 1 475 -297 -477 next 1 77 476 -478 or 1 79 297 -479 and 1 478 -183 -480 next 1 79 479 -481 or 1 81 183 -482 and 1 481 -296 -483 and 1 482 -295 -484 next 1 81 483 -485 or 1 83 295 -486 and 1 485 -294 -487 next 1 83 486 -488 or 1 85 294 -489 and 1 488 -293 -490 and 1 489 -292 -491 next 1 85 490 -492 or 1 87 292 -493 input 1 f38 -494 and 1 492 -493 -495 next 1 87 494 -496 or 1 89 296 -497 and 1 496 -206 -498 next 1 89 497 -499 or 1 91 206 -500 or 1 499 493 -501 and 1 500 -205 -502 next 1 91 501 -503 or 1 93 205 -504 and 1 503 -291 -505 and 1 504 -290 -506 next 1 93 505 -507 or 1 95 290 -508 and 1 507 -182 -509 next 1 95 508 -510 and 1 -97 -163 -511 or 1 510 325 -512 or 1 511 323 -513 or 1 512 180 -514 next 1 97 -513 -515 next 1 99 99 -516 or 1 101 163 -517 and 1 516 -329 -518 next 1 101 517 -519 or 1 103 329 -520 and 1 519 -181 -521 next 1 103 520 -522 or 1 105 181 -523 and 1 522 -328 -524 and 1 523 -327 -525 next 1 105 524 -526 or 1 107 327 -527 and 1 526 -326 -528 next 1 107 527 -529 or 1 109 326 -530 and 1 529 -325 -531 and 1 530 -324 -532 next 1 109 531 -533 or 1 111 324 -534 input 1 f52 -535 and 1 533 -534 -536 next 1 111 535 -537 or 1 113 328 -538 and 1 537 -204 -539 next 1 113 538 -540 or 1 115 204 -541 or 1 540 534 -542 and 1 541 -203 -543 next 1 115 542 -544 or 1 117 203 -545 and 1 544 -323 -546 and 1 545 -322 -547 next 1 117 546 -548 or 1 119 322 -549 and 1 548 -180 -550 next 1 119 549 -551 and 1 -121 -161 -552 or 1 551 357 -553 or 1 552 355 -554 or 1 553 178 -555 next 1 121 -554 -556 next 1 123 123 -557 or 1 125 161 -558 and 1 557 -361 -559 next 1 125 558 -560 or 1 127 361 -561 and 1 560 -179 -562 next 1 127 561 -563 or 1 129 179 -564 and 1 563 -360 -565 and 1 564 -359 -566 next 1 129 565 -567 or 1 131 359 -568 and 1 567 -358 -569 next 1 131 568 -570 or 1 133 358 -571 and 1 570 -357 -572 and 1 571 -356 -573 next 1 133 572 -574 or 1 135 356 -575 input 1 f66 -576 and 1 574 -575 -577 next 1 135 576 -578 or 1 137 360 -579 and 1 578 -202 -580 next 1 137 579 -581 or 1 139 202 -582 or 1 581 575 -583 and 1 582 -201 -584 next 1 139 583 -585 or 1 141 201 -586 and 1 585 -355 -587 and 1 586 -354 -588 next 1 141 587 -589 or 1 143 354 -590 and 1 589 -178 -591 next 1 143 590 -592 eq 1 170 233 -593 eq 1 170 266 -594 and 1 -592 -593 -595 eq 1 170 298 -596 and 1 594 -595 -597 eq 1 170 330 -598 and 1 596 -597 -599 eq 1 170 362 -600 and 1 598 -599 -601 and 1 -23 600 -602 or 1 -231 601 -603 or 1 -25 -169 -604 and 1 602 603 -605 eq 1 177 188 -606 and 1 29 605 -607 or 1 -230 606 -608 and 1 604 607 -609 or 1 31 -187 -610 and 1 608 609 -611 eq 1 170 6 -612 and 1 33 611 -613 or 1 -229 612 -614 and 1 610 613 -615 or 1 41 -210 -616 and 1 614 615 -617 and 1 33 -611 -618 or 1 -227 617 -619 and 1 616 618 -620 and 1 35 592 -621 or 1 -226 620 -622 and 1 619 621 -623 eq 1 170 188 -624 and 1 37 -623 -625 or 1 -225 624 -626 and 1 622 625 -627 and 1 37 623 -628 or 1 -224 627 -629 and 1 626 628 -630 eq 1 170 10 -631 and 1 39 630 -632 or 1 -411 631 -633 and 1 629 632 -634 or 1 43 -209 -635 and 1 633 634 -636 and 1 45 -623 -637 or 1 -223 636 -638 and 1 635 637 -639 and 1 45 623 -640 or 1 -222 639 -641 and 1 638 640 -642 or 1 47 -186 -643 and 1 641 642 -644 or 1 -49 -167 -645 and 1 643 644 -646 and 1 53 605 -647 or 1 -265 646 -648 and 1 645 647 -649 or 1 55 -185 -650 and 1 648 649 -651 eq 1 168 6 -652 and 1 57 651 -653 or 1 -264 652 -654 and 1 650 653 -655 or 1 65 -208 -656 and 1 654 655 -657 and 1 57 -651 -658 or 1 -263 657 -659 and 1 656 658 -660 and 1 59 593 -661 or 1 -262 660 -662 and 1 659 661 -663 eq 1 168 188 -664 and 1 61 -663 -665 or 1 -261 664 -666 and 1 662 665 -667 and 1 61 663 -668 or 1 -260 667 -669 and 1 666 668 -670 and 1 63 630 -671 or 1 -452 670 -672 and 1 669 671 -673 or 1 67 -207 -674 and 1 672 673 -675 and 1 69 -663 -676 or 1 -259 675 -677 and 1 674 676 -678 and 1 69 663 -679 or 1 -258 678 -680 and 1 677 679 -681 or 1 71 -184 -682 and 1 680 681 -683 or 1 -73 -165 -684 and 1 682 683 -685 and 1 77 605 -686 or 1 -297 685 -687 and 1 684 686 -688 or 1 79 -183 -689 and 1 687 688 -690 eq 1 166 6 -691 and 1 81 690 -692 or 1 -296 691 -693 and 1 689 692 -694 or 1 89 -206 -695 and 1 693 694 -696 and 1 81 -690 -697 or 1 -295 696 -698 and 1 695 697 -699 and 1 83 595 -700 or 1 -294 699 -701 and 1 698 700 -702 eq 1 166 188 -703 and 1 85 -702 -704 or 1 -293 703 -705 and 1 701 704 -706 and 1 85 702 -707 or 1 -292 706 -708 and 1 705 707 -709 and 1 87 630 -710 or 1 -493 709 -711 and 1 708 710 -712 or 1 91 -205 -713 and 1 711 712 -714 and 1 93 -702 -715 or 1 -291 714 -716 and 1 713 715 -717 and 1 93 702 -718 or 1 -290 717 -719 and 1 716 718 -720 or 1 95 -182 -721 and 1 719 720 -722 or 1 -97 -163 -723 and 1 721 722 -724 and 1 101 605 -725 or 1 -329 724 -726 and 1 723 725 -727 or 1 103 -181 -728 and 1 726 727 -729 eq 1 164 6 -730 and 1 105 729 -731 or 1 -328 730 -732 and 1 728 731 -733 or 1 113 -204 -734 and 1 732 733 -735 and 1 105 -729 -736 or 1 -327 735 -737 and 1 734 736 -738 and 1 107 597 -739 or 1 -326 738 -740 and 1 737 739 -741 eq 1 164 188 -742 and 1 109 -741 -743 or 1 -325 742 -744 and 1 740 743 -745 and 1 109 741 -746 or 1 -324 745 -747 and 1 744 746 -748 and 1 111 630 -749 or 1 -534 748 -750 and 1 747 749 -751 or 1 115 -203 -752 and 1 750 751 -753 and 1 117 -741 -754 or 1 -323 753 -755 and 1 752 754 -756 and 1 117 741 -757 or 1 -322 756 -758 and 1 755 757 -759 or 1 119 -180 -760 and 1 758 759 -761 or 1 -121 -161 -762 and 1 760 761 -763 and 1 125 605 -764 or 1 -361 763 -765 and 1 762 764 -766 or 1 127 -179 -767 and 1 765 766 -768 eq 1 162 6 -769 and 1 129 768 -770 or 1 -360 769 -771 and 1 767 770 -772 or 1 137 -202 -773 and 1 771 772 -774 and 1 129 -768 -775 or 1 -359 774 -776 and 1 773 775 -777 and 1 131 599 -778 or 1 -358 777 -779 and 1 776 778 -780 eq 1 162 188 -781 and 1 133 -780 -782 or 1 -357 781 -783 and 1 779 782 -784 and 1 133 780 -785 or 1 -356 784 -786 and 1 783 785 -787 and 1 135 630 -788 or 1 -575 787 -789 and 1 786 788 -790 or 1 139 -201 -791 and 1 789 790 -792 and 1 141 -780 -793 or 1 -355 792 -794 and 1 791 793 -795 and 1 141 780 -796 or 1 -354 795 -797 and 1 794 796 -798 or 1 143 -178 -799 and 1 797 798 -800 or 1 231 169 -801 or 1 230 800 -802 or 1 187 801 -803 or 1 229 802 -804 or 1 210 803 -805 or 1 227 804 -806 or 1 226 805 -807 or 1 225 806 -808 or 1 224 807 -809 or 1 411 808 -810 or 1 209 809 -811 or 1 223 810 -812 or 1 222 811 -813 or 1 186 812 -814 or 1 167 813 -815 or 1 265 814 -816 or 1 185 815 -817 or 1 264 816 -818 or 1 208 817 -819 or 1 263 818 -820 or 1 262 819 -821 or 1 261 820 -822 or 1 260 821 -823 or 1 452 822 -824 or 1 207 823 -825 or 1 259 824 -826 or 1 258 825 -827 or 1 184 826 -828 or 1 165 827 -829 or 1 297 828 -830 or 1 183 829 -831 or 1 296 830 -832 or 1 206 831 -833 or 1 295 832 -834 or 1 294 833 -835 or 1 293 834 -836 or 1 292 835 -837 or 1 493 836 -838 or 1 205 837 -839 or 1 291 838 -840 or 1 290 839 -841 or 1 182 840 -842 or 1 163 841 -843 or 1 329 842 -844 or 1 181 843 -845 or 1 328 844 -846 or 1 204 845 -847 or 1 327 846 -848 or 1 326 847 -849 or 1 325 848 -850 or 1 324 849 -851 or 1 534 850 -852 or 1 203 851 -853 or 1 323 852 -854 or 1 322 853 -855 or 1 180 854 -856 or 1 161 855 -857 or 1 361 856 -858 or 1 179 857 -859 or 1 360 858 -860 or 1 202 859 -861 or 1 359 860 -862 or 1 358 861 -863 or 1 357 862 -864 or 1 356 863 -865 or 1 575 864 -866 or 1 201 865 -867 or 1 355 866 -868 or 1 354 867 -869 or 1 178 868 -870 and 1 799 869 -871 and 1 231 169 -872 and 1 230 800 -873 or 1 871 872 -874 and 1 187 801 -875 or 1 873 874 -876 and 1 229 802 -877 or 1 875 876 -878 and 1 210 803 -879 or 1 877 878 -880 and 1 227 804 -881 or 1 879 880 -882 and 1 226 805 -883 or 1 881 882 -884 and 1 225 806 -885 or 1 883 884 -886 and 1 224 807 -887 or 1 885 886 -888 and 1 411 808 -889 or 1 887 888 -890 and 1 209 809 -891 or 1 889 890 -892 and 1 223 810 -893 or 1 891 892 -894 and 1 222 811 -895 or 1 893 894 -896 and 1 186 812 -897 or 1 895 896 -898 and 1 167 813 -899 or 1 897 898 -900 and 1 265 814 -901 or 1 899 900 -902 and 1 185 815 -903 or 1 901 902 -904 and 1 264 816 -905 or 1 903 904 -906 and 1 208 817 -907 or 1 905 906 -908 and 1 263 818 -909 or 1 907 908 -910 and 1 262 819 -911 or 1 909 910 -912 and 1 261 820 -913 or 1 911 912 -914 and 1 260 821 -915 or 1 913 914 -916 and 1 452 822 -917 or 1 915 916 -918 and 1 207 823 -919 or 1 917 918 -920 and 1 259 824 -921 or 1 919 920 -922 and 1 258 825 -923 or 1 921 922 -924 and 1 184 826 -925 or 1 923 924 -926 and 1 165 827 -927 or 1 925 926 -928 and 1 297 828 -929 or 1 927 928 -930 and 1 183 829 -931 or 1 929 930 -932 and 1 296 830 -933 or 1 931 932 -934 and 1 206 831 -935 or 1 933 934 -936 and 1 295 832 -937 or 1 935 936 -938 and 1 294 833 -939 or 1 937 938 -940 and 1 293 834 -941 or 1 939 940 -942 and 1 292 835 -943 or 1 941 942 -944 and 1 493 836 -945 or 1 943 944 -946 and 1 205 837 -947 or 1 945 946 -948 and 1 291 838 -949 or 1 947 948 -950 and 1 290 839 -951 or 1 949 950 -952 and 1 182 840 -953 or 1 951 952 -954 and 1 163 841 -955 or 1 953 954 -956 and 1 329 842 -957 or 1 955 956 -958 and 1 181 843 -959 or 1 957 958 -960 and 1 328 844 -961 or 1 959 960 -962 and 1 204 845 -963 or 1 961 962 -964 and 1 327 846 -965 or 1 963 964 -966 and 1 326 847 -967 or 1 965 966 -968 and 1 325 848 -969 or 1 967 968 -970 and 1 324 849 -971 or 1 969 970 -972 and 1 534 850 -973 or 1 971 972 -974 and 1 203 851 -975 or 1 973 974 -976 and 1 323 852 -977 or 1 975 976 -978 and 1 322 853 -979 or 1 977 978 -980 and 1 180 854 -981 or 1 979 980 -982 and 1 161 855 -983 or 1 981 982 -984 and 1 361 856 -985 or 1 983 984 -986 and 1 179 857 -987 or 1 985 986 -988 and 1 360 858 -989 or 1 987 988 -990 and 1 202 859 -991 or 1 989 990 -992 and 1 359 860 -993 or 1 991 992 -994 and 1 358 861 -995 or 1 993 994 -996 and 1 357 862 -997 or 1 995 996 -998 and 1 356 863 -999 or 1 997 998 -1000 and 1 575 864 -1001 or 1 999 1000 -1002 and 1 201 865 -1003 or 1 1001 1002 -1004 and 1 355 866 -1005 or 1 1003 1004 -1006 and 1 354 867 -1007 or 1 1005 1006 -1008 and 1 178 868 -1009 or 1 1007 1008 -1010 and 1 870 -1009 -1011 and 1 -25 27 -1012 or 1 -25 27 -1013 and 1 29 1012 -1014 or 1 1011 1013 -1015 or 1 29 1012 -1016 and 1 31 1015 -1017 or 1 1014 1016 -1018 or 1 31 1015 -1019 and 1 33 1018 -1020 or 1 1017 1019 -1021 or 1 33 1018 -1022 and 1 35 1021 -1023 or 1 1020 1022 -1024 or 1 35 1021 -1025 and 1 37 1024 -1026 or 1 1023 1025 -1027 or 1 37 1024 -1028 and 1 39 1027 -1029 or 1 1026 1028 -1030 or 1 39 1027 -1031 and 1 41 1030 -1032 or 1 1029 1031 -1033 or 1 41 1030 -1034 and 1 43 1033 -1035 or 1 1032 1034 -1036 or 1 43 1033 -1037 and 1 45 1036 -1038 or 1 1035 1037 -1039 or 1 45 1036 -1040 and 1 47 1039 -1041 or 1 1038 1040 -1042 and 1 -23 -1041 -1043 or 1 47 1039 -1044 and 1 1042 1043 -1045 and 1 -49 51 -1046 or 1 -49 51 -1047 and 1 53 1046 -1048 or 1 1045 1047 -1049 or 1 53 1046 -1050 and 1 55 1049 -1051 or 1 1048 1050 -1052 or 1 55 1049 -1053 and 1 57 1052 -1054 or 1 1051 1053 -1055 or 1 57 1052 -1056 and 1 59 1055 -1057 or 1 1054 1056 -1058 or 1 59 1055 -1059 and 1 61 1058 -1060 or 1 1057 1059 -1061 or 1 61 1058 -1062 and 1 63 1061 -1063 or 1 1060 1062 -1064 or 1 63 1061 -1065 and 1 65 1064 -1066 or 1 1063 1065 -1067 or 1 65 1064 -1068 and 1 67 1067 -1069 or 1 1066 1068 -1070 or 1 67 1067 -1071 and 1 69 1070 -1072 or 1 1069 1071 -1073 or 1 69 1070 -1074 and 1 71 1073 -1075 or 1 1072 1074 -1076 and 1 1044 -1075 -1077 or 1 71 1073 -1078 and 1 1076 1077 -1079 and 1 -73 75 -1080 or 1 -73 75 -1081 and 1 77 1080 -1082 or 1 1079 1081 -1083 or 1 77 1080 -1084 and 1 79 1083 -1085 or 1 1082 1084 -1086 or 1 79 1083 -1087 and 1 81 1086 -1088 or 1 1085 1087 -1089 or 1 81 1086 -1090 and 1 83 1089 -1091 or 1 1088 1090 -1092 or 1 83 1089 -1093 and 1 85 1092 -1094 or 1 1091 1093 -1095 or 1 85 1092 -1096 and 1 87 1095 -1097 or 1 1094 1096 -1098 or 1 87 1095 -1099 and 1 89 1098 -1100 or 1 1097 1099 -1101 or 1 89 1098 -1102 and 1 91 1101 -1103 or 1 1100 1102 -1104 or 1 91 1101 -1105 and 1 93 1104 -1106 or 1 1103 1105 -1107 or 1 93 1104 -1108 and 1 95 1107 -1109 or 1 1106 1108 -1110 and 1 1078 -1109 -1111 or 1 95 1107 -1112 and 1 1110 1111 -1113 and 1 -97 99 -1114 or 1 -97 99 -1115 and 1 101 1114 -1116 or 1 1113 1115 -1117 or 1 101 1114 -1118 and 1 103 1117 -1119 or 1 1116 1118 -1120 or 1 103 1117 -1121 and 1 105 1120 -1122 or 1 1119 1121 -1123 or 1 105 1120 -1124 and 1 107 1123 -1125 or 1 1122 1124 -1126 or 1 107 1123 -1127 and 1 109 1126 -1128 or 1 1125 1127 -1129 or 1 109 1126 -1130 and 1 111 1129 -1131 or 1 1128 1130 -1132 or 1 111 1129 -1133 and 1 113 1132 -1134 or 1 1131 1133 -1135 or 1 113 1132 -1136 and 1 115 1135 -1137 or 1 1134 1136 -1138 or 1 115 1135 -1139 and 1 117 1138 -1140 or 1 1137 1139 -1141 or 1 117 1138 -1142 and 1 119 1141 -1143 or 1 1140 1142 -1144 and 1 1112 -1143 -1145 or 1 119 1141 -1146 and 1 1144 1145 -1147 and 1 -121 123 -1148 or 1 -121 123 -1149 and 1 125 1148 -1150 or 1 1147 1149 -1151 or 1 125 1148 -1152 and 1 127 1151 -1153 or 1 1150 1152 -1154 or 1 127 1151 -1155 and 1 129 1154 -1156 or 1 1153 1155 -1157 or 1 129 1154 -1158 and 1 131 1157 -1159 or 1 1156 1158 -1160 or 1 131 1157 -1161 and 1 133 1160 -1162 or 1 1159 1161 -1163 or 1 133 1160 -1164 and 1 135 1163 -1165 or 1 1162 1164 -1166 or 1 135 1163 -1167 and 1 137 1166 -1168 or 1 1165 1167 -1169 or 1 137 1166 -1170 and 1 139 1169 -1171 or 1 1168 1170 -1172 or 1 139 1169 -1173 and 1 141 1172 -1174 or 1 1171 1173 -1175 or 1 141 1172 -1176 and 1 143 1175 -1177 or 1 1174 1176 -1178 and 1 1146 -1177 -1179 or 1 143 1175 -1180 and 1 1178 1179 -1181 and 1 1010 1180 -1182 and 1 27 390 -1183 or 1 27 390 -1184 and 1 394 1183 -1185 or 1 1182 1184 -1186 or 1 394 1183 -1187 and 1 397 1186 -1188 or 1 1185 1187 -1189 or 1 397 1186 -1190 and 1 401 1189 -1191 or 1 1188 1190 -1192 or 1 401 1189 -1193 and 1 404 1192 -1194 or 1 1191 1193 -1195 or 1 404 1192 -1196 and 1 408 1195 -1197 or 1 1194 1196 -1198 or 1 408 1195 -1199 and 1 412 1198 -1200 or 1 1197 1199 -1201 or 1 412 1198 -1202 and 1 415 1201 -1203 or 1 1200 1202 -1204 or 1 415 1201 -1205 and 1 419 1204 -1206 or 1 1203 1205 -1207 or 1 419 1204 -1208 and 1 423 1207 -1209 or 1 1206 1208 -1210 or 1 423 1207 -1211 and 1 426 1210 -1212 or 1 1209 1211 -1213 and 1 -23 -1212 -1214 or 1 426 1210 -1215 and 1 1213 1214 -1216 and 1 51 431 -1217 or 1 51 431 -1218 and 1 435 1217 -1219 or 1 1216 1218 -1220 or 1 435 1217 -1221 and 1 438 1220 -1222 or 1 1219 1221 -1223 or 1 438 1220 -1224 and 1 442 1223 -1225 or 1 1222 1224 -1226 or 1 442 1223 -1227 and 1 445 1226 -1228 or 1 1225 1227 -1229 or 1 445 1226 -1230 and 1 449 1229 -1231 or 1 1228 1230 -1232 or 1 449 1229 -1233 and 1 453 1232 -1234 or 1 1231 1233 -1235 or 1 453 1232 -1236 and 1 456 1235 -1237 or 1 1234 1236 -1238 or 1 456 1235 -1239 and 1 460 1238 -1240 or 1 1237 1239 -1241 or 1 460 1238 -1242 and 1 464 1241 -1243 or 1 1240 1242 -1244 or 1 464 1241 -1245 and 1 467 1244 -1246 or 1 1243 1245 -1247 and 1 1215 -1246 -1248 or 1 467 1244 -1249 and 1 1247 1248 -1250 and 1 75 472 -1251 or 1 75 472 -1252 and 1 476 1251 -1253 or 1 1250 1252 -1254 or 1 476 1251 -1255 and 1 479 1254 -1256 or 1 1253 1255 -1257 or 1 479 1254 -1258 and 1 483 1257 -1259 or 1 1256 1258 -1260 or 1 483 1257 -1261 and 1 486 1260 -1262 or 1 1259 1261 -1263 or 1 486 1260 -1264 and 1 490 1263 -1265 or 1 1262 1264 -1266 or 1 490 1263 -1267 and 1 494 1266 -1268 or 1 1265 1267 -1269 or 1 494 1266 -1270 and 1 497 1269 -1271 or 1 1268 1270 -1272 or 1 497 1269 -1273 and 1 501 1272 -1274 or 1 1271 1273 -1275 or 1 501 1272 -1276 and 1 505 1275 -1277 or 1 1274 1276 -1278 or 1 505 1275 -1279 and 1 508 1278 -1280 or 1 1277 1279 -1281 and 1 1249 -1280 -1282 or 1 508 1278 -1283 and 1 1281 1282 -1284 and 1 99 513 -1285 or 1 99 513 -1286 and 1 517 1285 -1287 or 1 1284 1286 -1288 or 1 517 1285 -1289 and 1 520 1288 -1290 or 1 1287 1289 -1291 or 1 520 1288 -1292 and 1 524 1291 -1293 or 1 1290 1292 -1294 or 1 524 1291 -1295 and 1 527 1294 -1296 or 1 1293 1295 -1297 or 1 527 1294 -1298 and 1 531 1297 -1299 or 1 1296 1298 -1300 or 1 531 1297 -1301 and 1 535 1300 -1302 or 1 1299 1301 -1303 or 1 535 1300 -1304 and 1 538 1303 -1305 or 1 1302 1304 -1306 or 1 538 1303 -1307 and 1 542 1306 -1308 or 1 1305 1307 -1309 or 1 542 1306 -1310 and 1 546 1309 -1311 or 1 1308 1310 -1312 or 1 546 1309 -1313 and 1 549 1312 -1314 or 1 1311 1313 -1315 and 1 1283 -1314 -1316 or 1 549 1312 -1317 and 1 1315 1316 -1318 and 1 123 554 -1319 or 1 123 554 -1320 and 1 558 1319 -1321 or 1 1318 1320 -1322 or 1 558 1319 -1323 and 1 561 1322 -1324 or 1 1321 1323 -1325 or 1 561 1322 -1326 and 1 565 1325 -1327 or 1 1324 1326 -1328 or 1 565 1325 -1329 and 1 568 1328 -1330 or 1 1327 1329 -1331 or 1 568 1328 -1332 and 1 572 1331 -1333 or 1 1330 1332 -1334 or 1 572 1331 -1335 and 1 576 1334 -1336 or 1 1333 1335 -1337 or 1 576 1334 -1338 and 1 579 1337 -1339 or 1 1336 1338 -1340 or 1 579 1337 -1341 and 1 583 1340 -1342 or 1 1339 1341 -1343 or 1 583 1340 -1344 and 1 587 1343 -1345 or 1 1342 1344 -1346 or 1 587 1343 -1347 and 1 590 1346 -1348 or 1 1345 1347 -1349 and 1 1317 -1348 -1350 or 1 590 1346 -1351 and 1 1349 1350 -1352 and 1 1181 1351 -1353 and 1 1352 -145 -1354 next 1 145 -1353 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-back-serstep.btor2 deleted file mode 100644 index 6708403da3..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-back-serstep.btor2 +++ /dev/null @@ -1,1796 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 nextv_x -7 init 2 6 5 -8 state 2 nextv_y -9 init 2 8 5 -10 state 2 nextv_z -11 init 2 10 5 -12 state 2 nextv_t_0 -13 init 2 12 5 -14 state 2 nextv_t_1 -15 init 2 14 5 -16 state 2 nextv_t_2 -17 init 2 16 5 -18 state 2 nextv_t_3 -19 init 2 18 5 -20 state 2 nextv_t_4 -21 init 2 20 5 -22 state 2 nextv_t_5 -23 init 2 22 5 -24 zero 1 -25 state 1 nexta_q -26 init 1 25 24 -27 state 1 nexta_NCS_P_0 -28 init 1 27 24 -29 state 1 nexta_p2_P_0 -30 init 1 29 24 -31 state 1 nexta_p3_P_0 -32 init 1 31 24 -33 state 1 nexta_p4_P_0 -34 init 1 33 24 -35 state 1 nexta_p5_P_0 -36 init 1 35 24 -37 state 1 nexta_p6_P_0 -38 init 1 37 24 -39 state 1 nexta_p7_P_0 -40 init 1 39 24 -41 state 1 nexta_p8_P_0 -42 init 1 41 24 -43 state 1 nexta_p9_P_0 -44 init 1 43 24 -45 state 1 nexta_CS_P_0 -46 init 1 45 24 -47 state 1 nexta_p12_P_0 -48 init 1 47 24 -49 state 1 nexta_p13_P_0 -50 init 1 49 24 -51 state 1 nexta_NCS_P_1 -52 init 1 51 24 -53 state 1 nexta_p2_P_1 -54 init 1 53 24 -55 state 1 nexta_p3_P_1 -56 init 1 55 24 -57 state 1 nexta_p4_P_1 -58 init 1 57 24 -59 state 1 nexta_p5_P_1 -60 init 1 59 24 -61 state 1 nexta_p6_P_1 -62 init 1 61 24 -63 state 1 nexta_p7_P_1 -64 init 1 63 24 -65 state 1 nexta_p8_P_1 -66 init 1 65 24 -67 state 1 nexta_p9_P_1 -68 init 1 67 24 -69 state 1 nexta_CS_P_1 -70 init 1 69 24 -71 state 1 nexta_p12_P_1 -72 init 1 71 24 -73 state 1 nexta_p13_P_1 -74 init 1 73 24 -75 state 1 nexta_NCS_P_2 -76 init 1 75 24 -77 state 1 nexta_p2_P_2 -78 init 1 77 24 -79 state 1 nexta_p3_P_2 -80 init 1 79 24 -81 state 1 nexta_p4_P_2 -82 init 1 81 24 -83 state 1 nexta_p5_P_2 -84 init 1 83 24 -85 state 1 nexta_p6_P_2 -86 init 1 85 24 -87 state 1 nexta_p7_P_2 -88 init 1 87 24 -89 state 1 nexta_p8_P_2 -90 init 1 89 24 -91 state 1 nexta_p9_P_2 -92 init 1 91 24 -93 state 1 nexta_CS_P_2 -94 init 1 93 24 -95 state 1 nexta_p12_P_2 -96 init 1 95 24 -97 state 1 nexta_p13_P_2 -98 init 1 97 24 -99 state 1 nexta_NCS_P_3 -100 init 1 99 24 -101 state 1 nexta_p2_P_3 -102 init 1 101 24 -103 state 1 nexta_p3_P_3 -104 init 1 103 24 -105 state 1 nexta_p4_P_3 -106 init 1 105 24 -107 state 1 nexta_p5_P_3 -108 init 1 107 24 -109 state 1 nexta_p6_P_3 -110 init 1 109 24 -111 state 1 nexta_p7_P_3 -112 init 1 111 24 -113 state 1 nexta_p8_P_3 -114 init 1 113 24 -115 state 1 nexta_p9_P_3 -116 init 1 115 24 -117 state 1 nexta_CS_P_3 -118 init 1 117 24 -119 state 1 nexta_p12_P_3 -120 init 1 119 24 -121 state 1 nexta_p13_P_3 -122 init 1 121 24 -123 state 1 nexta_NCS_P_4 -124 init 1 123 24 -125 state 1 nexta_p2_P_4 -126 init 1 125 24 -127 state 1 nexta_p3_P_4 -128 init 1 127 24 -129 state 1 nexta_p4_P_4 -130 init 1 129 24 -131 state 1 nexta_p5_P_4 -132 init 1 131 24 -133 state 1 nexta_p6_P_4 -134 init 1 133 24 -135 state 1 nexta_p7_P_4 -136 init 1 135 24 -137 state 1 nexta_p8_P_4 -138 init 1 137 24 -139 state 1 nexta_p9_P_4 -140 init 1 139 24 -141 state 1 nexta_CS_P_4 -142 init 1 141 24 -143 state 1 nexta_p12_P_4 -144 init 1 143 24 -145 state 1 nexta_p13_P_4 -146 init 1 145 24 -147 state 1 nexta_NCS_P_5 -148 init 1 147 24 -149 state 1 nexta_p2_P_5 -150 init 1 149 24 -151 state 1 nexta_p3_P_5 -152 init 1 151 24 -153 state 1 nexta_p4_P_5 -154 init 1 153 24 -155 state 1 nexta_p5_P_5 -156 init 1 155 24 -157 state 1 nexta_p6_P_5 -158 init 1 157 24 -159 state 1 nexta_p7_P_5 -160 init 1 159 24 -161 state 1 nexta_p8_P_5 -162 init 1 161 24 -163 state 1 nexta_p9_P_5 -164 init 1 163 24 -165 state 1 nexta_CS_P_5 -166 init 1 165 24 -167 state 1 nexta_p12_P_5 -168 init 1 167 24 -169 state 1 nexta_p13_P_5 -170 init 1 169 24 -171 state 1 dve_initialized -172 init 1 171 24 -173 state 1 dve_valid -174 init 1 173 24 -175 and 1 25 27 -176 and 1 175 -29 -177 and 1 176 -31 -178 and 1 177 -33 -179 and 1 178 -35 -180 and 1 179 -37 -181 and 1 180 -39 -182 and 1 181 -41 -183 and 1 182 -43 -184 and 1 183 -45 -185 and 1 184 -47 -186 and 1 185 -49 -187 and 1 186 51 -188 and 1 187 -53 -189 and 1 188 -55 -190 and 1 189 -57 -191 and 1 190 -59 -192 and 1 191 -61 -193 and 1 192 -63 -194 and 1 193 -65 -195 and 1 194 -67 -196 and 1 195 -69 -197 and 1 196 -71 -198 and 1 197 -73 -199 and 1 198 75 -200 and 1 199 -77 -201 and 1 200 -79 -202 and 1 201 -81 -203 and 1 202 -83 -204 and 1 203 -85 -205 and 1 204 -87 -206 and 1 205 -89 -207 and 1 206 -91 -208 and 1 207 -93 -209 and 1 208 -95 -210 and 1 209 -97 -211 and 1 210 99 -212 and 1 211 -101 -213 and 1 212 -103 -214 and 1 213 -105 -215 and 1 214 -107 -216 and 1 215 -109 -217 and 1 216 -111 -218 and 1 217 -113 -219 and 1 218 -115 -220 and 1 219 -117 -221 and 1 220 -119 -222 and 1 221 -121 -223 and 1 222 123 -224 and 1 223 -125 -225 and 1 224 -127 -226 and 1 225 -129 -227 and 1 226 -131 -228 and 1 227 -133 -229 and 1 228 -135 -230 and 1 229 -137 -231 and 1 230 -139 -232 and 1 231 -141 -233 and 1 232 -143 -234 and 1 233 -145 -235 and 1 234 147 -236 and 1 235 -149 -237 and 1 236 -151 -238 and 1 237 -153 -239 and 1 238 -155 -240 and 1 239 -157 -241 and 1 240 -159 -242 and 1 241 -161 -243 and 1 242 -163 -244 and 1 243 -165 -245 and 1 244 -167 -246 and 1 245 -169 -247 constd 2 0 -248 eq 1 247 6 -249 and 1 246 248 -250 constd 2 255 -251 eq 1 250 8 -252 and 1 249 251 -253 eq 1 247 10 -254 and 1 252 253 -255 eq 1 250 12 -256 and 1 254 255 -257 eq 1 250 14 -258 and 1 256 257 -259 eq 1 250 16 -260 and 1 258 259 -261 eq 1 250 18 -262 and 1 260 261 -263 eq 1 250 20 -264 and 1 262 263 -265 eq 1 250 22 -266 and 1 264 265 -267 and 1 173 266 -268 bad 267 -269 input 2 v_x -270 next 2 6 269 -271 input 2 v_y -272 next 2 8 271 -273 input 2 v_z -274 next 2 10 273 -275 input 2 v_t_0 -276 next 2 12 275 -277 input 2 v_t_1 -278 next 2 14 277 -279 input 2 v_t_2 -280 next 2 16 279 -281 input 2 v_t_3 -282 next 2 18 281 -283 input 2 v_t_4 -284 next 2 20 283 -285 input 2 v_t_5 -286 next 2 22 285 -287 input 1 a_q -288 next 1 25 287 -289 input 1 a_NCS_P_0 -290 next 1 27 289 -291 input 1 a_p2_P_0 -292 next 1 29 291 -293 input 1 a_p3_P_0 -294 next 1 31 293 -295 input 1 a_p4_P_0 -296 next 1 33 295 -297 input 1 a_p5_P_0 -298 next 1 35 297 -299 input 1 a_p6_P_0 -300 next 1 37 299 -301 input 1 a_p7_P_0 -302 next 1 39 301 -303 input 1 a_p8_P_0 -304 next 1 41 303 -305 input 1 a_p9_P_0 -306 next 1 43 305 -307 input 1 a_CS_P_0 -308 next 1 45 307 -309 input 1 a_p12_P_0 -310 next 1 47 309 -311 input 1 a_p13_P_0 -312 next 1 49 311 -313 input 1 a_NCS_P_1 -314 next 1 51 313 -315 input 1 a_p2_P_1 -316 next 1 53 315 -317 input 1 a_p3_P_1 -318 next 1 55 317 -319 input 1 a_p4_P_1 -320 next 1 57 319 -321 input 1 a_p5_P_1 -322 next 1 59 321 -323 input 1 a_p6_P_1 -324 next 1 61 323 -325 input 1 a_p7_P_1 -326 next 1 63 325 -327 input 1 a_p8_P_1 -328 next 1 65 327 -329 input 1 a_p9_P_1 -330 next 1 67 329 -331 input 1 a_CS_P_1 -332 next 1 69 331 -333 input 1 a_p12_P_1 -334 next 1 71 333 -335 input 1 a_p13_P_1 -336 next 1 73 335 -337 input 1 a_NCS_P_2 -338 next 1 75 337 -339 input 1 a_p2_P_2 -340 next 1 77 339 -341 input 1 a_p3_P_2 -342 next 1 79 341 -343 input 1 a_p4_P_2 -344 next 1 81 343 -345 input 1 a_p5_P_2 -346 next 1 83 345 -347 input 1 a_p6_P_2 -348 next 1 85 347 -349 input 1 a_p7_P_2 -350 next 1 87 349 -351 input 1 a_p8_P_2 -352 next 1 89 351 -353 input 1 a_p9_P_2 -354 next 1 91 353 -355 input 1 a_CS_P_2 -356 next 1 93 355 -357 input 1 a_p12_P_2 -358 next 1 95 357 -359 input 1 a_p13_P_2 -360 next 1 97 359 -361 input 1 a_NCS_P_3 -362 next 1 99 361 -363 input 1 a_p2_P_3 -364 next 1 101 363 -365 input 1 a_p3_P_3 -366 next 1 103 365 -367 input 1 a_p4_P_3 -368 next 1 105 367 -369 input 1 a_p5_P_3 -370 next 1 107 369 -371 input 1 a_p6_P_3 -372 next 1 109 371 -373 input 1 a_p7_P_3 -374 next 1 111 373 -375 input 1 a_p8_P_3 -376 next 1 113 375 -377 input 1 a_p9_P_3 -378 next 1 115 377 -379 input 1 a_CS_P_3 -380 next 1 117 379 -381 input 1 a_p12_P_3 -382 next 1 119 381 -383 input 1 a_p13_P_3 -384 next 1 121 383 -385 input 1 a_NCS_P_4 -386 next 1 123 385 -387 input 1 a_p2_P_4 -388 next 1 125 387 -389 input 1 a_p3_P_4 -390 next 1 127 389 -391 input 1 a_p4_P_4 -392 next 1 129 391 -393 input 1 a_p5_P_4 -394 next 1 131 393 -395 input 1 a_p6_P_4 -396 next 1 133 395 -397 input 1 a_p7_P_4 -398 next 1 135 397 -399 input 1 a_p8_P_4 -400 next 1 137 399 -401 input 1 a_p9_P_4 -402 next 1 139 401 -403 input 1 a_CS_P_4 -404 next 1 141 403 -405 input 1 a_p12_P_4 -406 next 1 143 405 -407 input 1 a_p13_P_4 -408 next 1 145 407 -409 input 1 a_NCS_P_5 -410 next 1 147 409 -411 input 1 a_p2_P_5 -412 next 1 149 411 -413 input 1 a_p3_P_5 -414 next 1 151 413 -415 input 1 a_p4_P_5 -416 next 1 153 415 -417 input 1 a_p5_P_5 -418 next 1 155 417 -419 input 1 a_p6_P_5 -420 next 1 157 419 -421 input 1 a_p7_P_5 -422 next 1 159 421 -423 input 1 a_p8_P_5 -424 next 1 161 423 -425 input 1 a_p9_P_5 -426 next 1 163 425 -427 input 1 a_CS_P_5 -428 next 1 165 427 -429 input 1 a_p12_P_5 -430 next 1 167 429 -431 input 1 a_p13_P_5 -432 next 1 169 431 -433 const 1 1 -434 next 1 171 433 -435 input 1 f00 -436 eq 1 247 275 -437 eq 1 247 277 -438 and 1 -436 -437 -439 eq 1 247 279 -440 and 1 438 -439 -441 eq 1 247 281 -442 and 1 440 -441 -443 eq 1 247 283 -444 and 1 442 -443 -445 eq 1 247 285 -446 and 1 444 -445 -447 and 1 287 446 -448 or 1 -435 447 -449 input 1 f01 -450 or 1 289 -449 -451 and 1 448 450 -452 input 1 f02 -453 or 1 293 449 -454 eq 1 250 271 -455 and 1 453 454 -456 or 1 -452 455 -457 and 1 451 456 -458 or 1 295 452 -459 input 1 f03 -460 or 1 458 -459 -461 and 1 457 460 -462 input 1 f04 -463 or 1 297 459 -464 ite 2 449 247 269 -465 eq 1 247 464 -466 and 1 463 465 -467 or 1 -462 466 -468 and 1 461 467 -469 or 1 305 462 -470 input 1 f05 -471 or 1 469 -470 -472 and 1 468 471 -473 input 1 f06 -474 and 1 463 -462 -475 and 1 -465 474 -476 or 1 -473 475 -477 and 1 472 476 -478 input 1 f07 -479 or 1 299 473 -480 constd 2 5 -481 constd 2 2 -482 constd 3 0 -483 concat 4 482 275 -484 constd 4 1 -485 sub 4 483 484 -486 constd 4 255 -487 eq 1 250 275 -488 constd 4 0 -489 ite 4 487 484 488 -490 mul 4 486 489 -491 or 4 485 490 -492 slice 2 491 7 0 -493 ite 2 435 492 275 -494 ite 2 449 250 493 -495 ite 2 452 481 494 -496 ite 2 459 481 495 -497 ite 2 462 481 496 -498 ite 2 470 250 497 -499 ite 2 473 480 498 -500 eq 1 247 499 -501 and 1 479 500 -502 or 1 -478 501 -503 and 1 477 502 -504 input 1 f08 -505 or 1 301 478 -506 ite 2 459 247 271 -507 eq 1 247 506 -508 and 1 505 -507 -509 or 1 -504 508 -510 and 1 503 509 -511 input 1 f09 -512 and 1 505 -504 -513 and 1 507 512 -514 or 1 -511 513 -515 and 1 510 514 -516 input 1 f10 -517 or 1 303 511 -518 constd 2 1 -519 ite 2 470 518 273 -520 eq 1 247 519 -521 and 1 517 520 -522 or 1 -516 521 -523 and 1 515 522 -524 or 1 307 470 -525 or 1 524 516 -526 input 1 f11 -527 or 1 525 -526 -528 and 1 523 527 -529 input 1 f12 -530 or 1 309 526 -531 and 1 -507 530 -532 or 1 -529 531 -533 and 1 528 532 -534 input 1 f13 -535 and 1 530 -529 -536 and 1 507 535 -537 or 1 -534 536 -538 and 1 533 537 -539 or 1 311 534 -540 input 1 f14 -541 or 1 539 -540 -542 and 1 538 541 -543 input 1 f15 -544 or 1 313 -543 -545 and 1 542 544 -546 input 1 f16 -547 or 1 317 543 -548 ite 2 540 250 506 -549 eq 1 250 548 -550 and 1 547 549 -551 or 1 -546 550 -552 and 1 545 551 -553 or 1 319 546 -554 input 1 f17 -555 or 1 553 -554 -556 and 1 552 555 -557 input 1 f18 -558 or 1 321 554 -559 ite 2 543 518 464 -560 eq 1 518 559 -561 and 1 558 560 -562 or 1 -557 561 -563 and 1 556 562 -564 or 1 329 557 -565 input 1 f19 -566 or 1 564 -565 -567 and 1 563 566 -568 input 1 f20 -569 and 1 558 -557 -570 and 1 -560 569 -571 or 1 -568 570 -572 and 1 567 571 -573 input 1 f21 -574 or 1 323 568 -575 concat 4 482 277 -576 sub 4 575 484 -577 eq 1 250 277 -578 ite 4 577 484 488 -579 mul 4 486 578 -580 or 4 576 579 -581 slice 2 580 7 0 -582 ite 2 435 581 277 -583 ite 2 543 250 582 -584 ite 2 546 481 583 -585 ite 2 554 481 584 -586 ite 2 557 481 585 -587 ite 2 565 250 586 -588 ite 2 568 480 587 -589 eq 1 247 588 -590 and 1 574 589 -591 or 1 -573 590 -592 and 1 572 591 -593 input 1 f22 -594 or 1 325 573 -595 ite 2 554 518 548 -596 eq 1 518 595 -597 and 1 594 -596 -598 or 1 -593 597 -599 and 1 592 598 -600 input 1 f23 -601 and 1 594 -593 -602 and 1 596 601 -603 or 1 -600 602 -604 and 1 599 603 -605 input 1 f24 -606 or 1 327 600 -607 ite 2 526 247 519 -608 ite 2 565 518 607 -609 eq 1 247 608 -610 and 1 606 609 -611 or 1 -605 610 -612 and 1 604 611 -613 or 1 331 565 -614 or 1 613 605 -615 input 1 f25 -616 or 1 614 -615 -617 and 1 612 616 -618 input 1 f26 -619 or 1 333 615 -620 and 1 -596 619 -621 or 1 -618 620 -622 and 1 617 621 -623 input 1 f27 -624 and 1 619 -618 -625 and 1 596 624 -626 or 1 -623 625 -627 and 1 622 626 -628 or 1 335 623 -629 input 1 f28 -630 or 1 628 -629 -631 and 1 627 630 -632 input 1 f29 -633 or 1 337 -632 -634 and 1 631 633 -635 input 1 f30 -636 or 1 341 632 -637 ite 2 629 250 595 -638 eq 1 250 637 -639 and 1 636 638 -640 or 1 -635 639 -641 and 1 634 640 -642 or 1 343 635 -643 input 1 f31 -644 or 1 642 -643 -645 and 1 641 644 -646 input 1 f32 -647 or 1 345 643 -648 ite 2 632 481 559 -649 eq 1 481 648 -650 and 1 647 649 -651 or 1 -646 650 -652 and 1 645 651 -653 or 1 353 646 -654 input 1 f33 -655 or 1 653 -654 -656 and 1 652 655 -657 input 1 f34 -658 and 1 647 -646 -659 and 1 -649 658 -660 or 1 -657 659 -661 and 1 656 660 -662 input 1 f35 -663 or 1 347 657 -664 concat 4 482 279 -665 sub 4 664 484 -666 eq 1 250 279 -667 ite 4 666 484 488 -668 mul 4 486 667 -669 or 4 665 668 -670 slice 2 669 7 0 -671 ite 2 435 670 279 -672 ite 2 632 250 671 -673 ite 2 635 481 672 -674 ite 2 643 481 673 -675 ite 2 646 481 674 -676 ite 2 654 250 675 -677 ite 2 657 480 676 -678 eq 1 247 677 -679 and 1 663 678 -680 or 1 -662 679 -681 and 1 661 680 -682 input 1 f36 -683 or 1 349 662 -684 ite 2 643 481 637 -685 eq 1 481 684 -686 and 1 683 -685 -687 or 1 -682 686 -688 and 1 681 687 -689 input 1 f37 -690 and 1 683 -682 -691 and 1 685 690 -692 or 1 -689 691 -693 and 1 688 692 -694 input 1 f38 -695 or 1 351 689 -696 ite 2 615 247 608 -697 ite 2 654 518 696 -698 eq 1 247 697 -699 and 1 695 698 -700 or 1 -694 699 -701 and 1 693 700 -702 or 1 355 654 -703 or 1 702 694 -704 input 1 f39 -705 or 1 703 -704 -706 and 1 701 705 -707 input 1 f40 -708 or 1 357 704 -709 and 1 -685 708 -710 or 1 -707 709 -711 and 1 706 710 -712 input 1 f41 -713 and 1 708 -707 -714 and 1 685 713 -715 or 1 -712 714 -716 and 1 711 715 -717 or 1 359 712 -718 input 1 f42 -719 or 1 717 -718 -720 and 1 716 719 -721 input 1 f43 -722 or 1 361 -721 -723 and 1 720 722 -724 input 1 f44 -725 or 1 365 721 -726 ite 2 718 250 684 -727 eq 1 250 726 -728 and 1 725 727 -729 or 1 -724 728 -730 and 1 723 729 -731 or 1 367 724 -732 input 1 f45 -733 or 1 731 -732 -734 and 1 730 733 -735 input 1 f46 -736 or 1 369 732 -737 constd 2 3 -738 ite 2 721 737 648 -739 eq 1 737 738 -740 and 1 736 739 -741 or 1 -735 740 -742 and 1 734 741 -743 or 1 377 735 -744 input 1 f47 -745 or 1 743 -744 -746 and 1 742 745 -747 input 1 f48 -748 and 1 736 -735 -749 and 1 -739 748 -750 or 1 -747 749 -751 and 1 746 750 -752 input 1 f49 -753 or 1 371 747 -754 concat 4 482 281 -755 sub 4 754 484 -756 eq 1 250 281 -757 ite 4 756 484 488 -758 mul 4 486 757 -759 or 4 755 758 -760 slice 2 759 7 0 -761 ite 2 435 760 281 -762 ite 2 721 250 761 -763 ite 2 724 481 762 -764 ite 2 732 481 763 -765 ite 2 735 481 764 -766 ite 2 744 250 765 -767 ite 2 747 480 766 -768 eq 1 247 767 -769 and 1 753 768 -770 or 1 -752 769 -771 and 1 751 770 -772 input 1 f50 -773 or 1 373 752 -774 ite 2 732 737 726 -775 eq 1 737 774 -776 and 1 773 -775 -777 or 1 -772 776 -778 and 1 771 777 -779 input 1 f51 -780 and 1 773 -772 -781 and 1 775 780 -782 or 1 -779 781 -783 and 1 778 782 -784 input 1 f52 -785 or 1 375 779 -786 ite 2 704 247 697 -787 ite 2 744 518 786 -788 eq 1 247 787 -789 and 1 785 788 -790 or 1 -784 789 -791 and 1 783 790 -792 or 1 379 744 -793 or 1 792 784 -794 input 1 f53 -795 or 1 793 -794 -796 and 1 791 795 -797 input 1 f54 -798 or 1 381 794 -799 and 1 -775 798 -800 or 1 -797 799 -801 and 1 796 800 -802 input 1 f55 -803 and 1 798 -797 -804 and 1 775 803 -805 or 1 -802 804 -806 and 1 801 805 -807 or 1 383 802 -808 input 1 f56 -809 or 1 807 -808 -810 and 1 806 809 -811 input 1 f57 -812 or 1 385 -811 -813 and 1 810 812 -814 input 1 f58 -815 or 1 389 811 -816 ite 2 808 250 774 -817 eq 1 250 816 -818 and 1 815 817 -819 or 1 -814 818 -820 and 1 813 819 -821 or 1 391 814 -822 input 1 f59 -823 or 1 821 -822 -824 and 1 820 823 -825 input 1 f60 -826 or 1 393 822 -827 constd 2 4 -828 ite 2 811 827 738 -829 eq 1 827 828 -830 and 1 826 829 -831 or 1 -825 830 -832 and 1 824 831 -833 or 1 401 825 -834 input 1 f61 -835 or 1 833 -834 -836 and 1 832 835 -837 input 1 f62 -838 and 1 826 -825 -839 and 1 -829 838 -840 or 1 -837 839 -841 and 1 836 840 -842 input 1 f63 -843 or 1 395 837 -844 concat 4 482 283 -845 sub 4 844 484 -846 eq 1 250 283 -847 ite 4 846 484 488 -848 mul 4 486 847 -849 or 4 845 848 -850 slice 2 849 7 0 -851 ite 2 435 850 283 -852 ite 2 811 250 851 -853 ite 2 814 481 852 -854 ite 2 822 481 853 -855 ite 2 825 481 854 -856 ite 2 834 250 855 -857 ite 2 837 480 856 -858 eq 1 247 857 -859 and 1 843 858 -860 or 1 -842 859 -861 and 1 841 860 -862 input 1 f64 -863 or 1 397 842 -864 ite 2 822 827 816 -865 eq 1 827 864 -866 and 1 863 -865 -867 or 1 -862 866 -868 and 1 861 867 -869 input 1 f65 -870 and 1 863 -862 -871 and 1 865 870 -872 or 1 -869 871 -873 and 1 868 872 -874 input 1 f66 -875 or 1 399 869 -876 ite 2 794 247 787 -877 ite 2 834 518 876 -878 eq 1 247 877 -879 and 1 875 878 -880 or 1 -874 879 -881 and 1 873 880 -882 or 1 403 834 -883 or 1 882 874 -884 input 1 f67 -885 or 1 883 -884 -886 and 1 881 885 -887 input 1 f68 -888 or 1 405 884 -889 and 1 -865 888 -890 or 1 -887 889 -891 and 1 886 890 -892 input 1 f69 -893 and 1 888 -887 -894 and 1 865 893 -895 or 1 -892 894 -896 and 1 891 895 -897 or 1 407 892 -898 input 1 f70 -899 or 1 897 -898 -900 and 1 896 899 -901 input 1 f71 -902 or 1 409 -901 -903 and 1 900 902 -904 input 1 f72 -905 or 1 413 901 -906 ite 2 898 250 864 -907 eq 1 250 906 -908 and 1 905 907 -909 or 1 -904 908 -910 and 1 903 909 -911 or 1 415 904 -912 input 1 f73 -913 or 1 911 -912 -914 and 1 910 913 -915 input 1 f74 -916 or 1 417 912 -917 ite 2 901 480 828 -918 eq 1 480 917 -919 and 1 916 918 -920 or 1 -915 919 -921 and 1 914 920 -922 or 1 425 915 -923 input 1 f75 -924 or 1 922 -923 -925 and 1 921 924 -926 input 1 f76 -927 and 1 916 -915 -928 and 1 -918 927 -929 or 1 -926 928 -930 and 1 925 929 -931 input 1 f77 -932 or 1 419 926 -933 concat 4 482 285 -934 sub 4 933 484 -935 eq 1 250 285 -936 ite 4 935 484 488 -937 mul 4 486 936 -938 or 4 934 937 -939 slice 2 938 7 0 -940 ite 2 435 939 285 -941 ite 2 901 250 940 -942 ite 2 904 481 941 -943 ite 2 912 481 942 -944 ite 2 915 481 943 -945 ite 2 923 250 944 -946 ite 2 926 480 945 -947 eq 1 247 946 -948 and 1 932 947 -949 or 1 -931 948 -950 and 1 930 949 -951 input 1 f78 -952 or 1 421 931 -953 ite 2 912 480 906 -954 eq 1 480 953 -955 and 1 952 -954 -956 or 1 -951 955 -957 and 1 950 956 -958 input 1 f79 -959 and 1 952 -951 -960 and 1 954 959 -961 or 1 -958 960 -962 and 1 957 961 -963 input 1 f80 -964 or 1 423 958 -965 ite 2 884 247 877 -966 ite 2 923 518 965 -967 eq 1 247 966 -968 and 1 964 967 -969 or 1 -963 968 -970 and 1 962 969 -971 or 1 427 923 -972 or 1 971 963 -973 input 1 f81 -974 or 1 972 -973 -975 and 1 970 974 -976 input 1 f82 -977 or 1 429 973 -978 and 1 -954 977 -979 or 1 -976 978 -980 and 1 975 979 -981 input 1 f83 -982 and 1 977 -976 -983 and 1 954 982 -984 or 1 -981 983 -985 and 1 980 984 -986 or 1 431 981 -987 input 1 f84 -988 or 1 986 -987 -989 and 1 985 988 -990 or 1 435 449 -991 or 1 452 990 -992 or 1 459 991 -993 or 1 462 992 -994 or 1 470 993 -995 or 1 473 994 -996 or 1 478 995 -997 or 1 504 996 -998 or 1 511 997 -999 or 1 516 998 -1000 or 1 526 999 -1001 or 1 529 1000 -1002 or 1 534 1001 -1003 or 1 540 1002 -1004 or 1 543 1003 -1005 or 1 546 1004 -1006 or 1 554 1005 -1007 or 1 557 1006 -1008 or 1 565 1007 -1009 or 1 568 1008 -1010 or 1 573 1009 -1011 or 1 593 1010 -1012 or 1 600 1011 -1013 or 1 605 1012 -1014 or 1 615 1013 -1015 or 1 618 1014 -1016 or 1 623 1015 -1017 or 1 629 1016 -1018 or 1 632 1017 -1019 or 1 635 1018 -1020 or 1 643 1019 -1021 or 1 646 1020 -1022 or 1 654 1021 -1023 or 1 657 1022 -1024 or 1 662 1023 -1025 or 1 682 1024 -1026 or 1 689 1025 -1027 or 1 694 1026 -1028 or 1 704 1027 -1029 or 1 707 1028 -1030 or 1 712 1029 -1031 or 1 718 1030 -1032 or 1 721 1031 -1033 or 1 724 1032 -1034 or 1 732 1033 -1035 or 1 735 1034 -1036 or 1 744 1035 -1037 or 1 747 1036 -1038 or 1 752 1037 -1039 or 1 772 1038 -1040 or 1 779 1039 -1041 or 1 784 1040 -1042 or 1 794 1041 -1043 or 1 797 1042 -1044 or 1 802 1043 -1045 or 1 808 1044 -1046 or 1 811 1045 -1047 or 1 814 1046 -1048 or 1 822 1047 -1049 or 1 825 1048 -1050 or 1 834 1049 -1051 or 1 837 1050 -1052 or 1 842 1051 -1053 or 1 862 1052 -1054 or 1 869 1053 -1055 or 1 874 1054 -1056 or 1 884 1055 -1057 or 1 887 1056 -1058 or 1 892 1057 -1059 or 1 898 1058 -1060 or 1 901 1059 -1061 or 1 904 1060 -1062 or 1 912 1061 -1063 or 1 915 1062 -1064 or 1 923 1063 -1065 or 1 926 1064 -1066 or 1 931 1065 -1067 or 1 951 1066 -1068 or 1 958 1067 -1069 or 1 963 1068 -1070 or 1 973 1069 -1071 or 1 976 1070 -1072 or 1 981 1071 -1073 or 1 987 1072 -1074 and 1 989 1073 -1075 and 1 289 291 -1076 or 1 289 291 -1077 and 1 293 1076 -1078 or 1 1075 1077 -1079 or 1 293 1076 -1080 and 1 295 1079 -1081 or 1 1078 1080 -1082 or 1 295 1079 -1083 and 1 297 1082 -1084 or 1 1081 1083 -1085 or 1 297 1082 -1086 and 1 299 1085 -1087 or 1 1084 1086 -1088 or 1 299 1085 -1089 and 1 301 1088 -1090 or 1 1087 1089 -1091 or 1 301 1088 -1092 and 1 303 1091 -1093 or 1 1090 1092 -1094 or 1 303 1091 -1095 and 1 305 1094 -1096 or 1 1093 1095 -1097 or 1 305 1094 -1098 and 1 307 1097 -1099 or 1 1096 1098 -1100 or 1 307 1097 -1101 and 1 309 1100 -1102 or 1 1099 1101 -1103 or 1 309 1100 -1104 and 1 311 1103 -1105 or 1 1102 1104 -1106 and 1 287 -1105 -1107 or 1 311 1103 -1108 and 1 1106 1107 -1109 and 1 313 315 -1110 or 1 313 315 -1111 and 1 317 1110 -1112 or 1 1109 1111 -1113 or 1 317 1110 -1114 and 1 319 1113 -1115 or 1 1112 1114 -1116 or 1 319 1113 -1117 and 1 321 1116 -1118 or 1 1115 1117 -1119 or 1 321 1116 -1120 and 1 323 1119 -1121 or 1 1118 1120 -1122 or 1 323 1119 -1123 and 1 325 1122 -1124 or 1 1121 1123 -1125 or 1 325 1122 -1126 and 1 327 1125 -1127 or 1 1124 1126 -1128 or 1 327 1125 -1129 and 1 329 1128 -1130 or 1 1127 1129 -1131 or 1 329 1128 -1132 and 1 331 1131 -1133 or 1 1130 1132 -1134 or 1 331 1131 -1135 and 1 333 1134 -1136 or 1 1133 1135 -1137 or 1 333 1134 -1138 and 1 335 1137 -1139 or 1 1136 1138 -1140 and 1 1108 -1139 -1141 or 1 335 1137 -1142 and 1 1140 1141 -1143 and 1 337 339 -1144 or 1 337 339 -1145 and 1 341 1144 -1146 or 1 1143 1145 -1147 or 1 341 1144 -1148 and 1 343 1147 -1149 or 1 1146 1148 -1150 or 1 343 1147 -1151 and 1 345 1150 -1152 or 1 1149 1151 -1153 or 1 345 1150 -1154 and 1 347 1153 -1155 or 1 1152 1154 -1156 or 1 347 1153 -1157 and 1 349 1156 -1158 or 1 1155 1157 -1159 or 1 349 1156 -1160 and 1 351 1159 -1161 or 1 1158 1160 -1162 or 1 351 1159 -1163 and 1 353 1162 -1164 or 1 1161 1163 -1165 or 1 353 1162 -1166 and 1 355 1165 -1167 or 1 1164 1166 -1168 or 1 355 1165 -1169 and 1 357 1168 -1170 or 1 1167 1169 -1171 or 1 357 1168 -1172 and 1 359 1171 -1173 or 1 1170 1172 -1174 and 1 1142 -1173 -1175 or 1 359 1171 -1176 and 1 1174 1175 -1177 and 1 361 363 -1178 or 1 361 363 -1179 and 1 365 1178 -1180 or 1 1177 1179 -1181 or 1 365 1178 -1182 and 1 367 1181 -1183 or 1 1180 1182 -1184 or 1 367 1181 -1185 and 1 369 1184 -1186 or 1 1183 1185 -1187 or 1 369 1184 -1188 and 1 371 1187 -1189 or 1 1186 1188 -1190 or 1 371 1187 -1191 and 1 373 1190 -1192 or 1 1189 1191 -1193 or 1 373 1190 -1194 and 1 375 1193 -1195 or 1 1192 1194 -1196 or 1 375 1193 -1197 and 1 377 1196 -1198 or 1 1195 1197 -1199 or 1 377 1196 -1200 and 1 379 1199 -1201 or 1 1198 1200 -1202 or 1 379 1199 -1203 and 1 381 1202 -1204 or 1 1201 1203 -1205 or 1 381 1202 -1206 and 1 383 1205 -1207 or 1 1204 1206 -1208 and 1 1176 -1207 -1209 or 1 383 1205 -1210 and 1 1208 1209 -1211 and 1 385 387 -1212 or 1 385 387 -1213 and 1 389 1212 -1214 or 1 1211 1213 -1215 or 1 389 1212 -1216 and 1 391 1215 -1217 or 1 1214 1216 -1218 or 1 391 1215 -1219 and 1 393 1218 -1220 or 1 1217 1219 -1221 or 1 393 1218 -1222 and 1 395 1221 -1223 or 1 1220 1222 -1224 or 1 395 1221 -1225 and 1 397 1224 -1226 or 1 1223 1225 -1227 or 1 397 1224 -1228 and 1 399 1227 -1229 or 1 1226 1228 -1230 or 1 399 1227 -1231 and 1 401 1230 -1232 or 1 1229 1231 -1233 or 1 401 1230 -1234 and 1 403 1233 -1235 or 1 1232 1234 -1236 or 1 403 1233 -1237 and 1 405 1236 -1238 or 1 1235 1237 -1239 or 1 405 1236 -1240 and 1 407 1239 -1241 or 1 1238 1240 -1242 and 1 1210 -1241 -1243 or 1 407 1239 -1244 and 1 1242 1243 -1245 and 1 409 411 -1246 or 1 409 411 -1247 and 1 413 1246 -1248 or 1 1245 1247 -1249 or 1 413 1246 -1250 and 1 415 1249 -1251 or 1 1248 1250 -1252 or 1 415 1249 -1253 and 1 417 1252 -1254 or 1 1251 1253 -1255 or 1 417 1252 -1256 and 1 419 1255 -1257 or 1 1254 1256 -1258 or 1 419 1255 -1259 and 1 421 1258 -1260 or 1 1257 1259 -1261 or 1 421 1258 -1262 and 1 423 1261 -1263 or 1 1260 1262 -1264 or 1 423 1261 -1265 and 1 425 1264 -1266 or 1 1263 1265 -1267 or 1 425 1264 -1268 and 1 427 1267 -1269 or 1 1266 1268 -1270 or 1 427 1267 -1271 and 1 429 1270 -1272 or 1 1269 1271 -1273 or 1 429 1270 -1274 and 1 431 1273 -1275 or 1 1272 1274 -1276 and 1 1244 -1275 -1277 or 1 431 1273 -1278 and 1 1276 1277 -1279 and 1 1074 1278 -1280 and 1 289 -449 -1281 or 1 1280 504 -1282 or 1 1281 529 -1283 or 1 1282 540 -1284 and 1 291 1283 -1285 and 1 453 -452 -1286 or 1 291 1283 -1287 and 1 1285 1286 -1288 or 1 1284 1287 -1289 and 1 458 -459 -1290 or 1 1285 1286 -1291 and 1 1289 1290 -1292 or 1 1288 1291 -1293 and 1 474 -473 -1294 or 1 1289 1290 -1295 and 1 1293 1294 -1296 or 1 1292 1295 -1297 and 1 479 -478 -1298 or 1 1293 1294 -1299 and 1 1297 1298 -1300 or 1 1296 1299 -1301 and 1 512 -511 -1302 or 1 1297 1298 -1303 and 1 1301 1302 -1304 or 1 1300 1303 -1305 and 1 517 -516 -1306 or 1 1301 1302 -1307 and 1 1305 1306 -1308 or 1 1304 1307 -1309 and 1 469 -470 -1310 or 1 1305 1306 -1311 and 1 1309 1310 -1312 or 1 1308 1311 -1313 and 1 525 -526 -1314 or 1 1309 1310 -1315 and 1 1313 1314 -1316 or 1 1312 1315 -1317 and 1 535 -534 -1318 or 1 1313 1314 -1319 and 1 1317 1318 -1320 or 1 1316 1319 -1321 and 1 539 -540 -1322 or 1 1317 1318 -1323 and 1 1321 1322 -1324 or 1 1320 1323 -1325 and 1 287 -1324 -1326 or 1 1321 1322 -1327 and 1 1325 1326 -1328 and 1 313 -543 -1329 or 1 1328 593 -1330 or 1 1329 618 -1331 or 1 1330 629 -1332 and 1 315 1331 -1333 and 1 547 -546 -1334 or 1 315 1331 -1335 and 1 1333 1334 -1336 or 1 1332 1335 -1337 and 1 553 -554 -1338 or 1 1333 1334 -1339 and 1 1337 1338 -1340 or 1 1336 1339 -1341 and 1 569 -568 -1342 or 1 1337 1338 -1343 and 1 1341 1342 -1344 or 1 1340 1343 -1345 and 1 574 -573 -1346 or 1 1341 1342 -1347 and 1 1345 1346 -1348 or 1 1344 1347 -1349 and 1 601 -600 -1350 or 1 1345 1346 -1351 and 1 1349 1350 -1352 or 1 1348 1351 -1353 and 1 606 -605 -1354 or 1 1349 1350 -1355 and 1 1353 1354 -1356 or 1 1352 1355 -1357 and 1 564 -565 -1358 or 1 1353 1354 -1359 and 1 1357 1358 -1360 or 1 1356 1359 -1361 and 1 614 -615 -1362 or 1 1357 1358 -1363 and 1 1361 1362 -1364 or 1 1360 1363 -1365 and 1 624 -623 -1366 or 1 1361 1362 -1367 and 1 1365 1366 -1368 or 1 1364 1367 -1369 and 1 628 -629 -1370 or 1 1365 1366 -1371 and 1 1369 1370 -1372 or 1 1368 1371 -1373 and 1 1327 -1372 -1374 or 1 1369 1370 -1375 and 1 1373 1374 -1376 and 1 337 -632 -1377 or 1 1376 682 -1378 or 1 1377 707 -1379 or 1 1378 718 -1380 and 1 339 1379 -1381 and 1 636 -635 -1382 or 1 339 1379 -1383 and 1 1381 1382 -1384 or 1 1380 1383 -1385 and 1 642 -643 -1386 or 1 1381 1382 -1387 and 1 1385 1386 -1388 or 1 1384 1387 -1389 and 1 658 -657 -1390 or 1 1385 1386 -1391 and 1 1389 1390 -1392 or 1 1388 1391 -1393 and 1 663 -662 -1394 or 1 1389 1390 -1395 and 1 1393 1394 -1396 or 1 1392 1395 -1397 and 1 690 -689 -1398 or 1 1393 1394 -1399 and 1 1397 1398 -1400 or 1 1396 1399 -1401 and 1 695 -694 -1402 or 1 1397 1398 -1403 and 1 1401 1402 -1404 or 1 1400 1403 -1405 and 1 653 -654 -1406 or 1 1401 1402 -1407 and 1 1405 1406 -1408 or 1 1404 1407 -1409 and 1 703 -704 -1410 or 1 1405 1406 -1411 and 1 1409 1410 -1412 or 1 1408 1411 -1413 and 1 713 -712 -1414 or 1 1409 1410 -1415 and 1 1413 1414 -1416 or 1 1412 1415 -1417 and 1 717 -718 -1418 or 1 1413 1414 -1419 and 1 1417 1418 -1420 or 1 1416 1419 -1421 and 1 1375 -1420 -1422 or 1 1417 1418 -1423 and 1 1421 1422 -1424 and 1 361 -721 -1425 or 1 1424 772 -1426 or 1 1425 797 -1427 or 1 1426 808 -1428 and 1 363 1427 -1429 and 1 725 -724 -1430 or 1 363 1427 -1431 and 1 1429 1430 -1432 or 1 1428 1431 -1433 and 1 731 -732 -1434 or 1 1429 1430 -1435 and 1 1433 1434 -1436 or 1 1432 1435 -1437 and 1 748 -747 -1438 or 1 1433 1434 -1439 and 1 1437 1438 -1440 or 1 1436 1439 -1441 and 1 753 -752 -1442 or 1 1437 1438 -1443 and 1 1441 1442 -1444 or 1 1440 1443 -1445 and 1 780 -779 -1446 or 1 1441 1442 -1447 and 1 1445 1446 -1448 or 1 1444 1447 -1449 and 1 785 -784 -1450 or 1 1445 1446 -1451 and 1 1449 1450 -1452 or 1 1448 1451 -1453 and 1 743 -744 -1454 or 1 1449 1450 -1455 and 1 1453 1454 -1456 or 1 1452 1455 -1457 and 1 793 -794 -1458 or 1 1453 1454 -1459 and 1 1457 1458 -1460 or 1 1456 1459 -1461 and 1 803 -802 -1462 or 1 1457 1458 -1463 and 1 1461 1462 -1464 or 1 1460 1463 -1465 and 1 807 -808 -1466 or 1 1461 1462 -1467 and 1 1465 1466 -1468 or 1 1464 1467 -1469 and 1 1423 -1468 -1470 or 1 1465 1466 -1471 and 1 1469 1470 -1472 and 1 385 -811 -1473 or 1 1472 862 -1474 or 1 1473 887 -1475 or 1 1474 898 -1476 and 1 387 1475 -1477 and 1 815 -814 -1478 or 1 387 1475 -1479 and 1 1477 1478 -1480 or 1 1476 1479 -1481 and 1 821 -822 -1482 or 1 1477 1478 -1483 and 1 1481 1482 -1484 or 1 1480 1483 -1485 and 1 838 -837 -1486 or 1 1481 1482 -1487 and 1 1485 1486 -1488 or 1 1484 1487 -1489 and 1 843 -842 -1490 or 1 1485 1486 -1491 and 1 1489 1490 -1492 or 1 1488 1491 -1493 and 1 870 -869 -1494 or 1 1489 1490 -1495 and 1 1493 1494 -1496 or 1 1492 1495 -1497 and 1 875 -874 -1498 or 1 1493 1494 -1499 and 1 1497 1498 -1500 or 1 1496 1499 -1501 and 1 833 -834 -1502 or 1 1497 1498 -1503 and 1 1501 1502 -1504 or 1 1500 1503 -1505 and 1 883 -884 -1506 or 1 1501 1502 -1507 and 1 1505 1506 -1508 or 1 1504 1507 -1509 and 1 893 -892 -1510 or 1 1505 1506 -1511 and 1 1509 1510 -1512 or 1 1508 1511 -1513 and 1 897 -898 -1514 or 1 1509 1510 -1515 and 1 1513 1514 -1516 or 1 1512 1515 -1517 and 1 1471 -1516 -1518 or 1 1513 1514 -1519 and 1 1517 1518 -1520 and 1 409 -901 -1521 or 1 1520 951 -1522 or 1 1521 976 -1523 or 1 1522 987 -1524 and 1 411 1523 -1525 and 1 905 -904 -1526 or 1 411 1523 -1527 and 1 1525 1526 -1528 or 1 1524 1527 -1529 and 1 911 -912 -1530 or 1 1525 1526 -1531 and 1 1529 1530 -1532 or 1 1528 1531 -1533 and 1 927 -926 -1534 or 1 1529 1530 -1535 and 1 1533 1534 -1536 or 1 1532 1535 -1537 and 1 932 -931 -1538 or 1 1533 1534 -1539 and 1 1537 1538 -1540 or 1 1536 1539 -1541 and 1 959 -958 -1542 or 1 1537 1538 -1543 and 1 1541 1542 -1544 or 1 1540 1543 -1545 and 1 964 -963 -1546 or 1 1541 1542 -1547 and 1 1545 1546 -1548 or 1 1544 1547 -1549 and 1 922 -923 -1550 or 1 1545 1546 -1551 and 1 1549 1550 -1552 or 1 1548 1551 -1553 and 1 972 -973 -1554 or 1 1549 1550 -1555 and 1 1553 1554 -1556 or 1 1552 1555 -1557 and 1 982 -981 -1558 or 1 1553 1554 -1559 and 1 1557 1558 -1560 or 1 1556 1559 -1561 and 1 986 -987 -1562 or 1 1557 1558 -1563 and 1 1561 1562 -1564 or 1 1560 1563 -1565 and 1 1519 -1564 -1566 or 1 1561 1562 -1567 and 1 1565 1566 -1568 and 1 1279 1567 -1569 eq 1 917 6 -1570 and 1 1568 1569 -1571 ite 2 987 250 953 -1572 eq 1 1571 8 -1573 and 1 1570 1572 -1574 ite 2 973 247 966 -1575 eq 1 1574 10 -1576 and 1 1573 1575 -1577 ite 2 478 481 499 -1578 ite 2 504 481 1577 -1579 ite 2 511 250 1578 -1580 ite 2 526 481 1579 -1581 ite 2 529 250 1580 -1582 ite 2 534 481 1581 -1583 ite 2 540 250 1582 -1584 eq 1 1583 12 -1585 and 1 1576 1584 -1586 ite 2 573 481 588 -1587 ite 2 593 481 1586 -1588 ite 2 600 250 1587 -1589 ite 2 615 481 1588 -1590 ite 2 618 250 1589 -1591 ite 2 623 481 1590 -1592 ite 2 629 250 1591 -1593 eq 1 1592 14 -1594 and 1 1585 1593 -1595 ite 2 662 481 677 -1596 ite 2 682 481 1595 -1597 ite 2 689 250 1596 -1598 ite 2 704 481 1597 -1599 ite 2 707 250 1598 -1600 ite 2 712 481 1599 -1601 ite 2 718 250 1600 -1602 eq 1 1601 16 -1603 and 1 1594 1602 -1604 ite 2 752 481 767 -1605 ite 2 772 481 1604 -1606 ite 2 779 250 1605 -1607 ite 2 794 481 1606 -1608 ite 2 797 250 1607 -1609 ite 2 802 481 1608 -1610 ite 2 808 250 1609 -1611 eq 1 1610 18 -1612 and 1 1603 1611 -1613 ite 2 842 481 857 -1614 ite 2 862 481 1613 -1615 ite 2 869 250 1614 -1616 ite 2 884 481 1615 -1617 ite 2 887 250 1616 -1618 ite 2 892 481 1617 -1619 ite 2 898 250 1618 -1620 eq 1 1619 20 -1621 and 1 1612 1620 -1622 ite 2 931 481 946 -1623 ite 2 951 481 1622 -1624 ite 2 958 250 1623 -1625 ite 2 973 481 1624 -1626 ite 2 976 250 1625 -1627 ite 2 981 481 1626 -1628 ite 2 987 250 1627 -1629 eq 1 1628 22 -1630 and 1 1621 1629 -1631 eq 1 287 25 -1632 and 1 1630 1631 -1633 eq 1 1283 27 -1634 and 1 1632 1633 -1635 eq 1 291 29 -1636 and 1 1634 1635 -1637 eq 1 1285 31 -1638 and 1 1636 1637 -1639 eq 1 1289 33 -1640 and 1 1638 1639 -1641 eq 1 1293 35 -1642 and 1 1640 1641 -1643 eq 1 1297 37 -1644 and 1 1642 1643 -1645 eq 1 1301 39 -1646 and 1 1644 1645 -1647 eq 1 1305 41 -1648 and 1 1646 1647 -1649 eq 1 1309 43 -1650 and 1 1648 1649 -1651 eq 1 1313 45 -1652 and 1 1650 1651 -1653 eq 1 1317 47 -1654 and 1 1652 1653 -1655 eq 1 1321 49 -1656 and 1 1654 1655 -1657 eq 1 1331 51 -1658 and 1 1656 1657 -1659 eq 1 315 53 -1660 and 1 1658 1659 -1661 eq 1 1333 55 -1662 and 1 1660 1661 -1663 eq 1 1337 57 -1664 and 1 1662 1663 -1665 eq 1 1341 59 -1666 and 1 1664 1665 -1667 eq 1 1345 61 -1668 and 1 1666 1667 -1669 eq 1 1349 63 -1670 and 1 1668 1669 -1671 eq 1 1353 65 -1672 and 1 1670 1671 -1673 eq 1 1357 67 -1674 and 1 1672 1673 -1675 eq 1 1361 69 -1676 and 1 1674 1675 -1677 eq 1 1365 71 -1678 and 1 1676 1677 -1679 eq 1 1369 73 -1680 and 1 1678 1679 -1681 eq 1 1379 75 -1682 and 1 1680 1681 -1683 eq 1 339 77 -1684 and 1 1682 1683 -1685 eq 1 1381 79 -1686 and 1 1684 1685 -1687 eq 1 1385 81 -1688 and 1 1686 1687 -1689 eq 1 1389 83 -1690 and 1 1688 1689 -1691 eq 1 1393 85 -1692 and 1 1690 1691 -1693 eq 1 1397 87 -1694 and 1 1692 1693 -1695 eq 1 1401 89 -1696 and 1 1694 1695 -1697 eq 1 1405 91 -1698 and 1 1696 1697 -1699 eq 1 1409 93 -1700 and 1 1698 1699 -1701 eq 1 1413 95 -1702 and 1 1700 1701 -1703 eq 1 1417 97 -1704 and 1 1702 1703 -1705 eq 1 1427 99 -1706 and 1 1704 1705 -1707 eq 1 363 101 -1708 and 1 1706 1707 -1709 eq 1 1429 103 -1710 and 1 1708 1709 -1711 eq 1 1433 105 -1712 and 1 1710 1711 -1713 eq 1 1437 107 -1714 and 1 1712 1713 -1715 eq 1 1441 109 -1716 and 1 1714 1715 -1717 eq 1 1445 111 -1718 and 1 1716 1717 -1719 eq 1 1449 113 -1720 and 1 1718 1719 -1721 eq 1 1453 115 -1722 and 1 1720 1721 -1723 eq 1 1457 117 -1724 and 1 1722 1723 -1725 eq 1 1461 119 -1726 and 1 1724 1725 -1727 eq 1 1465 121 -1728 and 1 1726 1727 -1729 eq 1 1475 123 -1730 and 1 1728 1729 -1731 eq 1 387 125 -1732 and 1 1730 1731 -1733 eq 1 1477 127 -1734 and 1 1732 1733 -1735 eq 1 1481 129 -1736 and 1 1734 1735 -1737 eq 1 1485 131 -1738 and 1 1736 1737 -1739 eq 1 1489 133 -1740 and 1 1738 1739 -1741 eq 1 1493 135 -1742 and 1 1740 1741 -1743 eq 1 1497 137 -1744 and 1 1742 1743 -1745 eq 1 1501 139 -1746 and 1 1744 1745 -1747 eq 1 1505 141 -1748 and 1 1746 1747 -1749 eq 1 1509 143 -1750 and 1 1748 1749 -1751 eq 1 1513 145 -1752 and 1 1750 1751 -1753 eq 1 1523 147 -1754 and 1 1752 1753 -1755 eq 1 411 149 -1756 and 1 1754 1755 -1757 eq 1 1525 151 -1758 and 1 1756 1757 -1759 eq 1 1529 153 -1760 and 1 1758 1759 -1761 eq 1 1533 155 -1762 and 1 1760 1761 -1763 eq 1 1537 157 -1764 and 1 1762 1763 -1765 eq 1 1541 159 -1766 and 1 1764 1765 -1767 eq 1 1545 161 -1768 and 1 1766 1767 -1769 eq 1 1549 163 -1770 and 1 1768 1769 -1771 eq 1 1553 165 -1772 and 1 1770 1771 -1773 eq 1 1557 167 -1774 and 1 1772 1773 -1775 eq 1 1561 169 -1776 and 1 1774 1775 -1777 and 1 1776 173 -1778 ite 4 307 484 488 -1779 ite 4 331 484 488 -1780 add 4 1778 1779 -1781 ite 4 355 484 488 -1782 add 4 1780 1781 -1783 ite 4 379 484 488 -1784 add 4 1782 1783 -1785 ite 4 403 484 488 -1786 add 4 1784 1785 -1787 ite 4 427 484 488 -1788 add 4 1786 1787 -1789 ulte 1 1788 484 -1790 ite 1 171 1777 -1789 -1791 next 1 173 1790 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-func-interl.btor2 deleted file mode 100644 index d8c2aa30de..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/at.7.prop1-func-interl.btor2 +++ /dev/null @@ -1,1621 +0,0 @@ -; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz -; Model in BTOR format generated by stepout.py 0.41 -1 sort bitvec 1 -2 sort bitvec 8 -3 sort bitvec 24 -4 sort bitvec 32 -5 zero 2 -6 state 2 v_x -7 init 2 6 5 -8 state 2 v_y -9 init 2 8 5 -10 state 2 v_z -11 init 2 10 5 -12 state 2 v_t_0 -13 init 2 12 5 -14 state 2 v_t_1 -15 init 2 14 5 -16 state 2 v_t_2 -17 init 2 16 5 -18 state 2 v_t_3 -19 init 2 18 5 -20 state 2 v_t_4 -21 init 2 20 5 -22 state 2 v_t_5 -23 init 2 22 5 -24 zero 1 -25 state 1 a_q -26 init 1 25 24 -27 state 1 a_NCS_P_0 -28 init 1 27 24 -29 state 1 a_p2_P_0 -30 init 1 29 24 -31 state 1 a_p3_P_0 -32 init 1 31 24 -33 state 1 a_p4_P_0 -34 init 1 33 24 -35 state 1 a_p5_P_0 -36 init 1 35 24 -37 state 1 a_p6_P_0 -38 init 1 37 24 -39 state 1 a_p7_P_0 -40 init 1 39 24 -41 state 1 a_p8_P_0 -42 init 1 41 24 -43 state 1 a_p9_P_0 -44 init 1 43 24 -45 state 1 a_CS_P_0 -46 init 1 45 24 -47 state 1 a_p12_P_0 -48 init 1 47 24 -49 state 1 a_p13_P_0 -50 init 1 49 24 -51 state 1 a_NCS_P_1 -52 init 1 51 24 -53 state 1 a_p2_P_1 -54 init 1 53 24 -55 state 1 a_p3_P_1 -56 init 1 55 24 -57 state 1 a_p4_P_1 -58 init 1 57 24 -59 state 1 a_p5_P_1 -60 init 1 59 24 -61 state 1 a_p6_P_1 -62 init 1 61 24 -63 state 1 a_p7_P_1 -64 init 1 63 24 -65 state 1 a_p8_P_1 -66 init 1 65 24 -67 state 1 a_p9_P_1 -68 init 1 67 24 -69 state 1 a_CS_P_1 -70 init 1 69 24 -71 state 1 a_p12_P_1 -72 init 1 71 24 -73 state 1 a_p13_P_1 -74 init 1 73 24 -75 state 1 a_NCS_P_2 -76 init 1 75 24 -77 state 1 a_p2_P_2 -78 init 1 77 24 -79 state 1 a_p3_P_2 -80 init 1 79 24 -81 state 1 a_p4_P_2 -82 init 1 81 24 -83 state 1 a_p5_P_2 -84 init 1 83 24 -85 state 1 a_p6_P_2 -86 init 1 85 24 -87 state 1 a_p7_P_2 -88 init 1 87 24 -89 state 1 a_p8_P_2 -90 init 1 89 24 -91 state 1 a_p9_P_2 -92 init 1 91 24 -93 state 1 a_CS_P_2 -94 init 1 93 24 -95 state 1 a_p12_P_2 -96 init 1 95 24 -97 state 1 a_p13_P_2 -98 init 1 97 24 -99 state 1 a_NCS_P_3 -100 init 1 99 24 -101 state 1 a_p2_P_3 -102 init 1 101 24 -103 state 1 a_p3_P_3 -104 init 1 103 24 -105 state 1 a_p4_P_3 -106 init 1 105 24 -107 state 1 a_p5_P_3 -108 init 1 107 24 -109 state 1 a_p6_P_3 -110 init 1 109 24 -111 state 1 a_p7_P_3 -112 init 1 111 24 -113 state 1 a_p8_P_3 -114 init 1 113 24 -115 state 1 a_p9_P_3 -116 init 1 115 24 -117 state 1 a_CS_P_3 -118 init 1 117 24 -119 state 1 a_p12_P_3 -120 init 1 119 24 -121 state 1 a_p13_P_3 -122 init 1 121 24 -123 state 1 a_NCS_P_4 -124 init 1 123 24 -125 state 1 a_p2_P_4 -126 init 1 125 24 -127 state 1 a_p3_P_4 -128 init 1 127 24 -129 state 1 a_p4_P_4 -130 init 1 129 24 -131 state 1 a_p5_P_4 -132 init 1 131 24 -133 state 1 a_p6_P_4 -134 init 1 133 24 -135 state 1 a_p7_P_4 -136 init 1 135 24 -137 state 1 a_p8_P_4 -138 init 1 137 24 -139 state 1 a_p9_P_4 -140 init 1 139 24 -141 state 1 a_CS_P_4 -142 init 1 141 24 -143 state 1 a_p12_P_4 -144 init 1 143 24 -145 state 1 a_p13_P_4 -146 init 1 145 24 -147 state 1 a_NCS_P_5 -148 init 1 147 24 -149 state 1 a_p2_P_5 -150 init 1 149 24 -151 state 1 a_p3_P_5 -152 init 1 151 24 -153 state 1 a_p4_P_5 -154 init 1 153 24 -155 state 1 a_p5_P_5 -156 init 1 155 24 -157 state 1 a_p6_P_5 -158 init 1 157 24 -159 state 1 a_p7_P_5 -160 init 1 159 24 -161 state 1 a_p8_P_5 -162 init 1 161 24 -163 state 1 a_p9_P_5 -164 init 1 163 24 -165 state 1 a_CS_P_5 -166 init 1 165 24 -167 state 1 a_p12_P_5 -168 init 1 167 24 -169 state 1 a_p13_P_5 -170 init 1 169 24 -171 state 1 dve_invalid -172 init 1 171 24 -173 constd 4 1 -174 constd 4 0 -175 ite 4 45 173 174 -176 ite 4 69 173 174 -177 add 4 175 176 -178 ite 4 93 173 174 -179 add 4 177 178 -180 ite 4 117 173 174 -181 add 4 179 180 -182 ite 4 141 173 174 -183 add 4 181 182 -184 ite 4 165 173 174 -185 add 4 183 184 -186 ulte 1 185 173 -187 and 1 -171 -186 -188 bad 187 -189 input 1 f71 -190 constd 2 5 -191 input 1 f57 -192 constd 2 4 -193 input 1 f43 -194 constd 2 3 -195 input 1 f29 -196 constd 2 2 -197 input 1 f15 -198 constd 2 1 -199 input 1 f01 -200 constd 2 0 -201 ite 2 199 200 6 -202 ite 2 197 198 201 -203 ite 2 195 196 202 -204 ite 2 193 194 203 -205 ite 2 191 192 204 -206 ite 2 189 190 205 -207 next 2 6 206 -208 constd 2 255 -209 input 1 f84 -210 input 1 f73 -211 input 1 f70 -212 input 1 f59 -213 input 1 f56 -214 input 1 f45 -215 input 1 f42 -216 input 1 f31 -217 input 1 f28 -218 input 1 f17 -219 input 1 f14 -220 input 1 f03 -221 xor 2 208 8 -222 ite 2 220 200 221 -223 ite 2 219 208 222 -224 ite 2 218 198 223 -225 ite 2 217 208 224 -226 ite 2 216 196 225 -227 ite 2 215 208 226 -228 ite 2 214 194 227 -229 ite 2 213 208 228 -230 ite 2 212 192 229 -231 ite 2 211 208 230 -232 ite 2 210 190 231 -233 ite 2 209 208 232 -234 xor 2 208 233 -235 next 2 8 234 -236 input 1 f81 -237 input 1 f75 -238 input 1 f67 -239 input 1 f61 -240 input 1 f53 -241 input 1 f47 -242 input 1 f39 -243 input 1 f33 -244 input 1 f25 -245 input 1 f19 -246 input 1 f11 -247 input 1 f05 -248 ite 2 247 198 10 -249 ite 2 246 200 248 -250 ite 2 245 198 249 -251 ite 2 244 200 250 -252 ite 2 243 198 251 -253 ite 2 242 200 252 -254 ite 2 241 198 253 -255 ite 2 240 200 254 -256 ite 2 239 198 255 -257 ite 2 238 200 256 -258 ite 2 237 198 257 -259 ite 2 236 200 258 -260 next 2 10 259 -261 input 1 f13 -262 input 1 f12 -263 input 1 f09 -264 input 1 f08 -265 input 1 f07 -266 input 1 f06 -267 input 1 f04 -268 input 1 f02 -269 input 1 f00 -270 constd 3 0 -271 xor 2 208 12 -272 concat 4 270 271 -273 sub 4 272 173 -274 constd 4 255 -275 eq 1 208 271 -276 ite 4 275 173 174 -277 mul 4 274 276 -278 or 4 273 277 -279 slice 2 278 7 0 -280 ite 2 269 279 271 -281 ite 2 199 208 280 -282 ite 2 268 196 281 -283 ite 2 220 196 282 -284 ite 2 267 196 283 -285 ite 2 247 208 284 -286 ite 2 266 190 285 -287 ite 2 265 196 286 -288 ite 2 264 196 287 -289 ite 2 263 208 288 -290 ite 2 246 196 289 -291 ite 2 262 208 290 -292 ite 2 261 196 291 -293 ite 2 219 208 292 -294 xor 2 208 293 -295 next 2 12 294 -296 input 1 f27 -297 input 1 f26 -298 input 1 f23 -299 input 1 f22 -300 input 1 f21 -301 input 1 f20 -302 input 1 f18 -303 input 1 f16 -304 xor 2 208 14 -305 concat 4 270 304 -306 sub 4 305 173 -307 eq 1 208 304 -308 ite 4 307 173 174 -309 mul 4 274 308 -310 or 4 306 309 -311 slice 2 310 7 0 -312 ite 2 269 311 304 -313 ite 2 197 208 312 -314 ite 2 303 196 313 -315 ite 2 218 196 314 -316 ite 2 302 196 315 -317 ite 2 245 208 316 -318 ite 2 301 190 317 -319 ite 2 300 196 318 -320 ite 2 299 196 319 -321 ite 2 298 208 320 -322 ite 2 244 196 321 -323 ite 2 297 208 322 -324 ite 2 296 196 323 -325 ite 2 217 208 324 -326 xor 2 208 325 -327 next 2 14 326 -328 input 1 f41 -329 input 1 f40 -330 input 1 f37 -331 input 1 f36 -332 input 1 f35 -333 input 1 f34 -334 input 1 f32 -335 input 1 f30 -336 xor 2 208 16 -337 concat 4 270 336 -338 sub 4 337 173 -339 eq 1 208 336 -340 ite 4 339 173 174 -341 mul 4 274 340 -342 or 4 338 341 -343 slice 2 342 7 0 -344 ite 2 269 343 336 -345 ite 2 195 208 344 -346 ite 2 335 196 345 -347 ite 2 216 196 346 -348 ite 2 334 196 347 -349 ite 2 243 208 348 -350 ite 2 333 190 349 -351 ite 2 332 196 350 -352 ite 2 331 196 351 -353 ite 2 330 208 352 -354 ite 2 242 196 353 -355 ite 2 329 208 354 -356 ite 2 328 196 355 -357 ite 2 215 208 356 -358 xor 2 208 357 -359 next 2 16 358 -360 input 1 f55 -361 input 1 f54 -362 input 1 f51 -363 input 1 f50 -364 input 1 f49 -365 input 1 f48 -366 input 1 f46 -367 input 1 f44 -368 xor 2 208 18 -369 concat 4 270 368 -370 sub 4 369 173 -371 eq 1 208 368 -372 ite 4 371 173 174 -373 mul 4 274 372 -374 or 4 370 373 -375 slice 2 374 7 0 -376 ite 2 269 375 368 -377 ite 2 193 208 376 -378 ite 2 367 196 377 -379 ite 2 214 196 378 -380 ite 2 366 196 379 -381 ite 2 241 208 380 -382 ite 2 365 190 381 -383 ite 2 364 196 382 -384 ite 2 363 196 383 -385 ite 2 362 208 384 -386 ite 2 240 196 385 -387 ite 2 361 208 386 -388 ite 2 360 196 387 -389 ite 2 213 208 388 -390 xor 2 208 389 -391 next 2 18 390 -392 input 1 f69 -393 input 1 f68 -394 input 1 f65 -395 input 1 f64 -396 input 1 f63 -397 input 1 f62 -398 input 1 f60 -399 input 1 f58 -400 xor 2 208 20 -401 concat 4 270 400 -402 sub 4 401 173 -403 eq 1 208 400 -404 ite 4 403 173 174 -405 mul 4 274 404 -406 or 4 402 405 -407 slice 2 406 7 0 -408 ite 2 269 407 400 -409 ite 2 191 208 408 -410 ite 2 399 196 409 -411 ite 2 212 196 410 -412 ite 2 398 196 411 -413 ite 2 239 208 412 -414 ite 2 397 190 413 -415 ite 2 396 196 414 -416 ite 2 395 196 415 -417 ite 2 394 208 416 -418 ite 2 238 196 417 -419 ite 2 393 208 418 -420 ite 2 392 196 419 -421 ite 2 211 208 420 -422 xor 2 208 421 -423 next 2 20 422 -424 input 1 f83 -425 input 1 f82 -426 input 1 f79 -427 input 1 f78 -428 input 1 f77 -429 input 1 f76 -430 input 1 f74 -431 input 1 f72 -432 xor 2 208 22 -433 concat 4 270 432 -434 sub 4 433 173 -435 eq 1 208 432 -436 ite 4 435 173 174 -437 mul 4 274 436 -438 or 4 434 437 -439 slice 2 438 7 0 -440 ite 2 269 439 432 -441 ite 2 189 208 440 -442 ite 2 431 196 441 -443 ite 2 210 196 442 -444 ite 2 430 196 443 -445 ite 2 237 208 444 -446 ite 2 429 190 445 -447 ite 2 428 196 446 -448 ite 2 427 196 447 -449 ite 2 426 208 448 -450 ite 2 236 196 449 -451 ite 2 425 208 450 -452 ite 2 424 196 451 -453 ite 2 209 208 452 -454 xor 2 208 453 -455 next 2 22 454 -456 next 1 25 25 -457 and 1 -27 -199 -458 or 1 457 264 -459 or 1 458 262 -460 or 1 459 219 -461 next 1 27 -460 -462 next 1 29 29 -463 or 1 31 199 -464 and 1 463 -268 -465 next 1 31 464 -466 or 1 33 268 -467 and 1 466 -220 -468 next 1 33 467 -469 or 1 35 220 -470 and 1 469 -267 -471 and 1 470 -266 -472 next 1 35 471 -473 or 1 37 266 -474 and 1 473 -265 -475 next 1 37 474 -476 or 1 39 265 -477 and 1 476 -264 -478 and 1 477 -263 -479 next 1 39 478 -480 or 1 41 263 -481 input 1 f10 -482 and 1 480 -481 -483 next 1 41 482 -484 or 1 43 267 -485 and 1 484 -247 -486 next 1 43 485 -487 or 1 45 247 -488 or 1 487 481 -489 and 1 488 -246 -490 next 1 45 489 -491 or 1 47 246 -492 and 1 491 -262 -493 and 1 492 -261 -494 next 1 47 493 -495 or 1 49 261 -496 and 1 495 -219 -497 next 1 49 496 -498 and 1 -51 -197 -499 or 1 498 299 -500 or 1 499 297 -501 or 1 500 217 -502 next 1 51 -501 -503 next 1 53 53 -504 or 1 55 197 -505 and 1 504 -303 -506 next 1 55 505 -507 or 1 57 303 -508 and 1 507 -218 -509 next 1 57 508 -510 or 1 59 218 -511 and 1 510 -302 -512 and 1 511 -301 -513 next 1 59 512 -514 or 1 61 301 -515 and 1 514 -300 -516 next 1 61 515 -517 or 1 63 300 -518 and 1 517 -299 -519 and 1 518 -298 -520 next 1 63 519 -521 or 1 65 298 -522 input 1 f24 -523 and 1 521 -522 -524 next 1 65 523 -525 or 1 67 302 -526 and 1 525 -245 -527 next 1 67 526 -528 or 1 69 245 -529 or 1 528 522 -530 and 1 529 -244 -531 next 1 69 530 -532 or 1 71 244 -533 and 1 532 -297 -534 and 1 533 -296 -535 next 1 71 534 -536 or 1 73 296 -537 and 1 536 -217 -538 next 1 73 537 -539 and 1 -75 -195 -540 or 1 539 331 -541 or 1 540 329 -542 or 1 541 215 -543 next 1 75 -542 -544 next 1 77 77 -545 or 1 79 195 -546 and 1 545 -335 -547 next 1 79 546 -548 or 1 81 335 -549 and 1 548 -216 -550 next 1 81 549 -551 or 1 83 216 -552 and 1 551 -334 -553 and 1 552 -333 -554 next 1 83 553 -555 or 1 85 333 -556 and 1 555 -332 -557 next 1 85 556 -558 or 1 87 332 -559 and 1 558 -331 -560 and 1 559 -330 -561 next 1 87 560 -562 or 1 89 330 -563 input 1 f38 -564 and 1 562 -563 -565 next 1 89 564 -566 or 1 91 334 -567 and 1 566 -243 -568 next 1 91 567 -569 or 1 93 243 -570 or 1 569 563 -571 and 1 570 -242 -572 next 1 93 571 -573 or 1 95 242 -574 and 1 573 -329 -575 and 1 574 -328 -576 next 1 95 575 -577 or 1 97 328 -578 and 1 577 -215 -579 next 1 97 578 -580 and 1 -99 -193 -581 or 1 580 363 -582 or 1 581 361 -583 or 1 582 213 -584 next 1 99 -583 -585 next 1 101 101 -586 or 1 103 193 -587 and 1 586 -367 -588 next 1 103 587 -589 or 1 105 367 -590 and 1 589 -214 -591 next 1 105 590 -592 or 1 107 214 -593 and 1 592 -366 -594 and 1 593 -365 -595 next 1 107 594 -596 or 1 109 365 -597 and 1 596 -364 -598 next 1 109 597 -599 or 1 111 364 -600 and 1 599 -363 -601 and 1 600 -362 -602 next 1 111 601 -603 or 1 113 362 -604 input 1 f52 -605 and 1 603 -604 -606 next 1 113 605 -607 or 1 115 366 -608 and 1 607 -241 -609 next 1 115 608 -610 or 1 117 241 -611 or 1 610 604 -612 and 1 611 -240 -613 next 1 117 612 -614 or 1 119 240 -615 and 1 614 -361 -616 and 1 615 -360 -617 next 1 119 616 -618 or 1 121 360 -619 and 1 618 -213 -620 next 1 121 619 -621 and 1 -123 -191 -622 or 1 621 395 -623 or 1 622 393 -624 or 1 623 211 -625 next 1 123 -624 -626 next 1 125 125 -627 or 1 127 191 -628 and 1 627 -399 -629 next 1 127 628 -630 or 1 129 399 -631 and 1 630 -212 -632 next 1 129 631 -633 or 1 131 212 -634 and 1 633 -398 -635 and 1 634 -397 -636 next 1 131 635 -637 or 1 133 397 -638 and 1 637 -396 -639 next 1 133 638 -640 or 1 135 396 -641 and 1 640 -395 -642 and 1 641 -394 -643 next 1 135 642 -644 or 1 137 394 -645 input 1 f66 -646 and 1 644 -645 -647 next 1 137 646 -648 or 1 139 398 -649 and 1 648 -239 -650 next 1 139 649 -651 or 1 141 239 -652 or 1 651 645 -653 and 1 652 -238 -654 next 1 141 653 -655 or 1 143 238 -656 and 1 655 -393 -657 and 1 656 -392 -658 next 1 143 657 -659 or 1 145 392 -660 and 1 659 -211 -661 next 1 145 660 -662 and 1 -147 -189 -663 or 1 662 427 -664 or 1 663 425 -665 or 1 664 209 -666 next 1 147 -665 -667 next 1 149 149 -668 or 1 151 189 -669 and 1 668 -431 -670 next 1 151 669 -671 or 1 153 431 -672 and 1 671 -210 -673 next 1 153 672 -674 or 1 155 210 -675 and 1 674 -430 -676 and 1 675 -429 -677 next 1 155 676 -678 or 1 157 429 -679 and 1 678 -428 -680 next 1 157 679 -681 or 1 159 428 -682 and 1 681 -427 -683 and 1 682 -426 -684 next 1 159 683 -685 or 1 161 426 -686 input 1 f80 -687 and 1 685 -686 -688 next 1 161 687 -689 or 1 163 430 -690 and 1 689 -237 -691 next 1 163 690 -692 or 1 165 237 -693 or 1 692 686 -694 and 1 693 -236 -695 next 1 165 694 -696 or 1 167 236 -697 and 1 696 -425 -698 and 1 697 -424 -699 next 1 167 698 -700 or 1 169 424 -701 and 1 700 -209 -702 next 1 169 701 -703 eq 1 200 271 -704 eq 1 200 304 -705 and 1 -703 -704 -706 eq 1 200 336 -707 and 1 705 -706 -708 eq 1 200 368 -709 and 1 707 -708 -710 eq 1 200 400 -711 and 1 709 -710 -712 eq 1 200 432 -713 and 1 711 -712 -714 and 1 -25 713 -715 or 1 -269 714 -716 or 1 -27 -199 -717 and 1 715 716 -718 eq 1 208 221 -719 and 1 31 718 -720 or 1 -268 719 -721 and 1 717 720 -722 or 1 33 -220 -723 and 1 721 722 -724 eq 1 200 6 -725 and 1 35 724 -726 or 1 -267 725 -727 and 1 723 726 -728 or 1 43 -247 -729 and 1 727 728 -730 and 1 35 -724 -731 or 1 -266 730 -732 and 1 729 731 -733 and 1 37 703 -734 or 1 -265 733 -735 and 1 732 734 -736 eq 1 200 221 -737 and 1 39 -736 -738 or 1 -264 737 -739 and 1 735 738 -740 and 1 39 736 -741 or 1 -263 740 -742 and 1 739 741 -743 eq 1 200 10 -744 and 1 41 743 -745 or 1 -481 744 -746 and 1 742 745 -747 or 1 45 -246 -748 and 1 746 747 -749 and 1 47 -736 -750 or 1 -262 749 -751 and 1 748 750 -752 and 1 47 736 -753 or 1 -261 752 -754 and 1 751 753 -755 or 1 49 -219 -756 and 1 754 755 -757 or 1 -51 -197 -758 and 1 756 757 -759 and 1 55 718 -760 or 1 -303 759 -761 and 1 758 760 -762 or 1 57 -218 -763 and 1 761 762 -764 eq 1 198 6 -765 and 1 59 764 -766 or 1 -302 765 -767 and 1 763 766 -768 or 1 67 -245 -769 and 1 767 768 -770 and 1 59 -764 -771 or 1 -301 770 -772 and 1 769 771 -773 and 1 61 704 -774 or 1 -300 773 -775 and 1 772 774 -776 eq 1 198 221 -777 and 1 63 -776 -778 or 1 -299 777 -779 and 1 775 778 -780 and 1 63 776 -781 or 1 -298 780 -782 and 1 779 781 -783 and 1 65 743 -784 or 1 -522 783 -785 and 1 782 784 -786 or 1 69 -244 -787 and 1 785 786 -788 and 1 71 -776 -789 or 1 -297 788 -790 and 1 787 789 -791 and 1 71 776 -792 or 1 -296 791 -793 and 1 790 792 -794 or 1 73 -217 -795 and 1 793 794 -796 or 1 -75 -195 -797 and 1 795 796 -798 and 1 79 718 -799 or 1 -335 798 -800 and 1 797 799 -801 or 1 81 -216 -802 and 1 800 801 -803 eq 1 196 6 -804 and 1 83 803 -805 or 1 -334 804 -806 and 1 802 805 -807 or 1 91 -243 -808 and 1 806 807 -809 and 1 83 -803 -810 or 1 -333 809 -811 and 1 808 810 -812 and 1 85 706 -813 or 1 -332 812 -814 and 1 811 813 -815 eq 1 196 221 -816 and 1 87 -815 -817 or 1 -331 816 -818 and 1 814 817 -819 and 1 87 815 -820 or 1 -330 819 -821 and 1 818 820 -822 and 1 89 743 -823 or 1 -563 822 -824 and 1 821 823 -825 or 1 93 -242 -826 and 1 824 825 -827 and 1 95 -815 -828 or 1 -329 827 -829 and 1 826 828 -830 and 1 95 815 -831 or 1 -328 830 -832 and 1 829 831 -833 or 1 97 -215 -834 and 1 832 833 -835 or 1 -99 -193 -836 and 1 834 835 -837 and 1 103 718 -838 or 1 -367 837 -839 and 1 836 838 -840 or 1 105 -214 -841 and 1 839 840 -842 eq 1 194 6 -843 and 1 107 842 -844 or 1 -366 843 -845 and 1 841 844 -846 or 1 115 -241 -847 and 1 845 846 -848 and 1 107 -842 -849 or 1 -365 848 -850 and 1 847 849 -851 and 1 109 708 -852 or 1 -364 851 -853 and 1 850 852 -854 eq 1 194 221 -855 and 1 111 -854 -856 or 1 -363 855 -857 and 1 853 856 -858 and 1 111 854 -859 or 1 -362 858 -860 and 1 857 859 -861 and 1 113 743 -862 or 1 -604 861 -863 and 1 860 862 -864 or 1 117 -240 -865 and 1 863 864 -866 and 1 119 -854 -867 or 1 -361 866 -868 and 1 865 867 -869 and 1 119 854 -870 or 1 -360 869 -871 and 1 868 870 -872 or 1 121 -213 -873 and 1 871 872 -874 or 1 -123 -191 -875 and 1 873 874 -876 and 1 127 718 -877 or 1 -399 876 -878 and 1 875 877 -879 or 1 129 -212 -880 and 1 878 879 -881 eq 1 192 6 -882 and 1 131 881 -883 or 1 -398 882 -884 and 1 880 883 -885 or 1 139 -239 -886 and 1 884 885 -887 and 1 131 -881 -888 or 1 -397 887 -889 and 1 886 888 -890 and 1 133 710 -891 or 1 -396 890 -892 and 1 889 891 -893 eq 1 192 221 -894 and 1 135 -893 -895 or 1 -395 894 -896 and 1 892 895 -897 and 1 135 893 -898 or 1 -394 897 -899 and 1 896 898 -900 and 1 137 743 -901 or 1 -645 900 -902 and 1 899 901 -903 or 1 141 -238 -904 and 1 902 903 -905 and 1 143 -893 -906 or 1 -393 905 -907 and 1 904 906 -908 and 1 143 893 -909 or 1 -392 908 -910 and 1 907 909 -911 or 1 145 -211 -912 and 1 910 911 -913 or 1 -147 -189 -914 and 1 912 913 -915 and 1 151 718 -916 or 1 -431 915 -917 and 1 914 916 -918 or 1 153 -210 -919 and 1 917 918 -920 eq 1 190 6 -921 and 1 155 920 -922 or 1 -430 921 -923 and 1 919 922 -924 or 1 163 -237 -925 and 1 923 924 -926 and 1 155 -920 -927 or 1 -429 926 -928 and 1 925 927 -929 and 1 157 712 -930 or 1 -428 929 -931 and 1 928 930 -932 eq 1 190 221 -933 and 1 159 -932 -934 or 1 -427 933 -935 and 1 931 934 -936 and 1 159 932 -937 or 1 -426 936 -938 and 1 935 937 -939 and 1 161 743 -940 or 1 -686 939 -941 and 1 938 940 -942 or 1 165 -236 -943 and 1 941 942 -944 and 1 167 -932 -945 or 1 -425 944 -946 and 1 943 945 -947 and 1 167 932 -948 or 1 -424 947 -949 and 1 946 948 -950 or 1 169 -209 -951 and 1 949 950 -952 or 1 269 199 -953 or 1 268 952 -954 or 1 220 953 -955 or 1 267 954 -956 or 1 247 955 -957 or 1 266 956 -958 or 1 265 957 -959 or 1 264 958 -960 or 1 263 959 -961 or 1 481 960 -962 or 1 246 961 -963 or 1 262 962 -964 or 1 261 963 -965 or 1 219 964 -966 or 1 197 965 -967 or 1 303 966 -968 or 1 218 967 -969 or 1 302 968 -970 or 1 245 969 -971 or 1 301 970 -972 or 1 300 971 -973 or 1 299 972 -974 or 1 298 973 -975 or 1 522 974 -976 or 1 244 975 -977 or 1 297 976 -978 or 1 296 977 -979 or 1 217 978 -980 or 1 195 979 -981 or 1 335 980 -982 or 1 216 981 -983 or 1 334 982 -984 or 1 243 983 -985 or 1 333 984 -986 or 1 332 985 -987 or 1 331 986 -988 or 1 330 987 -989 or 1 563 988 -990 or 1 242 989 -991 or 1 329 990 -992 or 1 328 991 -993 or 1 215 992 -994 or 1 193 993 -995 or 1 367 994 -996 or 1 214 995 -997 or 1 366 996 -998 or 1 241 997 -999 or 1 365 998 -1000 or 1 364 999 -1001 or 1 363 1000 -1002 or 1 362 1001 -1003 or 1 604 1002 -1004 or 1 240 1003 -1005 or 1 361 1004 -1006 or 1 360 1005 -1007 or 1 213 1006 -1008 or 1 191 1007 -1009 or 1 399 1008 -1010 or 1 212 1009 -1011 or 1 398 1010 -1012 or 1 239 1011 -1013 or 1 397 1012 -1014 or 1 396 1013 -1015 or 1 395 1014 -1016 or 1 394 1015 -1017 or 1 645 1016 -1018 or 1 238 1017 -1019 or 1 393 1018 -1020 or 1 392 1019 -1021 or 1 211 1020 -1022 or 1 189 1021 -1023 or 1 431 1022 -1024 or 1 210 1023 -1025 or 1 430 1024 -1026 or 1 237 1025 -1027 or 1 429 1026 -1028 or 1 428 1027 -1029 or 1 427 1028 -1030 or 1 426 1029 -1031 or 1 686 1030 -1032 or 1 236 1031 -1033 or 1 425 1032 -1034 or 1 424 1033 -1035 or 1 209 1034 -1036 and 1 951 1035 -1037 and 1 269 199 -1038 and 1 268 952 -1039 or 1 1037 1038 -1040 and 1 220 953 -1041 or 1 1039 1040 -1042 and 1 267 954 -1043 or 1 1041 1042 -1044 and 1 247 955 -1045 or 1 1043 1044 -1046 and 1 266 956 -1047 or 1 1045 1046 -1048 and 1 265 957 -1049 or 1 1047 1048 -1050 and 1 264 958 -1051 or 1 1049 1050 -1052 and 1 263 959 -1053 or 1 1051 1052 -1054 and 1 481 960 -1055 or 1 1053 1054 -1056 and 1 246 961 -1057 or 1 1055 1056 -1058 and 1 262 962 -1059 or 1 1057 1058 -1060 and 1 261 963 -1061 or 1 1059 1060 -1062 and 1 219 964 -1063 or 1 1061 1062 -1064 and 1 197 965 -1065 or 1 1063 1064 -1066 and 1 303 966 -1067 or 1 1065 1066 -1068 and 1 218 967 -1069 or 1 1067 1068 -1070 and 1 302 968 -1071 or 1 1069 1070 -1072 and 1 245 969 -1073 or 1 1071 1072 -1074 and 1 301 970 -1075 or 1 1073 1074 -1076 and 1 300 971 -1077 or 1 1075 1076 -1078 and 1 299 972 -1079 or 1 1077 1078 -1080 and 1 298 973 -1081 or 1 1079 1080 -1082 and 1 522 974 -1083 or 1 1081 1082 -1084 and 1 244 975 -1085 or 1 1083 1084 -1086 and 1 297 976 -1087 or 1 1085 1086 -1088 and 1 296 977 -1089 or 1 1087 1088 -1090 and 1 217 978 -1091 or 1 1089 1090 -1092 and 1 195 979 -1093 or 1 1091 1092 -1094 and 1 335 980 -1095 or 1 1093 1094 -1096 and 1 216 981 -1097 or 1 1095 1096 -1098 and 1 334 982 -1099 or 1 1097 1098 -1100 and 1 243 983 -1101 or 1 1099 1100 -1102 and 1 333 984 -1103 or 1 1101 1102 -1104 and 1 332 985 -1105 or 1 1103 1104 -1106 and 1 331 986 -1107 or 1 1105 1106 -1108 and 1 330 987 -1109 or 1 1107 1108 -1110 and 1 563 988 -1111 or 1 1109 1110 -1112 and 1 242 989 -1113 or 1 1111 1112 -1114 and 1 329 990 -1115 or 1 1113 1114 -1116 and 1 328 991 -1117 or 1 1115 1116 -1118 and 1 215 992 -1119 or 1 1117 1118 -1120 and 1 193 993 -1121 or 1 1119 1120 -1122 and 1 367 994 -1123 or 1 1121 1122 -1124 and 1 214 995 -1125 or 1 1123 1124 -1126 and 1 366 996 -1127 or 1 1125 1126 -1128 and 1 241 997 -1129 or 1 1127 1128 -1130 and 1 365 998 -1131 or 1 1129 1130 -1132 and 1 364 999 -1133 or 1 1131 1132 -1134 and 1 363 1000 -1135 or 1 1133 1134 -1136 and 1 362 1001 -1137 or 1 1135 1136 -1138 and 1 604 1002 -1139 or 1 1137 1138 -1140 and 1 240 1003 -1141 or 1 1139 1140 -1142 and 1 361 1004 -1143 or 1 1141 1142 -1144 and 1 360 1005 -1145 or 1 1143 1144 -1146 and 1 213 1006 -1147 or 1 1145 1146 -1148 and 1 191 1007 -1149 or 1 1147 1148 -1150 and 1 399 1008 -1151 or 1 1149 1150 -1152 and 1 212 1009 -1153 or 1 1151 1152 -1154 and 1 398 1010 -1155 or 1 1153 1154 -1156 and 1 239 1011 -1157 or 1 1155 1156 -1158 and 1 397 1012 -1159 or 1 1157 1158 -1160 and 1 396 1013 -1161 or 1 1159 1160 -1162 and 1 395 1014 -1163 or 1 1161 1162 -1164 and 1 394 1015 -1165 or 1 1163 1164 -1166 and 1 645 1016 -1167 or 1 1165 1166 -1168 and 1 238 1017 -1169 or 1 1167 1168 -1170 and 1 393 1018 -1171 or 1 1169 1170 -1172 and 1 392 1019 -1173 or 1 1171 1172 -1174 and 1 211 1020 -1175 or 1 1173 1174 -1176 and 1 189 1021 -1177 or 1 1175 1176 -1178 and 1 431 1022 -1179 or 1 1177 1178 -1180 and 1 210 1023 -1181 or 1 1179 1180 -1182 and 1 430 1024 -1183 or 1 1181 1182 -1184 and 1 237 1025 -1185 or 1 1183 1184 -1186 and 1 429 1026 -1187 or 1 1185 1186 -1188 and 1 428 1027 -1189 or 1 1187 1188 -1190 and 1 427 1028 -1191 or 1 1189 1190 -1192 and 1 426 1029 -1193 or 1 1191 1192 -1194 and 1 686 1030 -1195 or 1 1193 1194 -1196 and 1 236 1031 -1197 or 1 1195 1196 -1198 and 1 425 1032 -1199 or 1 1197 1198 -1200 and 1 424 1033 -1201 or 1 1199 1200 -1202 and 1 209 1034 -1203 or 1 1201 1202 -1204 and 1 1036 -1203 -1205 and 1 -27 29 -1206 or 1 -27 29 -1207 and 1 31 1206 -1208 or 1 1205 1207 -1209 or 1 31 1206 -1210 and 1 33 1209 -1211 or 1 1208 1210 -1212 or 1 33 1209 -1213 and 1 35 1212 -1214 or 1 1211 1213 -1215 or 1 35 1212 -1216 and 1 37 1215 -1217 or 1 1214 1216 -1218 or 1 37 1215 -1219 and 1 39 1218 -1220 or 1 1217 1219 -1221 or 1 39 1218 -1222 and 1 41 1221 -1223 or 1 1220 1222 -1224 or 1 41 1221 -1225 and 1 43 1224 -1226 or 1 1223 1225 -1227 or 1 43 1224 -1228 and 1 45 1227 -1229 or 1 1226 1228 -1230 or 1 45 1227 -1231 and 1 47 1230 -1232 or 1 1229 1231 -1233 or 1 47 1230 -1234 and 1 49 1233 -1235 or 1 1232 1234 -1236 and 1 -25 -1235 -1237 or 1 49 1233 -1238 and 1 1236 1237 -1239 and 1 -51 53 -1240 or 1 -51 53 -1241 and 1 55 1240 -1242 or 1 1239 1241 -1243 or 1 55 1240 -1244 and 1 57 1243 -1245 or 1 1242 1244 -1246 or 1 57 1243 -1247 and 1 59 1246 -1248 or 1 1245 1247 -1249 or 1 59 1246 -1250 and 1 61 1249 -1251 or 1 1248 1250 -1252 or 1 61 1249 -1253 and 1 63 1252 -1254 or 1 1251 1253 -1255 or 1 63 1252 -1256 and 1 65 1255 -1257 or 1 1254 1256 -1258 or 1 65 1255 -1259 and 1 67 1258 -1260 or 1 1257 1259 -1261 or 1 67 1258 -1262 and 1 69 1261 -1263 or 1 1260 1262 -1264 or 1 69 1261 -1265 and 1 71 1264 -1266 or 1 1263 1265 -1267 or 1 71 1264 -1268 and 1 73 1267 -1269 or 1 1266 1268 -1270 and 1 1238 -1269 -1271 or 1 73 1267 -1272 and 1 1270 1271 -1273 and 1 -75 77 -1274 or 1 -75 77 -1275 and 1 79 1274 -1276 or 1 1273 1275 -1277 or 1 79 1274 -1278 and 1 81 1277 -1279 or 1 1276 1278 -1280 or 1 81 1277 -1281 and 1 83 1280 -1282 or 1 1279 1281 -1283 or 1 83 1280 -1284 and 1 85 1283 -1285 or 1 1282 1284 -1286 or 1 85 1283 -1287 and 1 87 1286 -1288 or 1 1285 1287 -1289 or 1 87 1286 -1290 and 1 89 1289 -1291 or 1 1288 1290 -1292 or 1 89 1289 -1293 and 1 91 1292 -1294 or 1 1291 1293 -1295 or 1 91 1292 -1296 and 1 93 1295 -1297 or 1 1294 1296 -1298 or 1 93 1295 -1299 and 1 95 1298 -1300 or 1 1297 1299 -1301 or 1 95 1298 -1302 and 1 97 1301 -1303 or 1 1300 1302 -1304 and 1 1272 -1303 -1305 or 1 97 1301 -1306 and 1 1304 1305 -1307 and 1 -99 101 -1308 or 1 -99 101 -1309 and 1 103 1308 -1310 or 1 1307 1309 -1311 or 1 103 1308 -1312 and 1 105 1311 -1313 or 1 1310 1312 -1314 or 1 105 1311 -1315 and 1 107 1314 -1316 or 1 1313 1315 -1317 or 1 107 1314 -1318 and 1 109 1317 -1319 or 1 1316 1318 -1320 or 1 109 1317 -1321 and 1 111 1320 -1322 or 1 1319 1321 -1323 or 1 111 1320 -1324 and 1 113 1323 -1325 or 1 1322 1324 -1326 or 1 113 1323 -1327 and 1 115 1326 -1328 or 1 1325 1327 -1329 or 1 115 1326 -1330 and 1 117 1329 -1331 or 1 1328 1330 -1332 or 1 117 1329 -1333 and 1 119 1332 -1334 or 1 1331 1333 -1335 or 1 119 1332 -1336 and 1 121 1335 -1337 or 1 1334 1336 -1338 and 1 1306 -1337 -1339 or 1 121 1335 -1340 and 1 1338 1339 -1341 and 1 -123 125 -1342 or 1 -123 125 -1343 and 1 127 1342 -1344 or 1 1341 1343 -1345 or 1 127 1342 -1346 and 1 129 1345 -1347 or 1 1344 1346 -1348 or 1 129 1345 -1349 and 1 131 1348 -1350 or 1 1347 1349 -1351 or 1 131 1348 -1352 and 1 133 1351 -1353 or 1 1350 1352 -1354 or 1 133 1351 -1355 and 1 135 1354 -1356 or 1 1353 1355 -1357 or 1 135 1354 -1358 and 1 137 1357 -1359 or 1 1356 1358 -1360 or 1 137 1357 -1361 and 1 139 1360 -1362 or 1 1359 1361 -1363 or 1 139 1360 -1364 and 1 141 1363 -1365 or 1 1362 1364 -1366 or 1 141 1363 -1367 and 1 143 1366 -1368 or 1 1365 1367 -1369 or 1 143 1366 -1370 and 1 145 1369 -1371 or 1 1368 1370 -1372 and 1 1340 -1371 -1373 or 1 145 1369 -1374 and 1 1372 1373 -1375 and 1 -147 149 -1376 or 1 -147 149 -1377 and 1 151 1376 -1378 or 1 1375 1377 -1379 or 1 151 1376 -1380 and 1 153 1379 -1381 or 1 1378 1380 -1382 or 1 153 1379 -1383 and 1 155 1382 -1384 or 1 1381 1383 -1385 or 1 155 1382 -1386 and 1 157 1385 -1387 or 1 1384 1386 -1388 or 1 157 1385 -1389 and 1 159 1388 -1390 or 1 1387 1389 -1391 or 1 159 1388 -1392 and 1 161 1391 -1393 or 1 1390 1392 -1394 or 1 161 1391 -1395 and 1 163 1394 -1396 or 1 1393 1395 -1397 or 1 163 1394 -1398 and 1 165 1397 -1399 or 1 1396 1398 -1400 or 1 165 1397 -1401 and 1 167 1400 -1402 or 1 1399 1401 -1403 or 1 167 1400 -1404 and 1 169 1403 -1405 or 1 1402 1404 -1406 and 1 1374 -1405 -1407 or 1 169 1403 -1408 and 1 1406 1407 -1409 and 1 1204 1408 -1410 and 1 29 460 -1411 or 1 29 460 -1412 and 1 464 1411 -1413 or 1 1410 1412 -1414 or 1 464 1411 -1415 and 1 467 1414 -1416 or 1 1413 1415 -1417 or 1 467 1414 -1418 and 1 471 1417 -1419 or 1 1416 1418 -1420 or 1 471 1417 -1421 and 1 474 1420 -1422 or 1 1419 1421 -1423 or 1 474 1420 -1424 and 1 478 1423 -1425 or 1 1422 1424 -1426 or 1 478 1423 -1427 and 1 482 1426 -1428 or 1 1425 1427 -1429 or 1 482 1426 -1430 and 1 485 1429 -1431 or 1 1428 1430 -1432 or 1 485 1429 -1433 and 1 489 1432 -1434 or 1 1431 1433 -1435 or 1 489 1432 -1436 and 1 493 1435 -1437 or 1 1434 1436 -1438 or 1 493 1435 -1439 and 1 496 1438 -1440 or 1 1437 1439 -1441 and 1 -25 -1440 -1442 or 1 496 1438 -1443 and 1 1441 1442 -1444 and 1 53 501 -1445 or 1 53 501 -1446 and 1 505 1445 -1447 or 1 1444 1446 -1448 or 1 505 1445 -1449 and 1 508 1448 -1450 or 1 1447 1449 -1451 or 1 508 1448 -1452 and 1 512 1451 -1453 or 1 1450 1452 -1454 or 1 512 1451 -1455 and 1 515 1454 -1456 or 1 1453 1455 -1457 or 1 515 1454 -1458 and 1 519 1457 -1459 or 1 1456 1458 -1460 or 1 519 1457 -1461 and 1 523 1460 -1462 or 1 1459 1461 -1463 or 1 523 1460 -1464 and 1 526 1463 -1465 or 1 1462 1464 -1466 or 1 526 1463 -1467 and 1 530 1466 -1468 or 1 1465 1467 -1469 or 1 530 1466 -1470 and 1 534 1469 -1471 or 1 1468 1470 -1472 or 1 534 1469 -1473 and 1 537 1472 -1474 or 1 1471 1473 -1475 and 1 1443 -1474 -1476 or 1 537 1472 -1477 and 1 1475 1476 -1478 and 1 77 542 -1479 or 1 77 542 -1480 and 1 546 1479 -1481 or 1 1478 1480 -1482 or 1 546 1479 -1483 and 1 549 1482 -1484 or 1 1481 1483 -1485 or 1 549 1482 -1486 and 1 553 1485 -1487 or 1 1484 1486 -1488 or 1 553 1485 -1489 and 1 556 1488 -1490 or 1 1487 1489 -1491 or 1 556 1488 -1492 and 1 560 1491 -1493 or 1 1490 1492 -1494 or 1 560 1491 -1495 and 1 564 1494 -1496 or 1 1493 1495 -1497 or 1 564 1494 -1498 and 1 567 1497 -1499 or 1 1496 1498 -1500 or 1 567 1497 -1501 and 1 571 1500 -1502 or 1 1499 1501 -1503 or 1 571 1500 -1504 and 1 575 1503 -1505 or 1 1502 1504 -1506 or 1 575 1503 -1507 and 1 578 1506 -1508 or 1 1505 1507 -1509 and 1 1477 -1508 -1510 or 1 578 1506 -1511 and 1 1509 1510 -1512 and 1 101 583 -1513 or 1 101 583 -1514 and 1 587 1513 -1515 or 1 1512 1514 -1516 or 1 587 1513 -1517 and 1 590 1516 -1518 or 1 1515 1517 -1519 or 1 590 1516 -1520 and 1 594 1519 -1521 or 1 1518 1520 -1522 or 1 594 1519 -1523 and 1 597 1522 -1524 or 1 1521 1523 -1525 or 1 597 1522 -1526 and 1 601 1525 -1527 or 1 1524 1526 -1528 or 1 601 1525 -1529 and 1 605 1528 -1530 or 1 1527 1529 -1531 or 1 605 1528 -1532 and 1 608 1531 -1533 or 1 1530 1532 -1534 or 1 608 1531 -1535 and 1 612 1534 -1536 or 1 1533 1535 -1537 or 1 612 1534 -1538 and 1 616 1537 -1539 or 1 1536 1538 -1540 or 1 616 1537 -1541 and 1 619 1540 -1542 or 1 1539 1541 -1543 and 1 1511 -1542 -1544 or 1 619 1540 -1545 and 1 1543 1544 -1546 and 1 125 624 -1547 or 1 125 624 -1548 and 1 628 1547 -1549 or 1 1546 1548 -1550 or 1 628 1547 -1551 and 1 631 1550 -1552 or 1 1549 1551 -1553 or 1 631 1550 -1554 and 1 635 1553 -1555 or 1 1552 1554 -1556 or 1 635 1553 -1557 and 1 638 1556 -1558 or 1 1555 1557 -1559 or 1 638 1556 -1560 and 1 642 1559 -1561 or 1 1558 1560 -1562 or 1 642 1559 -1563 and 1 646 1562 -1564 or 1 1561 1563 -1565 or 1 646 1562 -1566 and 1 649 1565 -1567 or 1 1564 1566 -1568 or 1 649 1565 -1569 and 1 653 1568 -1570 or 1 1567 1569 -1571 or 1 653 1568 -1572 and 1 657 1571 -1573 or 1 1570 1572 -1574 or 1 657 1571 -1575 and 1 660 1574 -1576 or 1 1573 1575 -1577 and 1 1545 -1576 -1578 or 1 660 1574 -1579 and 1 1577 1578 -1580 and 1 149 665 -1581 or 1 149 665 -1582 and 1 669 1581 -1583 or 1 1580 1582 -1584 or 1 669 1581 -1585 and 1 672 1584 -1586 or 1 1583 1585 -1587 or 1 672 1584 -1588 and 1 676 1587 -1589 or 1 1586 1588 -1590 or 1 676 1587 -1591 and 1 679 1590 -1592 or 1 1589 1591 -1593 or 1 679 1590 -1594 and 1 683 1593 -1595 or 1 1592 1594 -1596 or 1 683 1593 -1597 and 1 687 1596 -1598 or 1 1595 1597 -1599 or 1 687 1596 -1600 and 1 690 1599 -1601 or 1 1598 1600 -1602 or 1 690 1599 -1603 and 1 694 1602 -1604 or 1 1601 1603 -1605 or 1 694 1602 -1606 and 1 698 1605 -1607 or 1 1604 1606 -1608 or 1 698 1605 -1609 and 1 701 1608 -1610 or 1 1607 1609 -1611 and 1 1579 -1610 -1612 or 1 701 1608 -1613 and 1 1611 1612 -1614 and 1 1409 1613 -1615 and 1 1614 -171 -1616 next 1 171 -1615 -; End - - diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/fib_30.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/fib_30.btor2 deleted file mode 100644 index 38ce5f4cfe..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/fib_30.btor2 +++ /dev/null @@ -1,40 +0,0 @@ -; source: https://doi.org/10.5281/zenodo.14156844 -; BTOR description generated by Yosys 0.29+34 (git sha1 57c9eb70f, clang 10.0.0-4ubuntu1 -fPIC -Os) for module top. -1 sort bitvec 1 -2 input 1 clk ; fib_30.v:3.16-3.19 -3 input 1 rst ; fib_30.v:4.16-4.19 -4 input 1 selector ; fib_30.v:2.16-2.24 -5 sort bitvec 19 -6 const 5 0000000000000000000 -7 state 5 -8 init 5 7 6 -9 output 7 c ; fib_30.v:9.23-9.24 -10 state 5 -11 init 5 10 6 -12 output 10 i ; fib_30.v:7.23-7.24 -13 const 5 0000000000010010110 -14 state 5 -15 init 5 14 13 -16 output 14 n ; fib_30.v:8.23-8.24 -17 ult 1 10 14 -18 const 1 0 -19 uext 5 18 18 -20 ugt 1 7 19 -21 or 1 17 20 -22 const 1 1 -23 not 1 21 -24 and 1 22 23 -25 add 5 7 10 -26 ugte 1 10 14 -27 ite 5 26 7 25 -28 ite 5 3 6 27 -29 next 5 7 28 -30 uext 5 22 18 -31 add 5 10 30 -32 ite 5 26 10 31 -33 ite 5 3 6 32 -34 next 5 10 33 -35 ite 5 3 13 14 -36 next 5 14 35 -37 bad 24 -; end of yosys output diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/fib_37.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/fib_37.btor2 deleted file mode 100644 index e28b8531eb..0000000000 --- a/subprojects/xcfa/btor2xcfa/src/test/resources/fib_37.btor2 +++ /dev/null @@ -1,44 +0,0 @@ -; source: https://doi.org/10.5281/zenodo.14156844 -; BTOR description generated by Yosys 0.29+34 (git sha1 57c9eb70f, clang 10.0.0-4ubuntu1 -fPIC -Os) for module top. -1 sort bitvec 1 -2 input 1 clk ; fib_37.v:3.16-3.19 -3 input 1 rst ; fib_37.v:4.16-4.19 -4 input 1 selector ; fib_37.v:2.16-2.24 -5 sort bitvec 19 -6 const 5 0000000000000000000 -7 state 5 -8 init 5 7 6 -9 output 7 m ; fib_37.v:6.23-6.24 -10 const 5 0000000000011001000 -11 state 5 -12 init 5 11 10 -13 output 11 n ; fib_37.v:7.23-7.24 -14 state 5 -15 init 5 14 6 -16 output 14 x ; fib_37.v:8.23-8.24 -17 ult 1 14 11 -18 ult 1 7 11 -19 const 1 0 -20 uext 5 19 18 -21 ugte 1 7 20 -22 and 1 18 21 -23 or 1 17 22 -24 const 1 1 -25 not 1 23 -26 and 1 24 25 -27 ite 5 4 14 7 -28 ite 5 17 27 7 -29 ugte 1 14 11 -30 ite 5 29 7 28 -31 ite 5 3 6 30 -32 next 5 7 31 -33 ite 5 3 10 11 -34 next 5 11 33 -35 uext 5 24 18 -36 add 5 14 35 -37 ite 5 17 36 14 -38 ite 5 29 14 37 -39 ite 5 3 6 38 -40 next 5 14 39 -41 bad 26 -; end of yosys output From d9f16d6ca71c9af488c3740134abbd87a3f969f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Fri, 11 Jul 2025 14:35:58 +0200 Subject: [PATCH 48/72] Operation negations updated --- .../theta/frontend/models/Btor2Operation.kt | 16 +- .../resources/loyd.3.prop1-func-interl.btor2 | 504 ++++++++++++++++++ 2 files changed, 512 insertions(+), 8 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/loyd.3.prop1-func-interl.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 7d31b46fc1..b9d576b7b1 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -150,12 +150,12 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor return when(operator) { Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) - Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) - Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) - Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) - Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) - Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) - Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) + Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr))) + Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr))) + Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) + Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr))) + Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) Btor2BinaryOperator.SUB -> BvSubExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) @@ -173,9 +173,9 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") } } diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/loyd.3.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/loyd.3.prop1-func-interl.btor2 new file mode 100644 index 0000000000..0a38156e47 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/loyd.3.prop1-func-interl.btor2 @@ -0,0 +1,504 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 v_a_0 +7 init 2 6 5 +8 state 2 v_a_1 +9 init 2 8 5 +10 state 2 v_a_2 +11 init 2 10 5 +12 state 2 v_a_3 +13 init 2 12 5 +14 state 2 v_a_4 +15 init 2 14 5 +16 state 2 v_a_5 +17 init 2 16 5 +18 state 2 v_a_6 +19 init 2 18 5 +20 state 2 v_a_7 +21 init 2 20 5 +22 state 2 v_a_8 +23 init 2 22 5 +24 state 2 v_a_9 +25 init 2 24 5 +26 state 2 v_a_10 +27 init 2 26 5 +28 state 2 v_a_11 +29 init 2 28 5 +30 state 2 v_x +31 init 2 30 5 +32 state 2 v_y +33 init 2 32 5 +34 zero 1 +35 state 1 a_q +36 init 1 35 34 +37 state 1 a_not_done +38 init 1 37 34 +39 state 1 a_done +40 init 1 39 34 +41 state 1 dve_invalid +42 init 1 41 34 +43 and 1 39 -41 +44 bad 43 +45 input 1 f3 +46 constd 4 0 +47 constd 3 0 +48 concat 4 47 30 +49 constd 4 4 +50 concat 4 47 32 +51 mul 4 49 50 +52 add 4 48 51 +53 eq 1 46 52 +54 constd 4 1 +55 add 4 54 50 +56 mul 4 49 55 +57 add 4 48 56 +58 eq 1 46 57 +59 or 1 53 58 +60 and 1 45 59 +61 constd 2 0 +62 eq 1 54 57 +63 constd 2 1 +64 xor 2 63 8 +65 constd 4 2 +66 eq 1 65 57 +67 constd 2 2 +68 xor 2 67 10 +69 constd 4 3 +70 eq 1 69 57 +71 constd 2 3 +72 xor 2 71 12 +73 eq 1 49 57 +74 constd 2 4 +75 xor 2 74 14 +76 constd 4 5 +77 eq 1 76 57 +78 constd 2 5 +79 xor 2 78 16 +80 constd 4 6 +81 eq 1 80 57 +82 constd 2 6 +83 xor 2 82 18 +84 constd 4 7 +85 eq 1 84 57 +86 constd 2 7 +87 xor 2 86 20 +88 constd 4 8 +89 eq 1 88 57 +90 constd 2 8 +91 xor 2 90 22 +92 constd 4 9 +93 eq 1 92 57 +94 constd 2 9 +95 xor 2 94 24 +96 constd 4 10 +97 eq 1 96 57 +98 constd 2 10 +99 xor 2 98 26 +100 constd 2 11 +101 xor 2 100 28 +102 ite 2 97 99 101 +103 ite 2 93 95 102 +104 ite 2 89 91 103 +105 ite 2 85 87 104 +106 ite 2 81 83 105 +107 ite 2 77 79 106 +108 ite 2 73 75 107 +109 ite 2 70 72 108 +110 ite 2 66 68 109 +111 ite 2 62 64 110 +112 ite 2 58 6 111 +113 ite 2 58 61 112 +114 input 1 f2 +115 sub 4 50 54 +116 mul 4 49 115 +117 add 4 48 116 +118 eq 1 46 117 +119 or 1 53 118 +120 and 1 114 119 +121 eq 1 54 117 +122 eq 1 65 117 +123 eq 1 69 117 +124 eq 1 49 117 +125 eq 1 76 117 +126 eq 1 80 117 +127 eq 1 84 117 +128 eq 1 88 117 +129 eq 1 92 117 +130 eq 1 96 117 +131 ite 2 130 99 101 +132 ite 2 129 95 131 +133 ite 2 128 91 132 +134 ite 2 127 87 133 +135 ite 2 126 83 134 +136 ite 2 125 79 135 +137 ite 2 124 75 136 +138 ite 2 123 72 137 +139 ite 2 122 68 138 +140 ite 2 121 64 139 +141 ite 2 118 6 140 +142 ite 2 118 61 141 +143 input 1 f1 +144 add 4 54 52 +145 eq 1 46 144 +146 or 1 53 145 +147 and 1 143 146 +148 eq 1 54 144 +149 eq 1 65 144 +150 eq 1 69 144 +151 eq 1 49 144 +152 eq 1 76 144 +153 eq 1 80 144 +154 eq 1 84 144 +155 eq 1 88 144 +156 eq 1 92 144 +157 eq 1 96 144 +158 ite 2 157 99 101 +159 ite 2 156 95 158 +160 ite 2 155 91 159 +161 ite 2 154 87 160 +162 ite 2 153 83 161 +163 ite 2 152 79 162 +164 ite 2 151 75 163 +165 ite 2 150 72 164 +166 ite 2 149 68 165 +167 ite 2 148 64 166 +168 ite 2 145 6 167 +169 ite 2 145 61 168 +170 input 1 f0 +171 sub 4 52 54 +172 eq 1 46 171 +173 or 1 172 53 +174 and 1 170 173 +175 eq 1 54 171 +176 eq 1 65 171 +177 eq 1 69 171 +178 eq 1 49 171 +179 eq 1 76 171 +180 eq 1 80 171 +181 eq 1 84 171 +182 eq 1 88 171 +183 eq 1 92 171 +184 eq 1 96 171 +185 ite 2 184 99 101 +186 ite 2 183 95 185 +187 ite 2 182 91 186 +188 ite 2 181 87 187 +189 ite 2 180 83 188 +190 ite 2 179 79 189 +191 ite 2 178 75 190 +192 ite 2 177 72 191 +193 ite 2 176 68 192 +194 ite 2 175 64 193 +195 ite 2 172 6 194 +196 ite 2 172 61 195 +197 ite 2 174 196 6 +198 ite 2 147 169 197 +199 ite 2 120 142 198 +200 ite 2 60 113 199 +201 next 2 6 200 +202 eq 1 54 52 +203 or 1 202 62 +204 and 1 45 203 +205 ite 2 62 61 112 +206 or 1 202 121 +207 and 1 114 206 +208 ite 2 121 61 141 +209 or 1 202 148 +210 and 1 143 209 +211 ite 2 148 61 168 +212 or 1 175 202 +213 and 1 170 212 +214 ite 2 175 61 195 +215 ite 2 213 214 64 +216 ite 2 210 211 215 +217 ite 2 207 208 216 +218 ite 2 204 205 217 +219 xor 2 63 218 +220 next 2 8 219 +221 eq 1 65 52 +222 or 1 221 66 +223 and 1 45 222 +224 ite 2 66 61 112 +225 or 1 221 122 +226 and 1 114 225 +227 ite 2 122 61 141 +228 or 1 221 149 +229 and 1 143 228 +230 ite 2 149 61 168 +231 or 1 176 221 +232 and 1 170 231 +233 ite 2 176 61 195 +234 ite 2 232 233 68 +235 ite 2 229 230 234 +236 ite 2 226 227 235 +237 ite 2 223 224 236 +238 xor 2 67 237 +239 next 2 10 238 +240 eq 1 69 52 +241 or 1 240 70 +242 and 1 45 241 +243 ite 2 70 61 112 +244 or 1 240 123 +245 and 1 114 244 +246 ite 2 123 61 141 +247 or 1 240 150 +248 and 1 143 247 +249 ite 2 150 61 168 +250 or 1 177 240 +251 and 1 170 250 +252 ite 2 177 61 195 +253 ite 2 251 252 72 +254 ite 2 248 249 253 +255 ite 2 245 246 254 +256 ite 2 242 243 255 +257 xor 2 71 256 +258 next 2 12 257 +259 eq 1 49 52 +260 or 1 259 73 +261 and 1 45 260 +262 ite 2 73 61 112 +263 or 1 259 124 +264 and 1 114 263 +265 ite 2 124 61 141 +266 or 1 259 151 +267 and 1 143 266 +268 ite 2 151 61 168 +269 or 1 178 259 +270 and 1 170 269 +271 ite 2 178 61 195 +272 ite 2 270 271 75 +273 ite 2 267 268 272 +274 ite 2 264 265 273 +275 ite 2 261 262 274 +276 xor 2 74 275 +277 next 2 14 276 +278 eq 1 76 52 +279 or 1 278 77 +280 and 1 45 279 +281 ite 2 77 61 112 +282 or 1 278 125 +283 and 1 114 282 +284 ite 2 125 61 141 +285 or 1 278 152 +286 and 1 143 285 +287 ite 2 152 61 168 +288 or 1 179 278 +289 and 1 170 288 +290 ite 2 179 61 195 +291 ite 2 289 290 79 +292 ite 2 286 287 291 +293 ite 2 283 284 292 +294 ite 2 280 281 293 +295 xor 2 78 294 +296 next 2 16 295 +297 eq 1 80 52 +298 or 1 297 81 +299 and 1 45 298 +300 ite 2 81 61 112 +301 or 1 297 126 +302 and 1 114 301 +303 ite 2 126 61 141 +304 or 1 297 153 +305 and 1 143 304 +306 ite 2 153 61 168 +307 or 1 180 297 +308 and 1 170 307 +309 ite 2 180 61 195 +310 ite 2 308 309 83 +311 ite 2 305 306 310 +312 ite 2 302 303 311 +313 ite 2 299 300 312 +314 xor 2 82 313 +315 next 2 18 314 +316 eq 1 84 52 +317 or 1 316 85 +318 and 1 45 317 +319 ite 2 85 61 112 +320 or 1 316 127 +321 and 1 114 320 +322 ite 2 127 61 141 +323 or 1 316 154 +324 and 1 143 323 +325 ite 2 154 61 168 +326 or 1 181 316 +327 and 1 170 326 +328 ite 2 181 61 195 +329 ite 2 327 328 87 +330 ite 2 324 325 329 +331 ite 2 321 322 330 +332 ite 2 318 319 331 +333 xor 2 86 332 +334 next 2 20 333 +335 eq 1 88 52 +336 or 1 335 89 +337 and 1 45 336 +338 ite 2 89 61 112 +339 or 1 335 128 +340 and 1 114 339 +341 ite 2 128 61 141 +342 or 1 335 155 +343 and 1 143 342 +344 ite 2 155 61 168 +345 or 1 182 335 +346 and 1 170 345 +347 ite 2 182 61 195 +348 ite 2 346 347 91 +349 ite 2 343 344 348 +350 ite 2 340 341 349 +351 ite 2 337 338 350 +352 xor 2 90 351 +353 next 2 22 352 +354 eq 1 92 52 +355 or 1 354 93 +356 and 1 45 355 +357 ite 2 93 61 112 +358 or 1 354 129 +359 and 1 114 358 +360 ite 2 129 61 141 +361 or 1 354 156 +362 and 1 143 361 +363 ite 2 156 61 168 +364 or 1 183 354 +365 and 1 170 364 +366 ite 2 183 61 195 +367 ite 2 365 366 95 +368 ite 2 362 363 367 +369 ite 2 359 360 368 +370 ite 2 356 357 369 +371 xor 2 94 370 +372 next 2 24 371 +373 eq 1 96 52 +374 or 1 373 97 +375 and 1 45 374 +376 ite 2 97 61 112 +377 or 1 373 130 +378 and 1 114 377 +379 ite 2 130 61 141 +380 or 1 373 157 +381 and 1 143 380 +382 ite 2 157 61 168 +383 or 1 184 373 +384 and 1 170 383 +385 ite 2 184 61 195 +386 ite 2 384 385 99 +387 ite 2 381 382 386 +388 ite 2 378 379 387 +389 ite 2 375 376 388 +390 xor 2 98 389 +391 next 2 26 390 +392 constd 4 11 +393 eq 1 392 52 +394 eq 1 392 57 +395 or 1 393 394 +396 and 1 45 395 +397 ite 2 394 61 112 +398 eq 1 392 117 +399 or 1 393 398 +400 and 1 114 399 +401 ite 2 398 61 141 +402 eq 1 392 144 +403 or 1 393 402 +404 and 1 143 403 +405 ite 2 402 61 168 +406 eq 1 392 171 +407 or 1 406 393 +408 and 1 170 407 +409 ite 2 406 61 195 +410 ite 2 408 409 101 +411 ite 2 404 405 410 +412 ite 2 400 401 411 +413 ite 2 396 397 412 +414 xor 2 100 413 +415 next 2 28 414 +416 add 4 54 48 +417 slice 2 416 7 0 +418 sub 4 48 54 +419 slice 2 418 7 0 +420 ite 2 170 419 30 +421 ite 2 143 417 420 +422 next 2 30 421 +423 slice 2 55 7 0 +424 slice 2 115 7 0 +425 ite 2 114 424 32 +426 ite 2 45 423 425 +427 next 2 32 426 +428 next 1 35 35 +429 input 1 f4 +430 and 1 -37 -429 +431 next 1 37 -430 +432 or 1 39 429 +433 next 1 39 432 +434 ulte 1 48 46 +435 and 1 -35 -434 +436 or 1 -170 435 +437 ulte 1 69 48 +438 and 1 -35 -437 +439 or 1 -143 438 +440 and 1 436 439 +441 ulte 1 50 46 +442 and 1 -35 -441 +443 or 1 -114 442 +444 and 1 440 443 +445 ulte 1 65 50 +446 and 1 -35 -445 +447 or 1 -45 446 +448 and 1 444 447 +449 eq 1 100 6 +450 eq 1 98 64 +451 and 1 449 450 +452 eq 1 94 68 +453 and 1 451 452 +454 eq 1 90 72 +455 and 1 453 454 +456 eq 1 86 75 +457 and 1 455 456 +458 eq 1 82 79 +459 and 1 457 458 +460 eq 1 78 83 +461 and 1 459 460 +462 eq 1 74 87 +463 and 1 461 462 +464 eq 1 71 91 +465 and 1 463 464 +466 eq 1 67 95 +467 and 1 465 466 +468 eq 1 63 99 +469 and 1 467 468 +470 eq 1 61 101 +471 and 1 469 470 +472 and 1 -37 471 +473 or 1 -429 472 +474 and 1 448 473 +475 or 1 170 143 +476 or 1 114 475 +477 or 1 45 476 +478 or 1 429 477 +479 and 1 474 478 +480 and 1 170 143 +481 and 1 114 475 +482 or 1 480 481 +483 and 1 45 476 +484 or 1 482 483 +485 and 1 429 477 +486 or 1 484 485 +487 and 1 479 -486 +488 and 1 -37 39 +489 and 1 -35 -488 +490 or 1 -37 39 +491 and 1 489 490 +492 and 1 487 491 +493 and 1 430 432 +494 and 1 -35 -493 +495 or 1 430 432 +496 and 1 494 495 +497 and 1 492 496 +498 and 1 497 -41 +499 next 1 41 -498 +; End + + From 6269e931f5e0dcb6ff9286c1dbb8bf9f42b0686e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Fri, 11 Jul 2025 15:02:28 +0200 Subject: [PATCH 49/72] We need bitwise negation so that is switched --- .../theta/frontend/models/Btor2Operation.kt | 45 +++++++++---------- .../Btor2XcfaBuilder.kt | 17 ++++--- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index b9d576b7b1..d1fbb98a2a 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -141,29 +141,28 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor } override fun getExpr(): Expr { - val op1ExprLogical = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr val op2ExprLogical = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr - val op1ExprArithmetic = if (opd1_negated) BvNegExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr - val op2ExprArithmetic = if (opd2_negated) BvNegExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr + //val op1ExprArithmetic = if (opd1_negated) BvNegExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr + //val op2ExprArithmetic = if (opd2_negated) BvNegExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr return when(operator) { - Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) - Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) - Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr))) - Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr))) - Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) - Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr))) - Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) - Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) - Btor2BinaryOperator.SUB -> BvSubExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.UREM -> BvURemExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr)) + Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) + Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) + Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) + Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) + Btor2BinaryOperator.SUB -> BvSubExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.UREM -> BvURemExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") @@ -171,11 +170,11 @@ data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") - Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) - Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1ExprArithmetic as Expr, op2ExprArithmetic as Expr) + Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") } } diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index ff7ed34ff9..8a4f9b42e7 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -97,13 +97,16 @@ object Btor2XcfaBuilder{ //Circuit folytatása // ha nincsen next akkor azt el kelll havocolni - Btor2Circuit.states.forEach { - it.value.getVar()?.let{varDecl -> - if(varDecl.name.startsWith(("next_"))){ - val firstLoc = procBuilder.getLocs().elementAt(1) - procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(it.value.getStmt()),EmptyMetaData)) - - } + var nexts = Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() + val firstLoc = procBuilder.getLocs().elementAt(1) + if(nexts.size==1){ + procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(nexts[0].second.getStmt()),EmptyMetaData)) + } + else{ + nexts.forEach { + procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(it.second.getStmt()),EmptyMetaData)) + i++ + newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) } } return xcfaBuilder.build() From bbac0e73fad2a06d29f873161f5098511c919db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Fri, 11 Jul 2025 15:07:35 +0200 Subject: [PATCH 50/72] Next edge adding --- .../Btor2XcfaBuilder.kt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 8a4f9b42e7..a37ad7198c 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -3,6 +3,7 @@ package hu.bme.mit.theta.btor2xcfa import hu.bme.mit.theta.core.stmt.AssignStmt import hu.bme.mit.theta.core.stmt.AssumeStmt import hu.bme.mit.theta.core.stmt.HavocStmt +import hu.bme.mit.theta.core.stmt.SkipStmt import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.booltype.BoolExprs.Not import hu.bme.mit.theta.core.type.booltype.BoolType @@ -99,16 +100,14 @@ object Btor2XcfaBuilder{ // ha nincsen next akkor azt el kelll havocolni var nexts = Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() val firstLoc = procBuilder.getLocs().elementAt(1) - if(nexts.size==1){ - procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(nexts[0].second.getStmt()),EmptyMetaData)) - } - else{ - nexts.forEach { - procBuilder.addEdge(XcfaEdge(newLoc, firstLoc, StmtLabel(it.second.getStmt()),EmptyMetaData)) - i++ - newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) - } + + nexts.forEach { + newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.second.getStmt()),EmptyMetaData)) + i++ + lastLoc=newLoc } + procBuilder.addEdge(XcfaEdge(lastLoc, firstLoc, metadata=EmptyMetaData)) return xcfaBuilder.build() } } From d103676361b5843bff21d412ecbfd0bcd3a1002a Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Fri, 11 Jul 2025 15:07:56 +0200 Subject: [PATCH 51/72] added gcd example --- .../btor2xcfa/src/test/resources/gcd_1.btor2 | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/gcd_1.btor2 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/gcd_1.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/gcd_1.btor2 new file mode 100644 index 0000000000..2a7e673369 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/gcd_1.btor2 @@ -0,0 +1,147 @@ +; source: https://gitlab.com/sosy-lab/research/data/sv-benchmarks-translation/-/tree/b404abc8f1ce5436ab1dd0532ce6a8e932f47a68 +1 sort bitvec 8 +2 sort bitvec 1 +3 sort bitvec 32 +4 sort bitvec 1 +5 constd 2 0 +6 constd 2 1 +7 input 1 !{$(in_main#0)<$(in___VERIFIER_nondet_char#0)>>} +8 input 1 !{$(in_main#0)<$(in___VERIFIER_nondet_char#1)>>} +9 input 1 !{$(in_main#0)<$(in_gcd_test#2)<$tmp>>} +10 input 1 !{$(in_main#0)<$(in_gcd_test#2)<$tmp.1>>} +11 input 1 %{$(in_main#0)<$(in_gcd_test#2)>}#3 +12 input 1 %{$(in_main#0)<$(in_gcd_test#2)<$tmp>>}#3 +13 input 1 %{$(in_main#0)<$(in_gcd_test#2)>}#3 +14 input 1 %{$(in_main#0)<$(in_gcd_test#2)<$tmp.1>>}#3 +15 input 1 !{$(in_main#0)<$(in_gcd_test#2)>}.next +16 input 1 !{$(in_main#0)<$(in_gcd_test#2)>}.next +17 input 1 !{$(in_main#0)}.next +18 input 2 !pc[0].next +19 input 2 !pc[1].next +20 input 2 !pc[2].next +21 state 1 !{$(in_main#0)<$(in_gcd_test#2)>} +22 state 1 !{$(in_main#0)<$(in_gcd_test#2)>} +23 state 1 !{$(in_main#0)} +24 state 2 !pc[0] +25 state 2 !pc[1] +26 state 2 !pc[2] +27 state 2 reset0 +28 state 2 valid +29 not 2 27 +30 and 2 18 19 +31 not 2 20 +32 and 2 31 30 +33 not 2 25 +34 and 2 24 33 +35 not 2 26 +36 and 2 35 34 +37 and 2 36 32 +38 constd 3 0 +39 constd 3 1 +40 sext 3 23 24 +41 sext 3 21 24 +42 eq 2 41 40 +43 ite 3 42 39 38 +44 eq 2 43 38 +45 eq 2 21 15 +46 and 2 45 44 +47 eq 2 22 16 +48 and 2 47 46 +49 eq 2 23 17 +50 and 2 49 48 +51 constd 1 0 +52 eq 2 22 51 +53 and 2 52 50 +54 and 2 53 37 +55 not 2 19 +56 and 2 18 55 +57 and 2 56 31 +58 and 2 57 36 +59 sext 3 22 24 +60 srem 3 41 59 +61 slice 1 60 7 0 +62 eq 2 16 61 +63 eq 2 15 22 +64 and 2 63 62 +65 and 2 49 64 +66 not 2 52 +67 and 2 66 65 +68 and 2 67 58 +69 or 2 68 54 +70 not 2 18 +71 and 2 19 70 +72 and 2 31 71 +73 not 2 24 +74 and 2 73 33 +75 and 2 74 35 +76 and 2 75 72 +77 and 2 45 47 +78 eq 2 17 8 +79 and 2 78 77 +80 sext 3 8 24 +81 sext 3 7 24 +82 srem 3 81 80 +83 eq 2 82 38 +84 slt 2 38 80 +85 and 2 84 83 +86 not 2 85 +87 and 2 86 79 +88 and 2 87 76 +89 and 2 75 57 +90 eq 2 16 13 +91 eq 2 15 11 +92 and 2 91 90 +93 and 2 92 78 +94 neg 1 8 +95 eq 2 94 14 +96 eq 2 94 13 +97 constd 4 1 +98 slice 4 80 31 31 +99 eq 2 98 97 +100 and 2 99 96 +101 and 2 100 95 +102 eq 2 10 14 +103 eq 2 8 13 +104 not 2 99 +105 and 2 104 103 +106 and 2 105 102 +107 or 2 106 101 +108 and 2 107 93 +109 neg 1 7 +110 eq 2 109 12 +111 eq 2 109 11 +112 slice 4 81 31 31 +113 eq 2 112 97 +114 and 2 113 111 +115 and 2 114 110 +116 eq 2 9 12 +117 eq 2 7 11 +118 not 2 113 +119 and 2 118 117 +120 and 2 119 116 +121 or 2 120 115 +122 and 2 121 108 +123 and 2 85 122 +124 and 2 123 89 +125 or 2 124 88 +126 or 2 125 69 +127 and 2 126 28 +128 or 2 127 29 +129 and 2 55 70 +130 and 2 31 129 +131 or 2 27 130 +132 and 2 131 128 +133 and 2 24 25 +134 and 2 35 133 +135 and 2 134 28 +136 next 1 21 15 +137 next 1 22 16 +138 next 1 23 17 +139 next 2 24 18 +140 next 2 25 19 +141 next 2 26 20 +142 init 2 27 5 +143 next 2 27 6 +144 init 2 28 5 +145 next 2 28 132 +146 bad 135 From e8506ae21c792c4d3765f6a014f45d8abe26824b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Fri, 11 Jul 2025 15:31:50 +0200 Subject: [PATCH 52/72] States, inputs edges improved --- .../Btor2XcfaBuilder.kt | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index a37ad7198c..8a7111f80e 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -44,15 +44,17 @@ object Btor2XcfaBuilder{ var newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) // initekhez procBuilder.addLoc(newLoc) - Btor2Circuit.states.forEach { - it.value.getVar()?.let{varDecl -> - if(varDecl.name.startsWith(("init_"))){ - val edge = XcfaEdge(lastLoc,newLoc, StmtLabel(it.value.getStmt()), EmptyMetaData) - procBuilder.addEdge(edge) - // Amit tudunk 1 élre helyezzük, tehát az első élen vannak az initek - } - } - } + + val edge = XcfaEdge(lastLoc, newLoc, + SequenceLabel( + Btor2Circuit.states.filter { + if(it.value.getVar()!=null && it.value.getVar()!!.name.startsWith("init_")) true else false + }.map { + StmtLabel(it.value.getStmt(),metadata=EmptyMetaData) + }.toList() + ), EmptyMetaData + ) + procBuilder.addEdge(edge) i++ lastLoc=newLoc /////////////////////////////////////////////// @@ -61,14 +63,16 @@ object Btor2XcfaBuilder{ if(Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("input_") == true }.isNotEmpty()){ newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) procBuilder.addLoc(newLoc) - Btor2Circuit.states.forEach { - it.value.getVar()?.let{ varDecl -> - if(varDecl.name.startsWith(("input_"))){ - val edge = XcfaEdge(lastLoc, newLoc, StmtLabel(it.value.getStmt()), EmptyMetaData) - procBuilder.addEdge(edge) - } - } - } + val edge = XcfaEdge(lastLoc, newLoc, + SequenceLabel( + Btor2Circuit.states.filter { + if(it.value.getVar()!=null && it.value.getVar()!!.name.startsWith("input_")) true else false + }.map { + StmtLabel(it.value.getStmt(),metadata=EmptyMetaData) + }.toList() + ), EmptyMetaData + ) + procBuilder.addEdge(edge) i++ lastLoc=newLoc } @@ -95,9 +99,9 @@ object Btor2XcfaBuilder{ procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(AssumeStmt.of(bad.getExpr())),EmptyMetaData)) newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(bad.getStmt()),EmptyMetaData)) - + lastLoc = newLoc //Circuit folytatása - // ha nincsen next akkor azt el kelll havocolni + // ha nincsen next akkor azt el kell havocolni var nexts = Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() val firstLoc = procBuilder.getLocs().elementAt(1) From 117a5bb35453c67a0f8edfb37210d65a78cba798 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 11:05:14 +0200 Subject: [PATCH 53/72] fixed missing location counter increase --- .../theta/frontend/models/Btor2Properties.kt | 2 +- .../Btor2XcfaBuilder.kt | 35 +++++++++++-------- .../mit/theta/xcfa/cli/utils/XcfaParser.kt | 2 +- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 1800067537..bfc35bf348 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -46,6 +46,6 @@ data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val o } fun getStmt(): Stmt { - return AssumeStmt.of(BoolExprs.Not(getExpr())) + return AssumeStmt.of(getExpr()) } } \ No newline at end of file diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 8a7111f80e..0e568947b5 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -5,6 +5,7 @@ import hu.bme.mit.theta.core.stmt.AssumeStmt import hu.bme.mit.theta.core.stmt.HavocStmt import hu.bme.mit.theta.core.stmt.SkipStmt import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.booltype.BoolExprs import hu.bme.mit.theta.core.type.booltype.BoolExprs.Not import hu.bme.mit.theta.core.type.booltype.BoolType import hu.bme.mit.theta.core.type.booltype.NotExpr @@ -14,6 +15,8 @@ import hu.bme.mit.theta.frontend.models.Btor2Operation import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager object Btor2XcfaBuilder{ + private var i : Int = 1 + fun btor2xcfa(circuit: Btor2Circuit) : XCFA { // checks fontos: nodes, ops, properties csak 1 legyen check(Btor2Circuit.properties.size != 0, { "Circuit has no error property" }) @@ -27,7 +30,6 @@ object Btor2XcfaBuilder{ check(nodes[i].nid > nodes[i - 1].nid, { "Nodes are not in increasing order" }) } - var i : Int = 1 val xcfaBuilder = XcfaBuilder("Btor2XCFA") val procBuilder = XcfaProcedureBuilder("main", Btor2Pass()) xcfaBuilder.addEntryPoint(procBuilder, emptyList()) @@ -41,7 +43,7 @@ object Btor2XcfaBuilder{ /////////////////////////////////////////////// // Initek var lastLoc = procBuilder.initLoc - var newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + var newLoc = nextLoc(false,false,false) // initekhez procBuilder.addLoc(newLoc) @@ -61,7 +63,7 @@ object Btor2XcfaBuilder{ // Havoc változók // Miután felvettük az initeket mehetnek a havoc változók if(Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("input_") == true }.isNotEmpty()){ - newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + newLoc = nextLoc(false, false, false) procBuilder.addLoc(newLoc) val edge = XcfaEdge(lastLoc, newLoc, SequenceLabel( @@ -73,7 +75,6 @@ object Btor2XcfaBuilder{ ), EmptyMetaData ) procBuilder.addEdge(edge) - i++ lastLoc=newLoc } @@ -81,41 +82,47 @@ object Btor2XcfaBuilder{ // Végigmegyünk az operationökön Btor2Circuit.ops.forEach() { - val loc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + val loc = nextLoc(false, false, false) procBuilder.addLoc(loc) val edge = XcfaEdge(lastLoc, loc, StmtLabel(it.value.getStmt()), EmptyMetaData) procBuilder.addEdge(edge) - i++ lastLoc=loc } procBuilder.createErrorLoc() - // Errorkezelése - // Egyzserű pédáink vannak tehát egyelőre csak bad van benne - // CSak egy lesz -> Legyen hiba ha több a bad + // Error kezelése + // Egyszerű példáink vannak, tehát egyelőre csak bad van benne + // Csak egy lesz -> Legyen hiba, ha több a bad val bad = Btor2Circuit.properties.values.first() procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(AssumeStmt.of(bad.getExpr())),EmptyMetaData)) - newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) - procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(bad.getStmt()),EmptyMetaData)) + newLoc = nextLoc(false, false, false) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(AssumeStmt.of(BoolExprs.Not(bad.getExpr()))),EmptyMetaData)) lastLoc = newLoc - //Circuit folytatása + + // Circuit folytatása // ha nincsen next akkor azt el kell havocolni var nexts = Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() val firstLoc = procBuilder.getLocs().elementAt(1) nexts.forEach { - newLoc = XcfaLocation("l${i}", false, false, false, EmptyMetaData) + newLoc = nextLoc(false, false, false) procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.second.getStmt()),EmptyMetaData)) - i++ lastLoc=newLoc } procBuilder.addEdge(XcfaEdge(lastLoc, firstLoc, metadata=EmptyMetaData)) return xcfaBuilder.build() } + + private fun nextLoc(initial : Boolean, final : Boolean, error : Boolean) : XcfaLocation { + val loc = XcfaLocation("l${i}", initial, final, error, EmptyMetaData) + i++ + return loc + } } + class Btor2Pass() : ProcedurePassManager() { // No optimization for now c: } \ No newline at end of file diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index eef1cd8572..aabdbaba66 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -257,6 +257,6 @@ private fun parseBTOR2( context.accept(visitor) val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) - logger.write( Logger.Level.MAINSTEP, "XCFA built, result: " + xcfa.toDot() + "\n") + logger.write( Logger.Level.MAINSTEP, "XCFA built successfully") return xcfa } \ No newline at end of file From 664f3dcd091fbe68bac6c6419e8b7d81ce85462c Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 11:07:19 +0200 Subject: [PATCH 54/72] spotless formatting --- .../mit/theta/core/type/anytype/IteExpr.java | 2 +- .../mit/theta/frontend/models/Btor2Const.kt | 32 +- .../mit/theta/frontend/models/Btor2Model.kt | 85 +- .../theta/frontend/models/Btor2Operation.kt | 859 ++++++++++-------- .../frontend/models/Btor2OperatorEnums.kt | 171 ++-- .../theta/frontend/models/Btor2Properties.kt | 35 +- .../theta/frontend/models/Btor2Stateful.kt | 185 ++-- .../theta/frontend/visitors/Btor2Visitor.kt | 76 +- .../frontend/visitors/ConstantVisitor.kt | 215 ++--- .../mit/theta/frontend/visitors/IdVisitor.kt | 16 +- .../frontend/visitors/OperationVisitor.kt | 395 ++++---- .../theta/frontend/visitors/SortVisitor.kt | 20 +- .../theta/frontend/visitors/StateVisitor.kt | 190 ++-- .../Btor2XcfaBuilder.kt | 240 ++--- .../btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 51 +- .../mit/theta/xcfa/cli/utils/XcfaParser.kt | 19 +- 16 files changed, 1386 insertions(+), 1205 deletions(-) diff --git a/subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/anytype/IteExpr.java b/subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/anytype/IteExpr.java index 9a46d76733..9857c29003 100644 --- a/subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/anytype/IteExpr.java +++ b/subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/anytype/IteExpr.java @@ -30,7 +30,7 @@ import hu.bme.mit.theta.core.type.booltype.BoolType; import java.util.List; - public final class IteExpr implements Expr { +public final class IteExpr implements Expr { private static final int HASH_SEED = 181; private static final String OPERATOR_LABEL = "ite"; diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt index 68bf7688c0..d9f603c78c 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt @@ -13,31 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.type.Expr -import hu.bme.mit.theta.core.type.LitExpr -import hu.bme.mit.theta.core.type.anytype.RefExpr import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.core.type.bvtype.BvType -import hu.bme.mit.theta.core.type.inttype.IntLitExpr data class Btor2Const( - override val nid: UInt, - val value: BooleanArray, - override val sort: Btor2Sort -) : Btor2Node(nid, sort){ - override fun getVar(): VarDecl<*>? { - return null - } + override val nid: UInt, + val value: BooleanArray, + override val sort: Btor2Sort, +) : Btor2Node(nid, sort) { + override fun getVar(): VarDecl<*>? { + return null + } - override fun getExpr(): Expr { - return BvLitExpr.of(value) - } + override fun getExpr(): Expr { + return BvLitExpr.of(value) + } - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } -} \ No newline at end of file + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 823662e792..db57698549 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -13,60 +13,73 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.type.Expr interface Btor2NodeVisitor { - fun visit(node: Btor2UnaryOperation, param: P) : R - fun visit(node: Btor2BinaryOperation, param: P) : R - fun visit(node: Btor2TernaryOperation, param: P) : R - fun visit(node: Btor2SliceOperation, param: P) : R - fun visit(node: Btor2ExtOperation, param: P) : R - fun visit(node: Btor2Comparison, param: P) : R - fun visit(node: Btor2Boolean, param: P) : R - fun visit(node: Btor2BitvecSort, param: P) : R - fun visit(node: Btor2Input, param: P) : R - fun visit(node: Btor2State, param: P) : R - fun visit(node: Btor2Init, param: P) : R - fun visit(node: Btor2Next, param: P) : R - fun visit(node: Btor2Bad, param: P) : R - fun visit(node: Btor2Const, param: P) : R -} + fun visit(node: Btor2UnaryOperation, param: P): R + + fun visit(node: Btor2BinaryOperation, param: P): R + + fun visit(node: Btor2TernaryOperation, param: P): R + + fun visit(node: Btor2SliceOperation, param: P): R + + fun visit(node: Btor2ExtOperation, param: P): R + + fun visit(node: Btor2Comparison, param: P): R + + fun visit(node: Btor2Boolean, param: P): R + fun visit(node: Btor2BitvecSort, param: P): R + + fun visit(node: Btor2Input, param: P): R + + fun visit(node: Btor2State, param: P): R + + fun visit(node: Btor2Init, param: P): R + + fun visit(node: Btor2Next, param: P): R + + fun visit(node: Btor2Bad, param: P): R + + fun visit(node: Btor2Const, param: P): R +} object Btor2Circuit { - var nodes: MutableMap = mutableMapOf() - var sorts: MutableMap = mutableMapOf() - var constants: MutableMap = mutableMapOf() - var ops: MutableMap = mutableMapOf() - var states: MutableMap = mutableMapOf() - var properties : MutableMap = mutableMapOf() + var nodes: MutableMap = mutableMapOf() + var sorts: MutableMap = mutableMapOf() + var constants: MutableMap = mutableMapOf() + var ops: MutableMap = mutableMapOf() + var states: MutableMap = mutableMapOf() + var properties: MutableMap = mutableMapOf() } // sortID lookup in Btor2Sort abstract class Btor2Node(id: UInt, btor2Sort: Btor2Sort? = null) { - abstract val nid: UInt - abstract val sort: Btor2Sort? + abstract val nid: UInt + abstract val sort: Btor2Sort? - open fun getVar(): VarDecl<*>? { - return null - } + open fun getVar(): VarDecl<*>? { + return null + } - abstract fun accept(visitor: Btor2NodeVisitor, param : P): R - // Constants give back a BvLitExpr - // Operations give back an Expr vagyish sokfélét de az kell nekik - // Statefuls give back RefExpr - // Properties Expr - abstract fun getExpr(): Expr<*> + abstract fun accept(visitor: Btor2NodeVisitor, param: P): R + // Constants give back a BvLitExpr + // Operations give back an Expr vagyish sokfélét de az kell nekik + // Statefuls give back RefExpr + // Properties Expr + abstract fun getExpr(): Expr<*> } abstract class Btor2Sort(sid: UInt, width: UInt) { - abstract val sid: UInt - abstract val width: UInt + abstract val sid: UInt + abstract val width: UInt } + // Ezt egyelőre nem használjuk mert csak bitvektoraink vannak -data class Btor2BitvecSort(override val sid: UInt, override val width: UInt) : Btor2Sort(sid, width) \ No newline at end of file +data class Btor2BitvecSort(override val sid: UInt, override val width: UInt) : + Btor2Sort(sid, width) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index d1fbb98a2a..7fed4858b3 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -1,365 +1,494 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.models - -import hu.bme.mit.theta.core.decl.Decls -import hu.bme.mit.theta.core.decl.VarDecl -import hu.bme.mit.theta.core.stmt.AssignStmt -import hu.bme.mit.theta.core.stmt.Stmt -import hu.bme.mit.theta.core.type.Expr -import hu.bme.mit.theta.core.type.anytype.IteExpr -import hu.bme.mit.theta.core.type.booltype.BoolType -import hu.bme.mit.theta.core.type.booltype.IffExpr -import hu.bme.mit.theta.core.type.booltype.ImplyExpr -import hu.bme.mit.theta.core.type.bvtype.* -import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq -import hu.bme.mit.theta.core.type.bvtype.BvExprs.Neg -import hu.bme.mit.theta.core.type.inttype.IntLitExpr -import hu.bme.mit.theta.core.utils.TypeUtils.castBv -import java.math.BigInteger - - -abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) -{ - // Ebben volt egy negálás de hát szinte felesleges - abstract fun getStmt(): Stmt -} - -// Operators -data class Btor2UnaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2UnaryOperator, val operand: Btor2Node) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("unary_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr { - val one = BvExprs.Bv(booleanArrayOf(true)) as Expr - return when(operator) - { - Btor2UnaryOperator.NOT -> BvNotExpr.of(operand.getExpr() as Expr) - Btor2UnaryOperator.INC -> BvAddExpr.create(mutableListOf(operand.getExpr() as Expr, one)) - Btor2UnaryOperator.DEC -> BvSubExpr.create(operand.getExpr() as Expr, one) - Btor2UnaryOperator.NEG -> BvNegExpr.of(operand.getExpr() as Expr) - Btor2UnaryOperator.REDAND -> BvAndExpr.create(valueByBits()) - Btor2UnaryOperator.REDOR -> BvOrExpr.create(valueByBits()) - Btor2UnaryOperator.REDXOR -> BvXorExpr.create(valueByBits()) - } - } - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(): Stmt { - return AssignStmt.of(value, getExpr() as Expr) - } - - fun valueByBits() : List> { - //val expr = operand.getExpr() as BvLitExpr - //val value = expr.value // BooleanArray - //val cut = mutableListOf>() - //for (i in value.indices) { - // cut.add(BvLitExpr.of(booleanArrayOf(value[i]))) - //} - //return cut - TODO() - } -} - -data class Btor2ExtOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2ExtOperator, val operand: Btor2Node, val w : UInt) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("ext_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr { - val ogLength = operand.sort?.width?.toInt() - val wLength = w.toInt() - val newLength = ogLength?.plus(wLength) ?: throw IllegalArgumentException("Operand sort width is null or not defined") - return when(operator) - { - Btor2ExtOperator.SEXT -> BvSExtExpr.create(operand.getExpr(), BvType.of(newLength)) - Btor2ExtOperator.UEXT -> BvZExtExpr.create(operand.getExpr(), BvType.of(newLength)) - } - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(): Stmt { - return AssignStmt.of(value, getExpr()) - } -} - -data class Btor2SliceOperation(override val nid: UInt, override val sort : Btor2Sort, val operand: Btor2Node, val u : BigInteger, val l : BigInteger) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("slice_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr { - val newU : BigInteger = u + BigInteger.valueOf(1) - //val newU: BigInteger = if (u == l) u + BigInteger.valueOf(1) else u - return BvExtractExpr.create(operand.getExpr() as Expr, IntLitExpr.of(l), IntLitExpr.of(newU)) - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(): Stmt { - return AssignStmt.of(value, getExpr() as Expr) - } -} - -data class Btor2BinaryOperation(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2BinaryOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("binary_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr { - val op1ExprLogical = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr - val op2ExprLogical = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr - //val op1ExprArithmetic = if (opd1_negated) BvNegExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr - //val op2ExprArithmetic = if (opd2_negated) BvNegExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr - - return when(operator) - { - Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) - Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) - Btor2BinaryOperator.NAND -> BvNotExpr.create(BvAndExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) - Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) - Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) - Btor2BinaryOperator.XNOR -> BvNotExpr.create(BvXorExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr))) - Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) - Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) - Btor2BinaryOperator.SUB -> BvSubExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.UREM -> BvURemExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr)) - Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") - Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") - Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") - Btor2BinaryOperator.SSUBO -> TODO("Signed subtraction with overflow not implemented yet") - Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") - Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") - Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") - Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) - Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") - } - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(): Stmt { - return when(operator) - { - Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.AND -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.NAND -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.NOR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.OR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.XNOR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.XOR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.MUL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SUB -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.UDIV -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.UREM -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SDIV -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SREM -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SMOD -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.CONCAT -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") - Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") - Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") - Btor2BinaryOperator.SSUBO -> TODO("Signed subtraction with overflow not implemented yet") - Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") - Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") - Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") - Btor2BinaryOperator.ROL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.ROR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SLL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SRA -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SRL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") - } - } -} - -data class Btor2Comparison(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2ComparisonOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("comparison_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr { - val op1_expr = if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) else op1.getExpr() as Expr - val op2_expr = if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) else op2.getExpr() as Expr - return when(operator) - { - Btor2ComparisonOperator.EQ -> IteExpr.of(BvEqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - //Eq(op1_expr as RefExpr, op2_expr as RefExpr) - Btor2ComparisonOperator.NEQ -> IteExpr.of(BvNeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.SLT -> IteExpr.of(BvSLtExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.SLTE -> IteExpr.of(BvSLeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.SGT -> IteExpr.of(BvSGtExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.SGTE -> IteExpr.of(BvSGeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.ULT -> IteExpr.of(BvULtExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.ULTE -> IteExpr.of(BvULeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.UGT -> IteExpr.of(BvUGtExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - Btor2ComparisonOperator.UGTE -> IteExpr.of(BvUGeqExpr.create(op1_expr as Expr, op2_expr as Expr), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false })) - } - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(): Stmt { - return when(operator) - { - Btor2ComparisonOperator.EQ -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.NEQ -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.SLT -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.SLTE -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.SGT -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.SGTE -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.ULT -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.ULTE -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.UGT -> AssignStmt.of(value,getExpr() as Expr) - Btor2ComparisonOperator.UGTE -> AssignStmt.of(value,getExpr() as Expr) - } - } -} - -data class Btor2Boolean(override val nid: UInt, override val sort : Btor2Sort, val operator: Btor2BooleanOperator, val op1: Btor2Node, val op2: Btor2Node, val opd1_negated: Boolean, val opd2_negated: Boolean) : Btor2Operation(nid, sort) { - - val value = Decls.Var("boolean_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr { - return when(operator) - { - Btor2BooleanOperator.IFF -> IteExpr.of( - IffExpr.create( - if (opd1_negated) BvNotExpr.create(op1.getExpr()) else op1.getExpr(), - if (opd2_negated) BvNotExpr.create(op2.getExpr()) else op2.getExpr() - ), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false }) - ) - Btor2BooleanOperator.IMPLIES -> IteExpr.of( - ImplyExpr.create( - if (opd1_negated) BvNotExpr.create(op1.getExpr()) else op1.getExpr(), - if (opd2_negated) BvNotExpr.create(op2.getExpr()) else op2.getExpr() - ), - BvExprs.Bv(BooleanArray(1) { true }), - BvExprs.Bv(BooleanArray(1) { false }) - ) - } - } - - override fun accept(visitor: Btor2NodeVisitor, param: P): R { - return visitor.visit(this, param) - } - - override fun getStmt(): Stmt { - return AssignStmt.of(value, getExpr()) - } -} - -// Ehhez a nidhez vezetünk be egy változót, bekötjük -data class Btor2TernaryOperation(override val nid: UInt, override val sort: Btor2Sort, val operator: Btor2TernaryOperator, - val op1: Btor2Node, val op2: Btor2Node, val op3: Btor2Node, - val negated1: Boolean, val negated2: Boolean, val negated3: Boolean) : Btor2Operation(nid, sort) -{ - val value = Decls.Var("ternary_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return value - } - - override fun getExpr(): Expr { - //checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) - val op1Expr = if (negated1) BvNotExpr.create(op1.getExpr() as Expr) else (op1.getExpr() as Expr) - val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) - val op2Expr = if (negated2) BvNegExpr.create(op2.getExpr() as Expr) else (op2.getExpr() as Expr ) - val op3Expr = if (negated3) BvNegExpr.create(op3.getExpr() as Expr) else (op3.getExpr() as Expr ) - - return when(operator) - { - Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2Expr as Expr, op3Expr as Expr) - Btor2TernaryOperator.WRITE -> TODO() - } - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - - override fun getStmt(): Stmt { - return when(operator) - { - Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr() as Expr) - Btor2TernaryOperator.WRITE -> TODO("Write operation not implemented yet") - } - - } -} \ No newline at end of file +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hu.bme.mit.theta.frontend.models + +import hu.bme.mit.theta.core.decl.Decls +import hu.bme.mit.theta.core.decl.VarDecl +import hu.bme.mit.theta.core.stmt.AssignStmt +import hu.bme.mit.theta.core.stmt.Stmt +import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.anytype.IteExpr +import hu.bme.mit.theta.core.type.booltype.BoolType +import hu.bme.mit.theta.core.type.booltype.IffExpr +import hu.bme.mit.theta.core.type.booltype.ImplyExpr +import hu.bme.mit.theta.core.type.bvtype.* +import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq +import hu.bme.mit.theta.core.type.inttype.IntLitExpr +import java.math.BigInteger + +abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) { + // Ebben volt egy negálás de hát szinte felesleges + abstract fun getStmt(): Stmt +} + +// Operators +data class Btor2UnaryOperation( + override val nid: UInt, + override val sort: Btor2Sort, + val operator: Btor2UnaryOperator, + val operand: Btor2Node, +) : Btor2Operation(nid, sort) { + val value = Decls.Var("unary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + val one = BvExprs.Bv(booleanArrayOf(true)) as Expr + return when (operator) { + Btor2UnaryOperator.NOT -> BvNotExpr.of(operand.getExpr() as Expr) + Btor2UnaryOperator.INC -> + BvAddExpr.create(mutableListOf(operand.getExpr() as Expr, one)) + Btor2UnaryOperator.DEC -> BvSubExpr.create(operand.getExpr() as Expr, one) + Btor2UnaryOperator.NEG -> BvNegExpr.of(operand.getExpr() as Expr) + Btor2UnaryOperator.REDAND -> BvAndExpr.create(valueByBits()) + Btor2UnaryOperator.REDOR -> BvOrExpr.create(valueByBits()) + Btor2UnaryOperator.REDXOR -> BvXorExpr.create(valueByBits()) + } + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } + + override fun getStmt(): Stmt { + return AssignStmt.of(value, getExpr() as Expr) + } + + fun valueByBits(): List> { + // val expr = operand.getExpr() as BvLitExpr + // val value = expr.value // BooleanArray + // val cut = mutableListOf>() + // for (i in value.indices) { + // cut.add(BvLitExpr.of(booleanArrayOf(value[i]))) + // } + // return cut + TODO() + } +} + +data class Btor2ExtOperation( + override val nid: UInt, + override val sort: Btor2Sort, + val operator: Btor2ExtOperator, + val operand: Btor2Node, + val w: UInt, +) : Btor2Operation(nid, sort) { + val value = Decls.Var("ext_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + val ogLength = operand.sort?.width?.toInt() + val wLength = w.toInt() + val newLength = + ogLength?.plus(wLength) + ?: throw IllegalArgumentException("Operand sort width is null or not defined") + return when (operator) { + Btor2ExtOperator.SEXT -> BvSExtExpr.create(operand.getExpr(), BvType.of(newLength)) + Btor2ExtOperator.UEXT -> BvZExtExpr.create(operand.getExpr(), BvType.of(newLength)) + } + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } + + override fun getStmt(): Stmt { + return AssignStmt.of(value, getExpr()) + } +} + +data class Btor2SliceOperation( + override val nid: UInt, + override val sort: Btor2Sort, + val operand: Btor2Node, + val u: BigInteger, + val l: BigInteger, +) : Btor2Operation(nid, sort) { + val value = Decls.Var("slice_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + val newU: BigInteger = u + BigInteger.valueOf(1) + // val newU: BigInteger = if (u == l) u + BigInteger.valueOf(1) else u + return BvExtractExpr.create( + operand.getExpr() as Expr, + IntLitExpr.of(l), + IntLitExpr.of(newU), + ) + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } + + override fun getStmt(): Stmt { + return AssignStmt.of(value, getExpr() as Expr) + } +} + +data class Btor2BinaryOperation( + override val nid: UInt, + override val sort: Btor2Sort, + val operator: Btor2BinaryOperator, + val op1: Btor2Node, + val op2: Btor2Node, + val opd1_negated: Boolean, + val opd2_negated: Boolean, +) : Btor2Operation(nid, sort) { + val value = Decls.Var("binary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + val op1ExprLogical = + if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) + else op1.getExpr() as Expr + val op2ExprLogical = + if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) + else op2.getExpr() as Expr + // val op1ExprArithmetic = if (opd1_negated) BvNegExpr.create(op1.getExpr() as Expr) + // else op1.getExpr() as Expr + // val op2ExprArithmetic = if (opd2_negated) BvNegExpr.create(op2.getExpr() as Expr) + // else op2.getExpr() as Expr + + return when (operator) { + Btor2BinaryOperator.ADD -> + BvAddExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + Btor2BinaryOperator.AND -> + BvAndExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + Btor2BinaryOperator.NAND -> + BvNotExpr.create( + BvAndExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + ) + Btor2BinaryOperator.NOR -> + BvNotExpr.create( + BvOrExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + ) + Btor2BinaryOperator.OR -> + BvOrExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + Btor2BinaryOperator.XNOR -> + BvNotExpr.create( + BvXorExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + ) + Btor2BinaryOperator.XOR -> + BvXorExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + Btor2BinaryOperator.MUL -> + BvMulExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + Btor2BinaryOperator.SUB -> + BvSubExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.UDIV -> + BvUDivExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.UREM -> + BvURemExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SDIV -> + BvSDivExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SREM -> + BvSRemExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SMOD -> + BvSModExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.CONCAT -> + BvConcatExpr.create( + mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + ) + Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") + Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") + Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") + Btor2BinaryOperator.SSUBO -> TODO("Signed subtraction with overflow not implemented yet") + Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") + Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") + Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") + Btor2BinaryOperator.ROL -> + BvRotateLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.ROR -> + BvRotateRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SLL -> + BvShiftLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SRA -> + BvArithShiftRightExpr.of(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.SRL -> + BvLogicShiftRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") + } + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } + + override fun getStmt(): Stmt { + return when (operator) { + Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.AND -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.NAND -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.NOR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.OR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.XNOR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.XOR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.MUL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SUB -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.UDIV -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.UREM -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SDIV -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SREM -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SMOD -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.CONCAT -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") + Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") + Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") + Btor2BinaryOperator.SSUBO -> TODO("Signed subtraction with overflow not implemented yet") + Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") + Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") + Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") + Btor2BinaryOperator.ROL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.ROR -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SLL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SRA -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.SRL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") + } + } +} + +data class Btor2Comparison( + override val nid: UInt, + override val sort: Btor2Sort, + val operator: Btor2ComparisonOperator, + val op1: Btor2Node, + val op2: Btor2Node, + val opd1_negated: Boolean, + val opd2_negated: Boolean, +) : Btor2Operation(nid, sort) { + val value = Decls.Var("comparison_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + val op1_expr = + if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) + else op1.getExpr() as Expr + val op2_expr = + if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) + else op2.getExpr() as Expr + return when (operator) { + Btor2ComparisonOperator.EQ -> + IteExpr.of( + BvEqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + // Eq(op1_expr as RefExpr, op2_expr as RefExpr) + Btor2ComparisonOperator.NEQ -> + IteExpr.of( + BvNeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2ComparisonOperator.SLT -> + IteExpr.of( + BvSLtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2ComparisonOperator.SLTE -> + IteExpr.of( + BvSLeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2ComparisonOperator.SGT -> + IteExpr.of( + BvSGtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2ComparisonOperator.SGTE -> + IteExpr.of( + BvSGeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2ComparisonOperator.ULT -> + IteExpr.of( + BvULtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2ComparisonOperator.ULTE -> + IteExpr.of( + BvULeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2ComparisonOperator.UGT -> + IteExpr.of( + BvUGtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2ComparisonOperator.UGTE -> + IteExpr.of( + BvUGeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + } + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } + + override fun getStmt(): Stmt { + return when (operator) { + Btor2ComparisonOperator.EQ -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.NEQ -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.SLT -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.SLTE -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.SGT -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.SGTE -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.ULT -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.ULTE -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.UGT -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.UGTE -> AssignStmt.of(value, getExpr() as Expr) + } + } +} + +data class Btor2Boolean( + override val nid: UInt, + override val sort: Btor2Sort, + val operator: Btor2BooleanOperator, + val op1: Btor2Node, + val op2: Btor2Node, + val opd1_negated: Boolean, + val opd2_negated: Boolean, +) : Btor2Operation(nid, sort) { + + val value = Decls.Var("boolean_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + return when (operator) { + Btor2BooleanOperator.IFF -> + IteExpr.of( + IffExpr.create( + if (opd1_negated) BvNotExpr.create(op1.getExpr()) else op1.getExpr(), + if (opd2_negated) BvNotExpr.create(op2.getExpr()) else op2.getExpr(), + ), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + Btor2BooleanOperator.IMPLIES -> + IteExpr.of( + ImplyExpr.create( + if (opd1_negated) BvNotExpr.create(op1.getExpr()) else op1.getExpr(), + if (opd2_negated) BvNotExpr.create(op2.getExpr()) else op2.getExpr(), + ), + BvExprs.Bv(BooleanArray(1) { true }), + BvExprs.Bv(BooleanArray(1) { false }), + ) + } + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } + + override fun getStmt(): Stmt { + return AssignStmt.of(value, getExpr()) + } +} + +// Ehhez a nidhez vezetünk be egy változót, bekötjük +data class Btor2TernaryOperation( + override val nid: UInt, + override val sort: Btor2Sort, + val operator: Btor2TernaryOperator, + val op1: Btor2Node, + val op2: Btor2Node, + val op3: Btor2Node, + val negated1: Boolean, + val negated2: Boolean, + val negated3: Boolean, +) : Btor2Operation(nid, sort) { + val value = Decls.Var("ternary_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return value + } + + override fun getExpr(): Expr { + // checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) + val op1Expr = + if (negated1) BvNotExpr.create(op1.getExpr() as Expr) + else (op1.getExpr() as Expr) + val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) + val op2Expr = + if (negated2) BvNegExpr.create(op2.getExpr() as Expr) + else (op2.getExpr() as Expr) + val op3Expr = + if (negated3) BvNegExpr.create(op3.getExpr() as Expr) + else (op3.getExpr() as Expr) + + return when (operator) { + Btor2TernaryOperator.ITE -> + IteExpr.of(op1ExprBool as Expr, op2Expr as Expr, op3Expr as Expr) + Btor2TernaryOperator.WRITE -> TODO() + } + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } + + override fun getStmt(): Stmt { + return when (operator) { + Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr() as Expr) + Btor2TernaryOperator.WRITE -> TODO("Write operation not implemented yet") + } + } +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt index b48612d5cc..85f81171b6 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2OperatorEnums.kt @@ -1,86 +1,85 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.models - -enum class Btor2ExtOperator { - SEXT, - UEXT -} - -enum class Btor2UnaryOperator { - NOT, - INC, - DEC, - NEG, - REDAND, - REDOR, - REDXOR -} - -enum class Btor2ComparisonOperator { - EQ, - NEQ, - SLT, - SLTE, - SGT, - SGTE, - ULT, - ULTE, - UGT, - UGTE -} - -enum class Btor2BooleanOperator { - IFF, - IMPLIES -} - -enum class Btor2BinaryOperator { - AND, - NAND, - NOR, - OR, - XNOR, - XOR, - ADD, - MUL, - UDIV, - UREM, - SDIV, - SREM, - SMOD, - CONCAT, - SADDO, - SDIVO, - SMULO, - SSUBO, - UADDO, - UMULO, - USUBO, - ROL, - ROR, - SLL, - SRA, - SRL, - SUB, - READ -} - -enum class Btor2TernaryOperator { - ITE, - WRITE -} +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hu.bme.mit.theta.frontend.models + +enum class Btor2ExtOperator { + SEXT, + UEXT, +} + +enum class Btor2UnaryOperator { + NOT, + INC, + DEC, + NEG, + REDAND, + REDOR, + REDXOR, +} + +enum class Btor2ComparisonOperator { + EQ, + NEQ, + SLT, + SLTE, + SGT, + SGTE, + ULT, + ULTE, + UGT, + UGTE, +} + +enum class Btor2BooleanOperator { + IFF, + IMPLIES, +} + +enum class Btor2BinaryOperator { + AND, + NAND, + NOR, + OR, + XNOR, + XOR, + ADD, + MUL, + UDIV, + UREM, + SDIV, + SREM, + SMOD, + CONCAT, + SADDO, + SDIVO, + SMULO, + SSUBO, + UADDO, + UMULO, + USUBO, + ROL, + ROR, + SLL, + SRA, + SRL, + SUB, + READ, +} + +enum class Btor2TernaryOperator { + ITE, + WRITE, +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index bfc35bf348..30aa5d2301 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -13,39 +13,34 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.stmt.AssumeStmt import hu.bme.mit.theta.core.stmt.Stmt import hu.bme.mit.theta.core.type.Expr -import hu.bme.mit.theta.core.type.abstracttype.EqExpr import hu.bme.mit.theta.core.type.anytype.RefExpr -import hu.bme.mit.theta.core.type.booltype.BoolExprs import hu.bme.mit.theta.core.type.booltype.BoolType -import hu.bme.mit.theta.core.type.bvtype.BvEqExpr import hu.bme.mit.theta.core.type.bvtype.BvExprs import hu.bme.mit.theta.core.type.bvtype.BvExprs.Bv import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq -import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.core.type.bvtype.BvType -data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) -{ - override fun getVar(): VarDecl<*>? { - return null - } +data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : + Btor2Node(nid, null) { + override fun getVar(): VarDecl<*>? { + return null + } - override fun getExpr(): Expr { - return Eq(operand.getVar()?.ref as RefExpr, BvExprs.Bv(BooleanArray(1, {true}))) - } + override fun getExpr(): Expr { + return Eq(operand.getVar()?.ref as RefExpr, BvExprs.Bv(BooleanArray(1, { true }))) + } - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } - fun getStmt(): Stmt { - return AssumeStmt.of(getExpr()) - } -} \ No newline at end of file + fun getStmt(): Stmt { + return AssumeStmt.of(getExpr()) + } +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt index b860147208..f930ebea1a 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package hu.bme.mit.theta.frontend.models import hu.bme.mit.theta.core.decl.Decls @@ -27,98 +26,114 @@ import hu.bme.mit.theta.core.type.bvtype.BvExprs import hu.bme.mit.theta.core.type.bvtype.BvNotExpr import hu.bme.mit.theta.core.type.bvtype.BvType -abstract class Btor2Stateful(id: UInt, sort: Btor2Sort, state: Btor2State?, value: Btor2Node?) : Btor2Node(id, sort) { - abstract val state: Btor2State? - abstract val value: Btor2Node? +abstract class Btor2Stateful(id: UInt, sort: Btor2Sort, state: Btor2State?, value: Btor2Node?) : + Btor2Node(id, sort) { + abstract val state: Btor2State? + abstract val value: Btor2Node? - abstract fun getStmt(): Stmt + abstract fun getStmt(): Stmt } // Inputs and States -data class Btor2Input(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State?, - override val value: Btor2Node?) : Btor2Stateful(nid, sort,null,null) -{ - val declsVar = Decls.Var("input_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return declsVar - } - - override fun getExpr(): Expr<*> { - return RefExpr.of(declsVar) - } - - override fun getStmt(): Stmt { - return HavocStmt.of(declsVar) - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } - +data class Btor2Input( + override val nid: UInt, + override val sort: Btor2Sort, + override val state: Btor2State?, + override val value: Btor2Node?, +) : Btor2Stateful(nid, sort, null, null) { + val declsVar = Decls.Var("input_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return declsVar + } + + override fun getExpr(): Expr<*> { + return RefExpr.of(declsVar) + } + + override fun getStmt(): Stmt { + return HavocStmt.of(declsVar) + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } } -data class Btor2State(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State?, - override val value: Btor2Node?) : Btor2Stateful(nid, sort,null,null) { - val declsVar = Decls.Var("state_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl? { - return declsVar - } - override fun getExpr(): Expr<*> { - return RefExpr.of(declsVar) - } - - override fun getStmt(): Stmt { - TODO("We might not even need this Stmt for states") - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } +data class Btor2State( + override val nid: UInt, + override val sort: Btor2Sort, + override val state: Btor2State?, + override val value: Btor2Node?, +) : Btor2Stateful(nid, sort, null, null) { + val declsVar = Decls.Var("state_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl? { + return declsVar + } + + override fun getExpr(): Expr<*> { + return RefExpr.of(declsVar) + } + + override fun getStmt(): Stmt { + TODO("We might not even need this Stmt for states") + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } } + // Value was Btor2Const -data class Btor2Init(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State, - override val value: Btor2Node) : Btor2Stateful(nid, sort, state, value) -{ - val declsVar = Decls.Var("init_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return declsVar - } - - override fun getExpr(): Expr<*> { - TODO("Not yet implemented") - } - - override fun getStmt(): Stmt { - return AssignStmt.of(state.getVar(), value.getExpr() as Expr) - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } +data class Btor2Init( + override val nid: UInt, + override val sort: Btor2Sort, + override val state: Btor2State, + override val value: Btor2Node, +) : Btor2Stateful(nid, sort, state, value) { + val declsVar = Decls.Var("init_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return declsVar + } + + override fun getExpr(): Expr<*> { + TODO("Not yet implemented") + } + + override fun getStmt(): Stmt { + return AssignStmt.of(state.getVar(), value.getExpr() as Expr) + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } } -data class Btor2Next(override val nid: UInt, override val sort: Btor2Sort, override val state: Btor2State, override val value: Btor2Node, - val negated: Boolean) : Btor2Stateful(nid, sort, state, value) -{ - val declsVar = Decls.Var("next_$nid", BvExprs.BvType(sort.width.toInt())) - - override fun getVar(): VarDecl<*>? { - return declsVar - } - - override fun getExpr(): Expr<*> { - return RefExpr.of(declsVar) - } - - override fun getStmt(): Stmt { - return if (negated) AssignStmt.of(state.getVar(), BvNotExpr.create(value.getExpr())) else - AssignStmt.of(state.getVar(), value.getExpr() as Expr) - } - - override fun accept(visitor: Btor2NodeVisitor, param : P): R { - return visitor.visit(this, param) - } +data class Btor2Next( + override val nid: UInt, + override val sort: Btor2Sort, + override val state: Btor2State, + override val value: Btor2Node, + val negated: Boolean, +) : Btor2Stateful(nid, sort, state, value) { + val declsVar = Decls.Var("next_$nid", BvExprs.BvType(sort.width.toInt())) + + override fun getVar(): VarDecl<*>? { + return declsVar + } + + override fun getExpr(): Expr<*> { + return RefExpr.of(declsVar) + } + + override fun getStmt(): Stmt { + return if (negated) AssignStmt.of(state.getVar(), BvNotExpr.create(value.getExpr())) + else AssignStmt.of(state.getVar(), value.getExpr() as Expr) + } + + override fun accept(visitor: Btor2NodeVisitor, param: P): R { + return visitor.visit(this, param) + } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index 02b97f827c..7a6eedad9c 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -13,54 +13,50 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package hu.bme.mit.theta.frontend.visitors import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser -import hu.bme.mit.theta.common.logging.ConsoleLogger -import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.frontend.models.* class Btor2Visitor : Btor2BaseVisitor() { - private val sortVisitor = SortVisitor() - private val constantVisitor = ConstantVisitor() - private val operationVisitor = OperationVisitor() - private val statefulVisitor = StateVisitor() - //private val logger = ConsoleLogger(Logger.Level.VERBOSE) - - override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { - for (child in ctx?.children!!) { - child.accept(this) - } - return Btor2Circuit - } - - override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { - val result = sortVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Sort visited \t") - Btor2Circuit.sorts[result.sid] = result - return Btor2Circuit - } - - override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { - val result = constantVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Constant visited \t") - return Btor2Circuit - } + private val sortVisitor = SortVisitor() + private val constantVisitor = ConstantVisitor() + private val operationVisitor = OperationVisitor() + private val statefulVisitor = StateVisitor() - override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { - val result = operationVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Operation visited \t") - return Btor2Circuit - } + // private val logger = ConsoleLogger(Logger.Level.VERBOSE) - override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { - val result = statefulVisitor.visit(ctx) - //logger.write(Logger.Level.VERBOSE, "Stateful visited \t") - return Btor2Circuit + override fun visitLine(ctx: Btor2Parser.LineContext?): Btor2Circuit { + for (child in ctx?.children!!) { + child.accept(this) } - - -} \ No newline at end of file + return Btor2Circuit + } + + override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { + val result = sortVisitor.visit(ctx) + // logger.write(Logger.Level.VERBOSE, "Sort visited \t") + Btor2Circuit.sorts[result.sid] = result + return Btor2Circuit + } + + override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Circuit { + val result = constantVisitor.visit(ctx) + // logger.write(Logger.Level.VERBOSE, "Constant visited \t") + return Btor2Circuit + } + + override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Circuit { + val result = operationVisitor.visit(ctx) + // logger.write(Logger.Level.VERBOSE, "Operation visited \t") + return Btor2Circuit + } + + override fun visitStateful(ctx: Btor2Parser.StatefulContext?): Btor2Circuit { + val result = statefulVisitor.visit(ctx) + // logger.write(Logger.Level.VERBOSE, "Stateful visited \t") + return Btor2Circuit + } +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt index 9c70605cd3..bd49204992 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -1,107 +1,108 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.visitors - -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser -import hu.bme.mit.theta.frontend.models.* -import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts -import java.math.BigInteger - -class ConstantVisitor : Btor2BaseVisitor() { - val idVisitor = IdVisitor() - - override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const { - check(ctx.childCount==1) - return this.visit(ctx.children[0]) - } - - override fun visitConstant(ctx: Btor2Parser.ConstantContext): Btor2Const { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - val value = ctx.NUM().text.toString() - val size = sort.width.toInt() - val binArray = BooleanArray(size) { index -> - (value[index] - '0') == 1 - } - var node = Btor2Const(nid, binArray, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitConstant_d(ctx: Btor2Parser.Constant_dContext): Btor2Const { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - val value = ctx.NUM().text.toBigInteger() - val size = sort.width.toLong().toBigInteger() - val binArray = BooleanArray(size.toInt()) { index -> - ((value and ((BigInteger.ONE.shiftLeft(size.toInt())) - BigInteger.ONE)) - .shiftRight(size.toInt() - 1 - index) and BigInteger.ONE) == BigInteger.ONE - } - var node = Btor2Const(nid, binArray, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitConstant_h(ctx: Btor2Parser.Constant_hContext): Btor2Const { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - val value = ctx.NUM().toString() - val size = sort.width.toInt() - val binArray = BooleanArray(size) { index -> - val hexDigit = value[index / 4] - val bitIndex = 3 - (index % 4) - ((hexDigit - '0') shr bitIndex and 1) == 1 - } - var node = Btor2Const(nid, binArray, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = sorts[sid] as Btor2BitvecSort - val value = when(ctx.fill.text) { - "one" -> { - val size = sort.width.toInt() - BooleanArray(size) { it == size - 1 } - } - "ones" -> { - val size = sort.width.toInt() - BooleanArray(size) { true } - } - "zero" -> { - val size = sort.width.toInt() - BooleanArray(size) { false } - } - else -> { - throw RuntimeException("Constant with filler shorthand needs to be one/ones/zero") - } - } - var node = Btor2Const(nid, value, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } -} \ No newline at end of file +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hu.bme.mit.theta.frontend.visitors + +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* +import hu.bme.mit.theta.frontend.models.Btor2Circuit.sorts +import java.math.BigInteger + +class ConstantVisitor : Btor2BaseVisitor() { + val idVisitor = IdVisitor() + + override fun visitConstantNode(ctx: Btor2Parser.ConstantNodeContext): Btor2Const { + check(ctx.childCount == 1) + return this.visit(ctx.children[0]) + } + + override fun visitConstant(ctx: Btor2Parser.ConstantContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = ctx.NUM().text.toString() + val size = sort.width.toInt() + val binArray = BooleanArray(size) { index -> (value[index] - '0') == 1 } + var node = Btor2Const(nid, binArray, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitConstant_d(ctx: Btor2Parser.Constant_dContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = ctx.NUM().text.toBigInteger() + val size = sort.width.toLong().toBigInteger() + val binArray = + BooleanArray(size.toInt()) { index -> + ((value and ((BigInteger.ONE.shiftLeft(size.toInt())) - BigInteger.ONE)).shiftRight( + size.toInt() - 1 - index + ) and BigInteger.ONE) == BigInteger.ONE + } + var node = Btor2Const(nid, binArray, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitConstant_h(ctx: Btor2Parser.Constant_hContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = ctx.NUM().toString() + val size = sort.width.toInt() + val binArray = + BooleanArray(size) { index -> + val hexDigit = value[index / 4] + val bitIndex = 3 - (index % 4) + ((hexDigit - '0') shr bitIndex and 1) == 1 + } + var node = Btor2Const(nid, binArray, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitFilled_constant(ctx: Btor2Parser.Filled_constantContext): Btor2Const { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = sorts[sid] as Btor2BitvecSort + val value = + when (ctx.fill.text) { + "one" -> { + val size = sort.width.toInt() + BooleanArray(size) { it == size - 1 } + } + "ones" -> { + val size = sort.width.toInt() + BooleanArray(size) { true } + } + "zero" -> { + val size = sort.width.toInt() + BooleanArray(size) { false } + } + else -> { + throw RuntimeException("Constant with filler shorthand needs to be one/ones/zero") + } + } + var node = Btor2Const(nid, value, sort) + Btor2Circuit.constants[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt index 026695c020..b97c2569bb 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/IdVisitor.kt @@ -13,19 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package hu.bme.mit.theta.frontend.visitors import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser class IdVisitor : Btor2BaseVisitor() { - override fun visitNid(ctx: Btor2Parser.NidContext): UInt { - return ctx.NUM().text.toUInt() - } - - override fun visitSid(ctx: Btor2Parser.SidContext): UInt { - return ctx.NUM().text.toUInt() - } + override fun visitNid(ctx: Btor2Parser.NidContext): UInt { + return ctx.NUM().text.toUInt() + } -} \ No newline at end of file + override fun visitSid(ctx: Btor2Parser.SidContext): UInt { + return ctx.NUM().text.toUInt() + } +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index b1487d414e..4e2566d2e9 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -1,198 +1,197 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.visitors - -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser -import hu.bme.mit.theta.frontend.models.* -import hu.bme.mit.theta.frontend.models.Btor2Circuit.nodes -import kotlin.math.abs - -class OperationVisitor : Btor2BaseVisitor() { - val idVisitor = IdVisitor() - override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Node { - check(ctx.childCount == 1) - return ctx.children[0].accept(this) - } - - override fun visitExt(ctx: Btor2Parser.ExtContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - val op = when (ctx.operator.text) { - "sext" -> Btor2ExtOperator.SEXT - "uext" -> Btor2ExtOperator.UEXT - else -> throw RuntimeException("Extension operator unknown") - } - - val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node - val w = ctx.w.text.toUInt() - - check(sort.width == (opd.sort as Btor2BitvecSort).width + w) - val node = Btor2ExtOperation(nid, sort, op, opd, w) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } - - override fun visitSlice(ctx: Btor2Parser.SliceContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - - val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node - val u = ctx.u.text.toBigInteger() - val l = ctx.l.text.toBigInteger() - - val node = Btor2SliceOperation(nid, sort, opd, u, l) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } - - override fun visitBinop(ctx: Btor2Parser.BinopContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - - val opd1_id = ctx.opd1.text.toInt() - val opd2_id = ctx.opd2.text.toInt() - - val opd1_negated = opd1_id < 0 - val opd2_negated = opd2_id < 0 - - val opd1 = nodes[abs(opd1_id).toUInt()] as Btor2Node - val opd2 = nodes[abs(opd2_id).toUInt()] as Btor2Node - - val op = when (ctx.BINOP().text) { - "and" -> Btor2BinaryOperator.AND - "nand" -> Btor2BinaryOperator.NAND - "nor" -> Btor2BinaryOperator.NOR - "or" -> Btor2BinaryOperator.OR - "xnor" -> Btor2BinaryOperator.XNOR - "xor" -> Btor2BinaryOperator.XOR - "add" -> Btor2BinaryOperator.ADD - "mul" -> Btor2BinaryOperator.MUL - "sub" -> Btor2BinaryOperator.SUB - "udiv" -> Btor2BinaryOperator.UDIV - "urem" -> Btor2BinaryOperator.UREM - "sdiv" -> Btor2BinaryOperator.SDIV - "srem" -> Btor2BinaryOperator.SREM - "smod" -> Btor2BinaryOperator.SMOD - "concat" -> Btor2BinaryOperator.CONCAT - "saddo" -> Btor2BinaryOperator.SADDO - "sdivo" -> Btor2BinaryOperator.SDIVO - "smulo" -> Btor2BinaryOperator.SMULO - "ssubo" -> Btor2BinaryOperator.SSUBO - "uaddo" -> Btor2BinaryOperator.UADDO - "umulo" -> Btor2BinaryOperator.UMULO - "usubo" -> Btor2BinaryOperator.USUBO - "rol" -> Btor2BinaryOperator.ROL - "ror" -> Btor2BinaryOperator.ROR - "sll" -> Btor2BinaryOperator.SLL - "sra" -> Btor2BinaryOperator.SRA - "srl" -> Btor2BinaryOperator.SRL - "eq" -> Btor2ComparisonOperator.EQ - "neq" -> Btor2ComparisonOperator.NEQ - "slt" -> Btor2ComparisonOperator.SLT - "slte" -> Btor2ComparisonOperator.SLTE - "sgt" -> Btor2ComparisonOperator.SGT - "sgte" -> Btor2ComparisonOperator.SGTE - "ult" -> Btor2ComparisonOperator.ULT - "ulte" -> Btor2ComparisonOperator.ULTE - "ugt" -> Btor2ComparisonOperator.UGT - "ugte" -> Btor2ComparisonOperator.UGTE - "iff" -> Btor2BooleanOperator.IFF - "implies" -> Btor2BooleanOperator.IMPLIES - - else -> throw RuntimeException("Binary operator unknown: ${ctx.BINOP().text}") - } - - - if (op is Btor2ComparisonOperator) { - val node = Btor2Comparison(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) - Btor2Circuit.nodes[nid] = node - return node - } - else if (op is Btor2BinaryOperator) { - val node = Btor2BinaryOperation(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } - else if (op is Btor2BooleanOperator) { - // Boolean operators are not operations, but comparisons - val node = Btor2Boolean(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) - Btor2Circuit.nodes[nid] = node - return node - } - else { - throw RuntimeException("Binary operator unknown") - } - } - - override fun visitUnop(ctx: Btor2Parser.UnopContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - - val op = when (ctx.UNARYOP().text) { - "not" -> Btor2UnaryOperator.NOT - "inc" -> Btor2UnaryOperator.INC - "dec" -> Btor2UnaryOperator.DEC - "neg" -> Btor2UnaryOperator.NEG - "redand" -> Btor2UnaryOperator.REDAND - "redor" -> Btor2UnaryOperator.REDOR - "redxor" -> Btor2UnaryOperator.REDXOR - else -> throw RuntimeException("Unary operator unknown") - } - - val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node - - - val node = Btor2UnaryOperation(nid, sort, op, opd) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } - - override fun visitTerop(ctx: Btor2Parser.TeropContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort : Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort - val op = when (ctx.TERNARYOP().text) { - "ite" -> Btor2TernaryOperator.ITE - "write" -> Btor2TernaryOperator.WRITE - else -> throw RuntimeException("Ternary operator unknown") - } - val negated1 = ctx.opd1.text.toInt() < 0 - val opd1Index = abs(ctx.opd1.text.toInt()).toUInt() - val negated2 = ctx.opd2.text.toInt() < 0 - val negated3 = ctx.opd3.text.toInt() < 0 - val opd2Index = abs(ctx.opd2.text.toInt()).toUInt() - val opd3Index = abs(ctx.opd3.text.toInt()).toUInt() - - val opd1 = nodes[opd1Index] as Btor2Node - val opd2 = nodes[opd2Index] as Btor2Node - val opd3 = nodes[opd3Index] as Btor2Node - - val node = Btor2TernaryOperation(nid, sort, op, opd1, opd2, opd3, negated1, negated2, negated3) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node - return node - } -} \ No newline at end of file +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hu.bme.mit.theta.frontend.visitors + +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* +import hu.bme.mit.theta.frontend.models.Btor2Circuit.nodes +import kotlin.math.abs + +class OperationVisitor : Btor2BaseVisitor() { + val idVisitor = IdVisitor() + + override fun visitOperation(ctx: Btor2Parser.OperationContext): Btor2Node { + check(ctx.childCount == 1) + return ctx.children[0].accept(this) + } + + override fun visitExt(ctx: Btor2Parser.ExtContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + val op = + when (ctx.operator.text) { + "sext" -> Btor2ExtOperator.SEXT + "uext" -> Btor2ExtOperator.UEXT + else -> throw RuntimeException("Extension operator unknown") + } + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val w = ctx.w.text.toUInt() + + check(sort.width == (opd.sort as Btor2BitvecSort).width + w) + val node = Btor2ExtOperation(nid, sort, op, opd, w) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + + override fun visitSlice(ctx: Btor2Parser.SliceContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + val u = ctx.u.text.toBigInteger() + val l = ctx.l.text.toBigInteger() + + val node = Btor2SliceOperation(nid, sort, opd, u, l) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + + override fun visitBinop(ctx: Btor2Parser.BinopContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val opd1_id = ctx.opd1.text.toInt() + val opd2_id = ctx.opd2.text.toInt() + + val opd1_negated = opd1_id < 0 + val opd2_negated = opd2_id < 0 + + val opd1 = nodes[abs(opd1_id).toUInt()] as Btor2Node + val opd2 = nodes[abs(opd2_id).toUInt()] as Btor2Node + + val op = + when (ctx.BINOP().text) { + "and" -> Btor2BinaryOperator.AND + "nand" -> Btor2BinaryOperator.NAND + "nor" -> Btor2BinaryOperator.NOR + "or" -> Btor2BinaryOperator.OR + "xnor" -> Btor2BinaryOperator.XNOR + "xor" -> Btor2BinaryOperator.XOR + "add" -> Btor2BinaryOperator.ADD + "mul" -> Btor2BinaryOperator.MUL + "sub" -> Btor2BinaryOperator.SUB + "udiv" -> Btor2BinaryOperator.UDIV + "urem" -> Btor2BinaryOperator.UREM + "sdiv" -> Btor2BinaryOperator.SDIV + "srem" -> Btor2BinaryOperator.SREM + "smod" -> Btor2BinaryOperator.SMOD + "concat" -> Btor2BinaryOperator.CONCAT + "saddo" -> Btor2BinaryOperator.SADDO + "sdivo" -> Btor2BinaryOperator.SDIVO + "smulo" -> Btor2BinaryOperator.SMULO + "ssubo" -> Btor2BinaryOperator.SSUBO + "uaddo" -> Btor2BinaryOperator.UADDO + "umulo" -> Btor2BinaryOperator.UMULO + "usubo" -> Btor2BinaryOperator.USUBO + "rol" -> Btor2BinaryOperator.ROL + "ror" -> Btor2BinaryOperator.ROR + "sll" -> Btor2BinaryOperator.SLL + "sra" -> Btor2BinaryOperator.SRA + "srl" -> Btor2BinaryOperator.SRL + "eq" -> Btor2ComparisonOperator.EQ + "neq" -> Btor2ComparisonOperator.NEQ + "slt" -> Btor2ComparisonOperator.SLT + "slte" -> Btor2ComparisonOperator.SLTE + "sgt" -> Btor2ComparisonOperator.SGT + "sgte" -> Btor2ComparisonOperator.SGTE + "ult" -> Btor2ComparisonOperator.ULT + "ulte" -> Btor2ComparisonOperator.ULTE + "ugt" -> Btor2ComparisonOperator.UGT + "ugte" -> Btor2ComparisonOperator.UGTE + "iff" -> Btor2BooleanOperator.IFF + "implies" -> Btor2BooleanOperator.IMPLIES + + else -> throw RuntimeException("Binary operator unknown: ${ctx.BINOP().text}") + } + + if (op is Btor2ComparisonOperator) { + val node = Btor2Comparison(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) + Btor2Circuit.nodes[nid] = node + return node + } else if (op is Btor2BinaryOperator) { + val node = Btor2BinaryOperation(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } else if (op is Btor2BooleanOperator) { + // Boolean operators are not operations, but comparisons + val node = Btor2Boolean(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) + Btor2Circuit.nodes[nid] = node + return node + } else { + throw RuntimeException("Binary operator unknown") + } + } + + override fun visitUnop(ctx: Btor2Parser.UnopContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + + val op = + when (ctx.UNARYOP().text) { + "not" -> Btor2UnaryOperator.NOT + "inc" -> Btor2UnaryOperator.INC + "dec" -> Btor2UnaryOperator.DEC + "neg" -> Btor2UnaryOperator.NEG + "redand" -> Btor2UnaryOperator.REDAND + "redor" -> Btor2UnaryOperator.REDOR + "redxor" -> Btor2UnaryOperator.REDXOR + else -> throw RuntimeException("Unary operator unknown") + } + + val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node + + val node = Btor2UnaryOperation(nid, sort, op, opd) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } + + override fun visitTerop(ctx: Btor2Parser.TeropContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort: Btor2BitvecSort = Btor2Circuit.sorts[sid] as Btor2BitvecSort + val op = + when (ctx.TERNARYOP().text) { + "ite" -> Btor2TernaryOperator.ITE + "write" -> Btor2TernaryOperator.WRITE + else -> throw RuntimeException("Ternary operator unknown") + } + val negated1 = ctx.opd1.text.toInt() < 0 + val opd1Index = abs(ctx.opd1.text.toInt()).toUInt() + val negated2 = ctx.opd2.text.toInt() < 0 + val negated3 = ctx.opd3.text.toInt() < 0 + val opd2Index = abs(ctx.opd2.text.toInt()).toUInt() + val opd3Index = abs(ctx.opd3.text.toInt()).toUInt() + + val opd1 = nodes[opd1Index] as Btor2Node + val opd2 = nodes[opd2Index] as Btor2Node + val opd3 = nodes[opd3Index] as Btor2Node + + val node = Btor2TernaryOperation(nid, sort, op, opd1, opd2, opd3, negated1, negated2, negated3) + Btor2Circuit.nodes[nid] = node + Btor2Circuit.ops[nid] = node + return node + } +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt index 3dcc2dc581..9008265657 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt @@ -13,22 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package hu.bme.mit.theta.frontend.visitors - import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.frontend.models.* class SortVisitor : Btor2BaseVisitor() { - override fun visitSort(ctx: Btor2Parser.SortContext): Btor2Sort { - return this.visitBitvec_sort(ctx.bitvec_sort()) - } + override fun visitSort(ctx: Btor2Parser.SortContext): Btor2Sort { + return this.visitBitvec_sort(ctx.bitvec_sort()) + } - override fun visitBitvec_sort(ctx: Btor2Parser.Bitvec_sortContext): Btor2Sort { - var sort = Btor2BitvecSort(ctx.id.NUM().text.toUInt(), ctx.width.text.toUInt()) - Btor2Circuit.sorts[sort.sid] = sort as Btor2Sort - return sort - } -} \ No newline at end of file + override fun visitBitvec_sort(ctx: Btor2Parser.Bitvec_sortContext): Btor2Sort { + var sort = Btor2BitvecSort(ctx.id.NUM().text.toUInt(), ctx.width.text.toUInt()) + Btor2Circuit.sorts[sort.sid] = sort as Btor2Sort + return sort + } +} diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index 1096a1818d..03a3376e56 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -1,95 +1,95 @@ -/* - * Copyright 2025 Budapest University of Technology and Economics - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package hu.bme.mit.theta.frontend.visitors - -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor -import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser -import hu.bme.mit.theta.frontend.models.* -import kotlin.math.abs - -class StateVisitor : Btor2BaseVisitor() { - private val idVisitor = IdVisitor() - - override fun visitStateful(ctx: Btor2Parser.StatefulContext): Btor2Node { - check(ctx.childCount==1) - return ctx.children[0].accept(this) - } - - override fun visitState(ctx: Btor2Parser.StateContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort = Btor2Circuit.sorts[sid] as Btor2Sort - - val node = Btor2State(nid, sort, null, null) - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitInput(ctx: Btor2Parser.InputContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort = Btor2Circuit.sorts[sid] as Btor2Sort - - val node = Btor2Input(nid, sort, null, null) - Btor2Circuit.nodes[nid] = node - return node - } - - override fun visitInit(ctx: Btor2Parser.InitContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort = Btor2Circuit.sorts[sid]!! - - val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State - val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Node - - - check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) - val node = Btor2Init(nid, sort, param1, param2) - Btor2Circuit.states[nid] = node - return node - } - - override fun visitNext(ctx: Btor2Parser.NextContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val sid = idVisitor.visit(ctx.sid()) - val sort = Btor2Circuit.sorts[sid] as Btor2Sort - - val param2_id = ctx.param2.text.toInt() - - val param2_negated = param2_id < 0 - val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State - val param2 = Btor2Circuit.nodes[abs(param2_id).toUInt()] as Btor2Node - val node = Btor2Next(nid, sort, param1, param2, param2_negated) - Btor2Circuit.states[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } -// Only adding bads - override fun visitProperty(ctx: Btor2Parser.PropertyContext): Btor2Node { - val nid = idVisitor.visit(ctx.id) - val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) - when (ctx.property_type.text) { - "bad" -> { - Btor2Circuit.properties[nid] = node - Btor2Circuit.nodes[nid] = node - return node - } - else -> throw IllegalArgumentException("Not implemented property type: ${ctx.property_type.text}") - } - } -} \ No newline at end of file +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package hu.bme.mit.theta.frontend.visitors + +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2BaseVisitor +import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser +import hu.bme.mit.theta.frontend.models.* +import kotlin.math.abs + +class StateVisitor : Btor2BaseVisitor() { + private val idVisitor = IdVisitor() + + override fun visitStateful(ctx: Btor2Parser.StatefulContext): Btor2Node { + check(ctx.childCount == 1) + return ctx.children[0].accept(this) + } + + override fun visitState(ctx: Btor2Parser.StateContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val node = Btor2State(nid, sort, null, null) + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitInput(ctx: Btor2Parser.InputContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val node = Btor2Input(nid, sort, null, null) + Btor2Circuit.nodes[nid] = node + return node + } + + override fun visitInit(ctx: Btor2Parser.InitContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid]!! + + val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State + val param2 = Btor2Circuit.nodes[ctx.param2.NUM().text.toUInt()] as Btor2Node + + check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) + val node = Btor2Init(nid, sort, param1, param2) + Btor2Circuit.states[nid] = node + return node + } + + override fun visitNext(ctx: Btor2Parser.NextContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val sid = idVisitor.visit(ctx.sid()) + val sort = Btor2Circuit.sorts[sid] as Btor2Sort + + val param2_id = ctx.param2.text.toInt() + + val param2_negated = param2_id < 0 + val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State + val param2 = Btor2Circuit.nodes[abs(param2_id).toUInt()] as Btor2Node + val node = Btor2Next(nid, sort, param1, param2, param2_negated) + Btor2Circuit.states[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + + // Only adding bads + override fun visitProperty(ctx: Btor2Parser.PropertyContext): Btor2Node { + val nid = idVisitor.visit(ctx.id) + val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) + when (ctx.property_type.text) { + "bad" -> { + Btor2Circuit.properties[nid] = node + Btor2Circuit.nodes[nid] = node + return node + } + else -> + throw IllegalArgumentException("Not implemented property type: ${ctx.property_type.text}") + } + } +} diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 0e568947b5..0754e6d56c 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -1,128 +1,164 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package hu.bme.mit.theta.btor2xcfa -import hu.bme.mit.theta.core.stmt.AssignStmt import hu.bme.mit.theta.core.stmt.AssumeStmt -import hu.bme.mit.theta.core.stmt.HavocStmt -import hu.bme.mit.theta.core.stmt.SkipStmt -import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.booltype.BoolExprs import hu.bme.mit.theta.core.type.booltype.BoolExprs.Not -import hu.bme.mit.theta.core.type.booltype.BoolType -import hu.bme.mit.theta.core.type.booltype.NotExpr -import hu.bme.mit.theta.core.type.bvtype.BvType import hu.bme.mit.theta.frontend.models.Btor2Circuit -import hu.bme.mit.theta.frontend.models.Btor2Operation import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager -object Btor2XcfaBuilder{ - private var i : Int = 1 - fun btor2xcfa(circuit: Btor2Circuit) : XCFA { +object Btor2XcfaBuilder { + private var i: Int = 1 + + fun btor2xcfa(circuit: Btor2Circuit): XCFA { // checks fontos: nodes, ops, properties csak 1 legyen - check(Btor2Circuit.properties.size != 0, { "Circuit has no error property" }) - check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) - val ops = Btor2Circuit.ops.values.toList() - for(i in 1 until ops.size) { - check(ops[i].nid > ops[i - 1].nid, { "Ops are not in increasing order" }) - } - val nodes = Btor2Circuit.nodes.values.toList() - for(i in 1 until nodes.size) { - check(nodes[i].nid > nodes[i - 1].nid, { "Nodes are not in increasing order" }) - } + check(Btor2Circuit.properties.size != 0, { "Circuit has no error property" }) + check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) + val ops = Btor2Circuit.ops.values.toList() + for (i in 1 until ops.size) { + check(ops[i].nid > ops[i - 1].nid, { "Ops are not in increasing order" }) + } + val nodes = Btor2Circuit.nodes.values.toList() + for (i in 1 until nodes.size) { + check(nodes[i].nid > nodes[i - 1].nid, { "Nodes are not in increasing order" }) + } - val xcfaBuilder = XcfaBuilder("Btor2XCFA") - val procBuilder = XcfaProcedureBuilder("main", Btor2Pass()) - xcfaBuilder.addEntryPoint(procBuilder, emptyList()) - procBuilder.createInitLoc() + val xcfaBuilder = XcfaBuilder("Btor2XCFA") + val procBuilder = XcfaProcedureBuilder("main", Btor2Pass()) + xcfaBuilder.addEntryPoint(procBuilder, emptyList()) + procBuilder.createInitLoc() - Btor2Circuit.nodes.forEach() { - it.value.getVar()?.let { varDecl -> - procBuilder.addVar(varDecl) - } - } -/////////////////////////////////////////////// - // Initek - var lastLoc = procBuilder.initLoc - var newLoc = nextLoc(false,false,false) - // initekhez - procBuilder.addLoc(newLoc) + Btor2Circuit.nodes.forEach() { + it.value.getVar()?.let { varDecl -> procBuilder.addVar(varDecl) } + } + /////////////////////////////////////////////// + // Initek + var lastLoc = procBuilder.initLoc + var newLoc = nextLoc(false, false, false) + // initekhez + procBuilder.addLoc(newLoc) - val edge = XcfaEdge(lastLoc, newLoc, - SequenceLabel( - Btor2Circuit.states.filter { - if(it.value.getVar()!=null && it.value.getVar()!!.name.startsWith("init_")) true else false - }.map { - StmtLabel(it.value.getStmt(),metadata=EmptyMetaData) - }.toList() - ), EmptyMetaData + val edge = + XcfaEdge( + lastLoc, + newLoc, + SequenceLabel( + Btor2Circuit.states + .filter { + if (it.value.getVar() != null && it.value.getVar()!!.name.startsWith("init_")) true + else false + } + .map { StmtLabel(it.value.getStmt(), metadata = EmptyMetaData) } + .toList() + ), + EmptyMetaData, + ) + procBuilder.addEdge(edge) + i++ + lastLoc = newLoc + /////////////////////////////////////////////// + // Havoc változók + // Miután felvettük az initeket mehetnek a havoc változók + if ( + Btor2Circuit.states + .filter { it.value.getVar()?.name?.startsWith("input_") == true } + .isNotEmpty() + ) { + newLoc = nextLoc(false, false, false) + procBuilder.addLoc(newLoc) + val edge = + XcfaEdge( + lastLoc, + newLoc, + SequenceLabel( + Btor2Circuit.states + .filter { + if (it.value.getVar() != null && it.value.getVar()!!.name.startsWith("input_")) true + else false + } + .map { StmtLabel(it.value.getStmt(), metadata = EmptyMetaData) } + .toList() + ), + EmptyMetaData, ) - procBuilder.addEdge(edge) - i++ - lastLoc=newLoc -/////////////////////////////////////////////// - // Havoc változók - // Miután felvettük az initeket mehetnek a havoc változók - if(Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("input_") == true }.isNotEmpty()){ - newLoc = nextLoc(false, false, false) - procBuilder.addLoc(newLoc) - val edge = XcfaEdge(lastLoc, newLoc, - SequenceLabel( - Btor2Circuit.states.filter { - if(it.value.getVar()!=null && it.value.getVar()!!.name.startsWith("input_")) true else false - }.map { - StmtLabel(it.value.getStmt(),metadata=EmptyMetaData) - }.toList() - ), EmptyMetaData - ) - procBuilder.addEdge(edge) - lastLoc=newLoc - } + procBuilder.addEdge(edge) + lastLoc = newLoc + } -///////////////////////////////////////////// - // Végigmegyünk az operationökön + ///////////////////////////////////////////// + // Végigmegyünk az operationökön - Btor2Circuit.ops.forEach() { - val loc = nextLoc(false, false, false) + Btor2Circuit.ops.forEach() { + val loc = nextLoc(false, false, false) - procBuilder.addLoc(loc) + procBuilder.addLoc(loc) - val edge = XcfaEdge(lastLoc, loc, StmtLabel(it.value.getStmt()), EmptyMetaData) - procBuilder.addEdge(edge) - lastLoc=loc - } - procBuilder.createErrorLoc() - // Error kezelése - // Egyszerű példáink vannak, tehát egyelőre csak bad van benne - // Csak egy lesz -> Legyen hiba, ha több a bad - val bad = Btor2Circuit.properties.values.first() + val edge = XcfaEdge(lastLoc, loc, StmtLabel(it.value.getStmt()), EmptyMetaData) + procBuilder.addEdge(edge) + lastLoc = loc + } + procBuilder.createErrorLoc() + // Error kezelése + // Egyszerű példáink vannak, tehát egyelőre csak bad van benne + // Csak egy lesz -> Legyen hiba, ha több a bad + val bad = Btor2Circuit.properties.values.first() - procBuilder.addEdge(XcfaEdge(lastLoc, procBuilder.errorLoc.get(), StmtLabel(AssumeStmt.of(bad.getExpr())),EmptyMetaData)) - newLoc = nextLoc(false, false, false) - procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(AssumeStmt.of(BoolExprs.Not(bad.getExpr()))),EmptyMetaData)) - lastLoc = newLoc + procBuilder.addEdge( + XcfaEdge( + lastLoc, + procBuilder.errorLoc.get(), + StmtLabel(AssumeStmt.of(bad.getExpr())), + EmptyMetaData, + ) + ) + newLoc = nextLoc(false, false, false) + procBuilder.addEdge( + XcfaEdge( + lastLoc, + newLoc, + StmtLabel(AssumeStmt.of(BoolExprs.Not(bad.getExpr()))), + EmptyMetaData, + ) + ) + lastLoc = newLoc - // Circuit folytatása - // ha nincsen next akkor azt el kell havocolni - var nexts = Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() - val firstLoc = procBuilder.getLocs().elementAt(1) + // Circuit folytatása + // ha nincsen next akkor azt el kell havocolni + var nexts = + Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() + val firstLoc = procBuilder.getLocs().elementAt(1) - nexts.forEach { - newLoc = nextLoc(false, false, false) - procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.second.getStmt()),EmptyMetaData)) - lastLoc=newLoc - } - procBuilder.addEdge(XcfaEdge(lastLoc, firstLoc, metadata=EmptyMetaData)) - return xcfaBuilder.build() + nexts.forEach { + newLoc = nextLoc(false, false, false) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.second.getStmt()), EmptyMetaData)) + lastLoc = newLoc } + procBuilder.addEdge(XcfaEdge(lastLoc, firstLoc, metadata = EmptyMetaData)) + return xcfaBuilder.build() + } - private fun nextLoc(initial : Boolean, final : Boolean, error : Boolean) : XcfaLocation { - val loc = XcfaLocation("l${i}", initial, final, error, EmptyMetaData) - i++ - return loc - } + private fun nextLoc(initial: Boolean, final: Boolean, error: Boolean): XcfaLocation { + val loc = XcfaLocation("l${i}", initial, final, error, EmptyMetaData) + i++ + return loc + } } - class Btor2Pass() : ProcedurePassManager() { - // No optimization for now c: -} \ No newline at end of file + // No optimization for now c: +} diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index 65af52860d..f2cd341b75 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -1,3 +1,18 @@ +/* + * Copyright 2025 Budapest University of Technology and Economics + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Lexer import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.btor2xcfa.Btor2XcfaBuilder @@ -6,11 +21,11 @@ import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.visitors.Btor2Visitor import hu.bme.mit.theta.xcfa.model.toDot +import java.io.File import org.antlr.v4.runtime.BailErrorStrategy import org.antlr.v4.runtime.CharStreams import org.antlr.v4.runtime.CommonTokenStream import org.junit.jupiter.api.Test -import java.io.File /* * Copyright 2025 Budapest University of Technology and Economics @@ -29,23 +44,23 @@ import java.io.File */ class TestBtor2Xcfa { - @Test - fun testBtor2Xcfa() { - val logger = ConsoleLogger(Logger.Level.VERBOSE) - val visitor = Btor2Visitor() - val btor2File = File("") + @Test + fun testBtor2Xcfa() { + val logger = ConsoleLogger(Logger.Level.VERBOSE) + val visitor = Btor2Visitor() + val btor2File = File("") - val input = btor2File.readLines().joinToString("\n") - val cinput = CharStreams.fromString(input) - val lexer = Btor2Lexer(cinput) - val tokens = CommonTokenStream(lexer) - val parser = Btor2Parser(tokens) - parser.errorHandler = BailErrorStrategy() - val context = parser.btor2() + val input = btor2File.readLines().joinToString("\n") + val cinput = CharStreams.fromString(input) + val lexer = Btor2Lexer(cinput) + val tokens = CommonTokenStream(lexer) + val parser = Btor2Parser(tokens) + parser.errorHandler = BailErrorStrategy() + val context = parser.btor2() - context.accept(visitor) + context.accept(visitor) - val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) - logger.write( Logger.Level.VERBOSE, "XCFA built, result: " + xcfa.toDot() + "\n") - } -} \ No newline at end of file + val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) + logger.write(Logger.Level.VERBOSE, "XCFA built, result: " + xcfa.toDot() + "\n") + } +} diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index aabdbaba66..cb7d3dc625 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -21,7 +21,6 @@ import hu.bme.mit.theta.btor2xcfa.Btor2XcfaBuilder import hu.bme.mit.theta.c2xcfa.getXcfaFromC import hu.bme.mit.theta.cfa.CFA import hu.bme.mit.theta.cfa.dsl.CfaDslManager -import hu.bme.mit.theta.common.logging.ConsoleLogger import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.chc.ChcFrontend @@ -40,7 +39,6 @@ import hu.bme.mit.theta.xcfa.cli.params.XcfaConfig import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.ChcPasses import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager -import org.antlr.v4.runtime.BailErrorStrategy import java.io.File import java.io.FileInputStream import java.io.FileReader @@ -48,6 +46,7 @@ import javax.script.ScriptEngine import javax.script.ScriptEngineManager import kotlin.jvm.optionals.getOrNull import kotlin.system.exitProcess +import org.antlr.v4.runtime.BailErrorStrategy import org.antlr.v4.runtime.CharStreams import org.antlr.v4.runtime.CommonTokenStream @@ -105,11 +104,7 @@ fun getXcfa( } InputType.BTOR2 -> { - parseBTOR2( - config.inputConfig.input!!, - logger, - uniqueWarningLogger, - ) + parseBTOR2(config.inputConfig.input!!, logger, uniqueWarningLogger) } } } catch (e: Exception) { @@ -238,11 +233,7 @@ private fun parseChc( return xcfaBuilder.build() } -private fun parseBTOR2( - input: File, - logger: Logger, - uniqueWarningLogger: Logger -) : XCFA { +private fun parseBTOR2(input: File, logger: Logger, uniqueWarningLogger: Logger): XCFA { val visitor = Btor2Visitor() val btor2File = input @@ -257,6 +248,6 @@ private fun parseBTOR2( context.accept(visitor) val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) - logger.write( Logger.Level.MAINSTEP, "XCFA built successfully") + logger.write(Logger.Level.MAINSTEP, "XCFA built successfully") return xcfa -} \ No newline at end of file +} From 8f75fafb6bd15c6b260df1bbebec20602915db04 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 11:09:13 +0200 Subject: [PATCH 55/72] remove unnecessary parameter --- .../main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 2 +- .../src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 0754e6d56c..a6a639f343 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -25,7 +25,7 @@ import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager object Btor2XcfaBuilder { private var i: Int = 1 - fun btor2xcfa(circuit: Btor2Circuit): XCFA { + fun btor2xcfa(): XCFA { // checks fontos: nodes, ops, properties csak 1 legyen check(Btor2Circuit.properties.size != 0, { "Circuit has no error property" }) check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index cb7d3dc625..eda35ec9fd 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -247,7 +247,7 @@ private fun parseBTOR2(input: File, logger: Logger, uniqueWarningLogger: Logger) context.accept(visitor) - val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) + val xcfa = Btor2XcfaBuilder.btor2xcfa() logger.write(Logger.Level.MAINSTEP, "XCFA built successfully") return xcfa } From 5daad76275f945d1f1b09adcb5496067b11df61c Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 11:11:23 +0200 Subject: [PATCH 56/72] btor2xcfa builder comment cleanup --- .../Btor2XcfaBuilder.kt | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index a6a639f343..ab47eb6f26 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -26,7 +26,6 @@ object Btor2XcfaBuilder { private var i: Int = 1 fun btor2xcfa(): XCFA { - // checks fontos: nodes, ops, properties csak 1 legyen check(Btor2Circuit.properties.size != 0, { "Circuit has no error property" }) check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) val ops = Btor2Circuit.ops.values.toList() @@ -46,11 +45,11 @@ object Btor2XcfaBuilder { Btor2Circuit.nodes.forEach() { it.value.getVar()?.let { varDecl -> procBuilder.addVar(varDecl) } } - /////////////////////////////////////////////// - // Initek + + // Initializations var lastLoc = procBuilder.initLoc var newLoc = nextLoc(false, false, false) - // initekhez + procBuilder.addLoc(newLoc) val edge = @@ -71,9 +70,8 @@ object Btor2XcfaBuilder { procBuilder.addEdge(edge) i++ lastLoc = newLoc - /////////////////////////////////////////////// - // Havoc változók - // Miután felvettük az initeket mehetnek a havoc változók + + // Havoc initial value of variables if ( Btor2Circuit.states .filter { it.value.getVar()?.name?.startsWith("input_") == true } @@ -100,9 +98,8 @@ object Btor2XcfaBuilder { lastLoc = newLoc } - ///////////////////////////////////////////// - // Végigmegyünk az operationökön + // Add operations Btor2Circuit.ops.forEach() { val loc = nextLoc(false, false, false) @@ -113,9 +110,8 @@ object Btor2XcfaBuilder { lastLoc = loc } procBuilder.createErrorLoc() - // Error kezelése - // Egyszerű példáink vannak, tehát egyelőre csak bad van benne - // Csak egy lesz -> Legyen hiba, ha több a bad + + // Add Property val bad = Btor2Circuit.properties.values.first() procBuilder.addEdge( @@ -137,8 +133,7 @@ object Btor2XcfaBuilder { ) lastLoc = newLoc - // Circuit folytatása - // ha nincsen next akkor azt el kell havocolni + // Close circuit (update state values with nexts, havoc otherwise) var nexts = Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() val firstLoc = procBuilder.getLocs().elementAt(1) From 024952f850943aa2dad56195e7cc490709a929ab Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 11:28:53 +0200 Subject: [PATCH 57/72] formatting and added empty edge removal to btor2 passes --- .../java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 7 +------ .../java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt | 1 - .../hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt | 2 ++ 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index ab47eb6f26..457d534bed 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -20,7 +20,7 @@ import hu.bme.mit.theta.core.type.booltype.BoolExprs import hu.bme.mit.theta.core.type.booltype.BoolExprs.Not import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.xcfa.model.* -import hu.bme.mit.theta.xcfa.passes.ProcedurePassManager +import hu.bme.mit.theta.xcfa.passes.Btor2Pass object Btor2XcfaBuilder { private var i: Int = 1 @@ -98,7 +98,6 @@ object Btor2XcfaBuilder { lastLoc = newLoc } - // Add operations Btor2Circuit.ops.forEach() { val loc = nextLoc(false, false, false) @@ -153,7 +152,3 @@ object Btor2XcfaBuilder { return loc } } - -class Btor2Pass() : ProcedurePassManager() { - // No optimization for now c: -} diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index eda35ec9fd..9ea8e4dedc 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -25,7 +25,6 @@ import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.chc.ChcFrontend import hu.bme.mit.theta.frontend.litmus2xcfa.LitmusInterpreter -import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.transformation.ArchitectureConfig import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait import hu.bme.mit.theta.frontend.visitors.Btor2Visitor diff --git a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt index c3b67e9e62..62fe93685a 100644 --- a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt +++ b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt @@ -110,3 +110,5 @@ class OcExtraPasses : LoopUnrollPass(2), // force loop unroll for BMC ) ) + +class Btor2Pass() : ProcedurePassManager(listOf(EmptyEdgeRemovalPass())) From 3cd03cecbc5c1b171f61ed2dc93b790931b0c537 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 14:23:20 +0200 Subject: [PATCH 58/72] fix: var refs used for operands --- .../mit/theta/frontend/models/Btor2Const.kt | 8 +- .../mit/theta/frontend/models/Btor2Model.kt | 4 - .../theta/frontend/models/Btor2Operation.kt | 204 ++++++++---------- .../theta/frontend/models/Btor2Properties.kt | 2 + subprojects/xcfa/btor2xcfa/build.gradle.kts | 1 + .../Btor2XcfaBuilder.kt | 30 ++- .../btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 4 +- .../bme/mit/theta/xcfa/cli/ExecuteConfig.kt | 15 +- .../xcfa/cli/checkers/ConfigToChecker.kt | 3 +- .../xcfa/cli/checkers/ConfigToPortfolio.kt | 3 +- .../mit/theta/xcfa/cli/portfolio/bounded24.kt | 3 +- .../mit/theta/xcfa/cli/portfolio/bounded25.kt | 3 +- .../mit/theta/xcfa/cli/portfolio/complex23.kt | 3 +- .../mit/theta/xcfa/cli/portfolio/complex24.kt | 3 +- .../mit/theta/xcfa/cli/portfolio/complex25.kt | 3 +- .../mit/theta/xcfa/cli/portfolio/horn25.kt | 3 +- .../mit/theta/xcfa/cli/utils/XcfaParser.kt | 7 +- .../theta/xcfa/cli/XcfaCliPortfolioTest.kt | 14 +- .../xcfa-cli/src/test/resources/simple.kts | 2 +- .../theta/xcfa/passes/ProcedurePassManager.kt | 10 +- 20 files changed, 176 insertions(+), 149 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt index d9f603c78c..698514b69a 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt @@ -15,8 +15,10 @@ */ package hu.bme.mit.theta.frontend.models +import hu.bme.mit.theta.core.decl.Decls import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.type.Expr +import hu.bme.mit.theta.core.type.bvtype.BvExprs import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.core.type.bvtype.BvType @@ -25,12 +27,14 @@ data class Btor2Const( val value: BooleanArray, override val sort: Btor2Sort, ) : Btor2Node(nid, sort) { + val declsVar = Decls.Var("const_$nid", BvExprs.BvType(sort.width.toInt())) + override fun getVar(): VarDecl<*>? { - return null + return declsVar } override fun getExpr(): Expr { - return BvLitExpr.of(value) + return declsVar.ref as Expr } override fun accept(visitor: Btor2NodeVisitor, param: P): R { diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index db57698549..20fabcef42 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -68,10 +68,6 @@ abstract class Btor2Node(id: UInt, btor2Sort: Btor2Sort? = null) { abstract fun accept(visitor: Btor2NodeVisitor, param: P): R - // Constants give back a BvLitExpr - // Operations give back an Expr vagyish sokfélét de az kell nekik - // Statefuls give back RefExpr - // Properties Expr abstract fun getExpr(): Expr<*> } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 7fed4858b3..58a8c24945 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -26,9 +26,19 @@ import hu.bme.mit.theta.core.type.booltype.IffExpr import hu.bme.mit.theta.core.type.booltype.ImplyExpr import hu.bme.mit.theta.core.type.bvtype.* import hu.bme.mit.theta.core.type.bvtype.BvExprs.Eq +import hu.bme.mit.theta.core.type.bvtype.BvExprs.Not import hu.bme.mit.theta.core.type.inttype.IntLitExpr +import hu.bme.mit.theta.core.utils.TypeUtils.checkAllTypesEqual import java.math.BigInteger +fun getOperandExpr(operand: Btor2Node, negated: Boolean = false) : Expr { + return if(negated) { + Not(operand.getVar()!!.ref as Expr) as Expr + } else { + operand.getVar()!!.ref as Expr + } +} + abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) { // Ebben volt egy negálás de hát szinte felesleges abstract fun getStmt(): Stmt @@ -50,11 +60,11 @@ data class Btor2UnaryOperation( override fun getExpr(): Expr { val one = BvExprs.Bv(booleanArrayOf(true)) as Expr return when (operator) { - Btor2UnaryOperator.NOT -> BvNotExpr.of(operand.getExpr() as Expr) + Btor2UnaryOperator.NOT -> BvNotExpr.of(getOperandExpr(operand)) Btor2UnaryOperator.INC -> - BvAddExpr.create(mutableListOf(operand.getExpr() as Expr, one)) - Btor2UnaryOperator.DEC -> BvSubExpr.create(operand.getExpr() as Expr, one) - Btor2UnaryOperator.NEG -> BvNegExpr.of(operand.getExpr() as Expr) + BvAddExpr.create(mutableListOf(getOperandExpr(operand), one)) + Btor2UnaryOperator.DEC -> BvSubExpr.create(getOperandExpr(operand), one) + Btor2UnaryOperator.NEG -> BvNegExpr.of(getOperandExpr(operand)) Btor2UnaryOperator.REDAND -> BvAndExpr.create(valueByBits()) Btor2UnaryOperator.REDOR -> BvOrExpr.create(valueByBits()) Btor2UnaryOperator.REDXOR -> BvXorExpr.create(valueByBits()) @@ -66,18 +76,11 @@ data class Btor2UnaryOperation( } override fun getStmt(): Stmt { - return AssignStmt.of(value, getExpr() as Expr) + return AssignStmt.of(value, getExpr()) } fun valueByBits(): List> { - // val expr = operand.getExpr() as BvLitExpr - // val value = expr.value // BooleanArray - // val cut = mutableListOf>() - // for (i in value.indices) { - // cut.add(BvLitExpr.of(booleanArrayOf(value[i]))) - // } - // return cut - TODO() + throw NotImplementedError("reduce perations not implemented in Theta.") } } @@ -101,8 +104,8 @@ data class Btor2ExtOperation( ogLength?.plus(wLength) ?: throw IllegalArgumentException("Operand sort width is null or not defined") return when (operator) { - Btor2ExtOperator.SEXT -> BvSExtExpr.create(operand.getExpr(), BvType.of(newLength)) - Btor2ExtOperator.UEXT -> BvZExtExpr.create(operand.getExpr(), BvType.of(newLength)) + Btor2ExtOperator.SEXT -> BvSExtExpr.create(getOperandExpr(operand), BvType.of(newLength)) + Btor2ExtOperator.UEXT -> BvZExtExpr.create(getOperandExpr(operand), BvType.of(newLength)) } } @@ -132,7 +135,7 @@ data class Btor2SliceOperation( val newU: BigInteger = u + BigInteger.valueOf(1) // val newU: BigInteger = if (u == l) u + BigInteger.valueOf(1) else u return BvExtractExpr.create( - operand.getExpr() as Expr, + getOperandExpr(operand), IntLitExpr.of(l), IntLitExpr.of(newU), ) @@ -143,7 +146,7 @@ data class Btor2SliceOperation( } override fun getStmt(): Stmt { - return AssignStmt.of(value, getExpr() as Expr) + return AssignStmt.of(value, getExpr()) } } @@ -163,71 +166,63 @@ data class Btor2BinaryOperation( } override fun getExpr(): Expr { - val op1ExprLogical = - if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) - else op1.getExpr() as Expr - val op2ExprLogical = - if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) - else op2.getExpr() as Expr - // val op1ExprArithmetic = if (opd1_negated) BvNegExpr.create(op1.getExpr() as Expr) - // else op1.getExpr() as Expr - // val op2ExprArithmetic = if (opd2_negated) BvNegExpr.create(op2.getExpr() as Expr) - // else op2.getExpr() as Expr + val op1Expr = getOperandExpr(op1, opd1_negated) + val op2Expr = getOperandExpr(op2, opd2_negated) return when (operator) { Btor2BinaryOperator.ADD -> BvAddExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) Btor2BinaryOperator.AND -> BvAndExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) Btor2BinaryOperator.NAND -> BvNotExpr.create( BvAndExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) ) Btor2BinaryOperator.NOR -> BvNotExpr.create( BvOrExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) ) Btor2BinaryOperator.OR -> BvOrExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) Btor2BinaryOperator.XNOR -> BvNotExpr.create( BvXorExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) ) Btor2BinaryOperator.XOR -> BvXorExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) Btor2BinaryOperator.MUL -> BvMulExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) Btor2BinaryOperator.SUB -> - BvSubExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvSubExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.UDIV -> - BvUDivExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvUDivExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.UREM -> - BvURemExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvURemExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.SDIV -> - BvSDivExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvSDivExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.SREM -> - BvSRemExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvSRemExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.SMOD -> - BvSModExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvSModExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.CONCAT -> BvConcatExpr.create( - mutableListOf(op1ExprLogical as Expr, op2ExprLogical as Expr) + mutableListOf(op1Expr, op2Expr) ) Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") @@ -237,15 +232,15 @@ data class Btor2BinaryOperation( Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") Btor2BinaryOperator.ROL -> - BvRotateLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvRotateLeftExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.ROR -> - BvRotateRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvRotateRightExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.SLL -> - BvShiftLeftExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvShiftLeftExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.SRA -> - BvArithShiftRightExpr.of(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvArithShiftRightExpr.of(op1Expr, op2Expr) Btor2BinaryOperator.SRL -> - BvLogicShiftRightExpr.create(op1ExprLogical as Expr, op2ExprLogical as Expr) + BvLogicShiftRightExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") } } @@ -256,21 +251,21 @@ data class Btor2BinaryOperation( override fun getStmt(): Stmt { return when (operator) { - Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.AND -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.NAND -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.NOR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.OR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.XNOR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.XOR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.MUL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SUB -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.UDIV -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.UREM -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SDIV -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SREM -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SMOD -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.CONCAT -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.ADD -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.AND -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.NAND -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.NOR -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.OR -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.XNOR -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.XOR -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.MUL -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.SUB -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.UDIV -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.UREM -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.SDIV -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.SREM -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.SMOD -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.CONCAT -> AssignStmt.of(value, getExpr()) Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") @@ -278,11 +273,11 @@ data class Btor2BinaryOperation( Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") - Btor2BinaryOperator.ROL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.ROR -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SLL -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SRA -> AssignStmt.of(value, getExpr() as Expr) - Btor2BinaryOperator.SRL -> AssignStmt.of(value, getExpr() as Expr) + Btor2BinaryOperator.ROL -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.ROR -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.SLL -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.SRA -> AssignStmt.of(value, getExpr()) + Btor2BinaryOperator.SRL -> AssignStmt.of(value, getExpr()) Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") } } @@ -304,71 +299,66 @@ data class Btor2Comparison( } override fun getExpr(): Expr { - val op1_expr = - if (opd1_negated) BvNotExpr.create(op1.getExpr() as Expr) - else op1.getExpr() as Expr - val op2_expr = - if (opd2_negated) BvNotExpr.create(op2.getExpr() as Expr) - else op2.getExpr() as Expr + val op1_expr = getOperandExpr(op1, opd1_negated) + val op2_expr = getOperandExpr(op2, opd2_negated) return when (operator) { Btor2ComparisonOperator.EQ -> IteExpr.of( - BvEqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvEqExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) - // Eq(op1_expr as RefExpr, op2_expr as RefExpr) Btor2ComparisonOperator.NEQ -> IteExpr.of( - BvNeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvNeqExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2ComparisonOperator.SLT -> IteExpr.of( - BvSLtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvSLtExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2ComparisonOperator.SLTE -> IteExpr.of( - BvSLeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvSLeqExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2ComparisonOperator.SGT -> IteExpr.of( - BvSGtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvSGtExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2ComparisonOperator.SGTE -> IteExpr.of( - BvSGeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvSGeqExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2ComparisonOperator.ULT -> IteExpr.of( - BvULtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvULtExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2ComparisonOperator.ULTE -> IteExpr.of( - BvULeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvULeqExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2ComparisonOperator.UGT -> IteExpr.of( - BvUGtExpr.create(op1_expr as Expr, op2_expr as Expr), + BvUGtExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2ComparisonOperator.UGTE -> IteExpr.of( - BvUGeqExpr.create(op1_expr as Expr, op2_expr as Expr), + BvUGeqExpr.create(op1_expr, op2_expr), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) @@ -381,16 +371,16 @@ data class Btor2Comparison( override fun getStmt(): Stmt { return when (operator) { - Btor2ComparisonOperator.EQ -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.NEQ -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.SLT -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.SLTE -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.SGT -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.SGTE -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.ULT -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.ULTE -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.UGT -> AssignStmt.of(value, getExpr() as Expr) - Btor2ComparisonOperator.UGTE -> AssignStmt.of(value, getExpr() as Expr) + Btor2ComparisonOperator.EQ -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.NEQ -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.SLT -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.SLTE -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.SGT -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.SGTE -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.ULT -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.ULTE -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.UGT -> AssignStmt.of(value, getExpr()) + Btor2ComparisonOperator.UGTE -> AssignStmt.of(value, getExpr()) } } } @@ -416,8 +406,8 @@ data class Btor2Boolean( Btor2BooleanOperator.IFF -> IteExpr.of( IffExpr.create( - if (opd1_negated) BvNotExpr.create(op1.getExpr()) else op1.getExpr(), - if (opd2_negated) BvNotExpr.create(op2.getExpr()) else op2.getExpr(), + getOperandExpr(op1, opd1_negated), + getOperandExpr(op2, opd2_negated) ), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), @@ -425,8 +415,8 @@ data class Btor2Boolean( Btor2BooleanOperator.IMPLIES -> IteExpr.of( ImplyExpr.create( - if (opd1_negated) BvNotExpr.create(op1.getExpr()) else op1.getExpr(), - if (opd2_negated) BvNotExpr.create(op2.getExpr()) else op2.getExpr(), + getOperandExpr(op1, opd1_negated), + getOperandExpr(op2, opd2_negated) ), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), @@ -462,21 +452,15 @@ data class Btor2TernaryOperation( } override fun getExpr(): Expr { - // checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) - val op1Expr = - if (negated1) BvNotExpr.create(op1.getExpr() as Expr) - else (op1.getExpr() as Expr) + checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) + val op1Expr = getOperandExpr(op1, negated1) val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) - val op2Expr = - if (negated2) BvNegExpr.create(op2.getExpr() as Expr) - else (op2.getExpr() as Expr) - val op3Expr = - if (negated3) BvNegExpr.create(op3.getExpr() as Expr) - else (op3.getExpr() as Expr) + val op2Expr = getOperandExpr(op2, negated2) + val op3Expr = getOperandExpr(op3, negated3) return when (operator) { Btor2TernaryOperator.ITE -> - IteExpr.of(op1ExprBool as Expr, op2Expr as Expr, op3Expr as Expr) + IteExpr.of(op1ExprBool as Expr, op2Expr, op3Expr) Btor2TernaryOperator.WRITE -> TODO() } } @@ -487,7 +471,7 @@ data class Btor2TernaryOperation( override fun getStmt(): Stmt { return when (operator) { - Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr() as Expr) + Btor2TernaryOperator.ITE -> AssignStmt.of(value, getExpr()) Btor2TernaryOperator.WRITE -> TODO("Write operation not implemented yet") } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 30aa5d2301..df9e7eb901 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -28,6 +28,8 @@ import hu.bme.mit.theta.core.type.bvtype.BvType data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) { + + // TODO: btor2 probably enables operations on the bad node(?) - check and add var decl for properties as well, if necessary override fun getVar(): VarDecl<*>? { return null } diff --git a/subprojects/xcfa/btor2xcfa/build.gradle.kts b/subprojects/xcfa/btor2xcfa/build.gradle.kts index 16ab8e9ffb..c98deae2ed 100644 --- a/subprojects/xcfa/btor2xcfa/build.gradle.kts +++ b/subprojects/xcfa/btor2xcfa/build.gradle.kts @@ -22,4 +22,5 @@ dependencies { implementation(project(":theta-core")) implementation(project(":theta-xcfa")) implementation(project(":theta-btor2-frontend")) + implementation(project(":theta-c-frontend")) } diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 457d534bed..94c44ea61b 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -15,17 +15,20 @@ */ package hu.bme.mit.theta.btor2xcfa +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.core.stmt.AssumeStmt import hu.bme.mit.theta.core.type.booltype.BoolExprs -import hu.bme.mit.theta.core.type.booltype.BoolExprs.Not +import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.xcfa.model.* -import hu.bme.mit.theta.xcfa.passes.Btor2Pass +import hu.bme.mit.theta.xcfa.passes.Btor2Passes +import hu.bme.mit.theta.frontend.ParseContext +import hu.bme.mit.theta.xcfa.AssignStmtLabel object Btor2XcfaBuilder { private var i: Int = 1 - fun btor2xcfa(): XCFA { + fun btor2xcfa(uniqueWarningLogger: UniqueWarningLogger): XCFA { check(Btor2Circuit.properties.size != 0, { "Circuit has no error property" }) check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) val ops = Btor2Circuit.ops.values.toList() @@ -38,7 +41,7 @@ object Btor2XcfaBuilder { } val xcfaBuilder = XcfaBuilder("Btor2XCFA") - val procBuilder = XcfaProcedureBuilder("main", Btor2Pass()) + val procBuilder = XcfaProcedureBuilder("main", Btor2Passes(ParseContext(), uniqueWarningLogger)) xcfaBuilder.addEntryPoint(procBuilder, emptyList()) procBuilder.createInitLoc() @@ -46,10 +49,27 @@ object Btor2XcfaBuilder { it.value.getVar()?.let { varDecl -> procBuilder.addVar(varDecl) } } - // Initializations var lastLoc = procBuilder.initLoc var newLoc = nextLoc(false, false, false) + // add values to constants + val constEdge = + XcfaEdge( + lastLoc, + newLoc, + SequenceLabel( + Btor2Circuit.constants + .map { AssignStmtLabel(it.value.getVar()!!.ref, BvLitExpr.of(it.value.value), metadata = EmptyMetaData) } + .toList() + ), + EmptyMetaData, + ) + procBuilder.addEdge(constEdge) + i++ + lastLoc = newLoc + + // Initializations + newLoc = nextLoc(false, false, false) procBuilder.addLoc(newLoc) val edge = diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index f2cd341b75..90a8c3c9a7 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -18,6 +18,7 @@ import hu.bme.mit.theta.btor2.frontend.dsl.gen.Btor2Parser import hu.bme.mit.theta.btor2xcfa.Btor2XcfaBuilder import hu.bme.mit.theta.common.logging.ConsoleLogger import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.visitors.Btor2Visitor import hu.bme.mit.theta.xcfa.model.toDot @@ -47,6 +48,7 @@ class TestBtor2Xcfa { @Test fun testBtor2Xcfa() { val logger = ConsoleLogger(Logger.Level.VERBOSE) + val uniqueWarningLogger = UniqueWarningLogger(logger) val visitor = Btor2Visitor() val btor2File = File("") @@ -60,7 +62,7 @@ class TestBtor2Xcfa { context.accept(visitor) - val xcfa = Btor2XcfaBuilder.btor2xcfa(Btor2Circuit) + val xcfa = Btor2XcfaBuilder.btor2xcfa(uniqueWarningLogger) logger.write(Logger.Level.VERBOSE, "XCFA built, result: " + xcfa.toDot() + "\n") } } diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/ExecuteConfig.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/ExecuteConfig.kt index ddc38311c6..3cdf682f91 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/ExecuteConfig.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/ExecuteConfig.kt @@ -34,6 +34,7 @@ import hu.bme.mit.theta.c2xcfa.CMetaData import hu.bme.mit.theta.cat.dsl.CatDslManager import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.common.logging.Logger.Level.* +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.common.visualization.Graph import hu.bme.mit.theta.common.visualization.writer.GraphvizWriter import hu.bme.mit.theta.common.visualization.writer.WebDebuggerLogger @@ -65,7 +66,7 @@ import kotlin.random.Random fun runConfig( config: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, throwDontExit: Boolean, ): SafetyResult<*, *> { propagateInputOptions(config, logger, uniqueLogger) @@ -85,7 +86,7 @@ fun runConfig( return result } -private fun propagateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniqueLogger: Logger) { +private fun propagateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniqueLogger: UniqueWarningLogger) { config.inputConfig.property = determineProperty(config, logger) LbePass.level = config.frontendConfig.lbeLevel StaticCoiPass.enabled = config.frontendConfig.staticCoi @@ -113,7 +114,7 @@ private fun propagateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniq ARGWebDebugger.on = config.debugConfig.argdebug } -private fun validateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniqueLogger: Logger) { +private fun validateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniqueLogger: UniqueWarningLogger) { rule("NoCoiWhenDataRace") { config.backendConfig.backend == Backend.CEGAR && (config.backendConfig.specConfig as? CegarConfig)?.coi != ConeOfInfluenceMode.NO_COI && @@ -139,7 +140,7 @@ private fun validateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniqu fun frontend( config: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): Triple { if (config.inputConfig.xcfaWCtx != null) { val xcfa = config.inputConfig.xcfaWCtx!!.first @@ -214,7 +215,7 @@ private fun backend( parseContext: ParseContext, config: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, throwDontExit: Boolean, ): SafetyResult<*, *> = if (config.backendConfig.backend == Backend.NONE) { @@ -325,7 +326,7 @@ private fun preVerificationLogging( parseContext: ParseContext, config: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ) { if (config.outputConfig.enableOutput) { try { @@ -385,7 +386,7 @@ private fun postVerificationLogging( parseContext: ParseContext, config: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ) { if (config.outputConfig.enableOutput) { try { diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/checkers/ConfigToChecker.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/checkers/ConfigToChecker.kt index c5d4869a15..752d73dea4 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/checkers/ConfigToChecker.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/checkers/ConfigToChecker.kt @@ -21,6 +21,7 @@ import hu.bme.mit.theta.analysis.algorithm.SafetyResult import hu.bme.mit.theta.analysis.algorithm.arg.ARG import hu.bme.mit.theta.analysis.ptr.PtrState import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.graphsolver.patterns.constraints.MCM import hu.bme.mit.theta.xcfa.analysis.XcfaAction @@ -36,7 +37,7 @@ fun getChecker( config: XcfaConfig<*, *>, parseContext: ParseContext, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): SafetyChecker<*, *, *> = if (config.backendConfig.inProcess) { InProcessChecker(xcfa, config, parseContext, logger) diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/checkers/ConfigToPortfolio.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/checkers/ConfigToPortfolio.kt index f7df87b8c3..f093bfe496 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/checkers/ConfigToPortfolio.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/checkers/ConfigToPortfolio.kt @@ -22,6 +22,7 @@ import hu.bme.mit.theta.analysis.algorithm.SafetyResult import hu.bme.mit.theta.analysis.algorithm.arg.ARG import hu.bme.mit.theta.analysis.ptr.PtrState import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.graphsolver.patterns.constraints.MCM import hu.bme.mit.theta.xcfa.analysis.XcfaAction @@ -45,7 +46,7 @@ fun getPortfolioChecker( config: XcfaConfig<*, *>, parseContext: ParseContext, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): SafetyChecker< ARG>, XcfaAction>, Trace>, XcfaAction>, diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/bounded24.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/bounded24.kt index c42adccf59..42d28154c3 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/bounded24.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/bounded24.kt @@ -16,6 +16,7 @@ package hu.bme.mit.theta.xcfa.cli.portfolio import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.transformation.ArchitectureConfig import hu.bme.mit.theta.graphsolver.patterns.constraints.MCM @@ -33,7 +34,7 @@ fun boundedPortfolio24( parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): STM { val checker = { config: XcfaConfig<*, *> -> runConfig(config, logger, uniqueLogger, true) } diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/bounded25.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/bounded25.kt index 0a827468d9..c689039cb9 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/bounded25.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/bounded25.kt @@ -17,6 +17,7 @@ package hu.bme.mit.theta.xcfa.cli.portfolio import hu.bme.mit.theta.analysis.algorithm.mdd.MddChecker import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.transformation.ArchitectureConfig import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait @@ -35,7 +36,7 @@ fun boundedPortfolio25( parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): STM { val checker = { config: XcfaConfig<*, *> -> runConfig(config, logger, uniqueLogger, true) } diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex23.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex23.kt index cddce09754..4098598db6 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex23.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex23.kt @@ -17,6 +17,7 @@ package hu.bme.mit.theta.xcfa.cli.portfolio import hu.bme.mit.theta.analysis.expr.refinement.PruneStrategy import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.transformation.ArchitectureConfig import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait @@ -34,7 +35,7 @@ fun complexPortfolio23( parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): STM { val checker = { config: XcfaConfig<*, *> -> runConfig(config, logger, uniqueLogger, true) } diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex24.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex24.kt index dee3ff2e48..40ef9fe4e2 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex24.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex24.kt @@ -17,6 +17,7 @@ package hu.bme.mit.theta.xcfa.cli.portfolio import hu.bme.mit.theta.analysis.expr.refinement.PruneStrategy import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.transformation.ArchitectureConfig import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait @@ -36,7 +37,7 @@ fun complexPortfolio24( parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): STM { val checker = { config: XcfaConfig<*, *> -> runConfig(config, logger, uniqueLogger, true) } diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex25.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex25.kt index eb2b7bd0d5..2fa4a3a1f7 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex25.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/complex25.kt @@ -19,6 +19,7 @@ import hu.bme.mit.theta.analysis.expr.refinement.PruneStrategy.FULL import hu.bme.mit.theta.analysis.expr.refinement.PruneStrategy.LAZY import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.common.logging.Logger.Level.RESULT +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.transformation.ArchitectureConfig.ArithmeticType.efficient import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait @@ -56,7 +57,7 @@ fun complexPortfolio25( parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): STM { val checker = { config: XcfaConfig<*, *> -> runConfig(config, logger, uniqueLogger, true) } diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/horn25.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/horn25.kt index 728ce4541e..8d9ab0d51a 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/horn25.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/portfolio/horn25.kt @@ -16,6 +16,7 @@ package hu.bme.mit.theta.xcfa.cli.portfolio import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.transformation.ArchitectureConfig import hu.bme.mit.theta.graphsolver.patterns.constraints.MCM @@ -33,7 +34,7 @@ fun hornPortfolio25( parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): STM { val checker = { config: XcfaConfig<*, *> -> runConfig(config, logger, uniqueLogger, true) } diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index 9ea8e4dedc..9fba55722e 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -22,6 +22,7 @@ import hu.bme.mit.theta.c2xcfa.getXcfaFromC import hu.bme.mit.theta.cfa.CFA import hu.bme.mit.theta.cfa.dsl.CfaDslManager import hu.bme.mit.theta.common.logging.Logger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.chc.ChcFrontend import hu.bme.mit.theta.frontend.litmus2xcfa.LitmusInterpreter @@ -53,7 +54,7 @@ fun getXcfa( config: XcfaConfig<*, *>, parseContext: ParseContext, logger: Logger, - uniqueWarningLogger: Logger, + uniqueWarningLogger: UniqueWarningLogger, ) = try { when (config.frontendConfig.inputType) { @@ -232,7 +233,7 @@ private fun parseChc( return xcfaBuilder.build() } -private fun parseBTOR2(input: File, logger: Logger, uniqueWarningLogger: Logger): XCFA { +private fun parseBTOR2(input: File, logger: Logger, uniqueWarningLogger: UniqueWarningLogger): XCFA { val visitor = Btor2Visitor() val btor2File = input @@ -246,7 +247,7 @@ private fun parseBTOR2(input: File, logger: Logger, uniqueWarningLogger: Logger) context.accept(visitor) - val xcfa = Btor2XcfaBuilder.btor2xcfa() + val xcfa = Btor2XcfaBuilder.btor2xcfa(uniqueWarningLogger) logger.write(Logger.Level.MAINSTEP, "XCFA built successfully") return xcfa } diff --git a/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaCliPortfolioTest.kt b/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaCliPortfolioTest.kt index 13a5110c99..3ba0c16167 100644 --- a/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaCliPortfolioTest.kt +++ b/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaCliPortfolioTest.kt @@ -42,7 +42,7 @@ class XcfaCliPortfolioTest { parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger -> + uniqueLogger: UniqueWarningLogger -> complexPortfolio23(xcfa, mcm, parseContext, portfolioConfig, logger, uniqueLogger) }), Arguments.of({ @@ -51,7 +51,7 @@ class XcfaCliPortfolioTest { parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger -> + uniqueLogger: UniqueWarningLogger -> complexPortfolio24(xcfa, mcm, parseContext, portfolioConfig, logger, uniqueLogger) }), Arguments.of({ @@ -60,7 +60,7 @@ class XcfaCliPortfolioTest { parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger -> + uniqueLogger: UniqueWarningLogger -> complexPortfolio25(xcfa, mcm, parseContext, portfolioConfig, logger, uniqueLogger) }), Arguments.of({ @@ -69,7 +69,7 @@ class XcfaCliPortfolioTest { parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger -> + uniqueLogger: UniqueWarningLogger -> boundedPortfolio24(xcfa, mcm, parseContext, portfolioConfig, logger, uniqueLogger) }), Arguments.of({ @@ -78,7 +78,7 @@ class XcfaCliPortfolioTest { parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger -> + uniqueLogger: UniqueWarningLogger -> boundedPortfolio25(xcfa, mcm, parseContext, portfolioConfig, logger, uniqueLogger) }), Arguments.of({ @@ -87,7 +87,7 @@ class XcfaCliPortfolioTest { parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger -> + uniqueLogger: UniqueWarningLogger -> hornPortfolio25(xcfa, mcm, parseContext, portfolioConfig, logger, uniqueLogger) }), ) @@ -104,7 +104,7 @@ class XcfaCliPortfolioTest { parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ) -> STM ) { val stm = diff --git a/subprojects/xcfa/xcfa-cli/src/test/resources/simple.kts b/subprojects/xcfa/xcfa-cli/src/test/resources/simple.kts index 97998a735c..19d448af41 100644 --- a/subprojects/xcfa/xcfa-cli/src/test/resources/simple.kts +++ b/subprojects/xcfa/xcfa-cli/src/test/resources/simple.kts @@ -33,7 +33,7 @@ fun portfolio( parseContext: ParseContext, portfolioConfig: XcfaConfig<*, *>, logger: Logger, - uniqueLogger: Logger, + uniqueLogger: UniqueWarningLogger, ): STM { val checker = { config: XcfaConfig<*, *> -> runConfig(config, logger, uniqueLogger, true) } diff --git a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt index 62fe93685a..5dcca87d13 100644 --- a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt +++ b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt @@ -111,4 +111,12 @@ class OcExtraPasses : ) ) -class Btor2Pass() : ProcedurePassManager(listOf(EmptyEdgeRemovalPass())) +class Btor2Passes(parseContext: ParseContext, uniqueWarningLogger: Logger) : ProcedurePassManager( + listOf( + NormalizePass(), + DeterministicPass(), + EmptyEdgeRemovalPass(), + UnusedLocRemovalPass(), + SimplifyExprsPass(parseContext) + ) +) From 30b3ee1ffe54056bbef098d13cfe86974a09f176 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 14:41:58 +0200 Subject: [PATCH 59/72] btor2circuit obj refactor; input fix; formatting --- .../mit/theta/frontend/models/Btor2Const.kt | 1 - .../mit/theta/frontend/models/Btor2Model.kt | 34 +++++- .../theta/frontend/models/Btor2Operation.kt | 108 +++++------------- .../theta/frontend/models/Btor2Properties.kt | 3 +- .../theta/frontend/visitors/Btor2Visitor.kt | 2 +- .../frontend/visitors/ConstantVisitor.kt | 12 +- .../frontend/visitors/OperationVisitor.kt | 19 ++- .../theta/frontend/visitors/SortVisitor.kt | 2 +- .../theta/frontend/visitors/StateVisitor.kt | 12 +- .../Btor2XcfaBuilder.kt | 13 ++- .../btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 1 - .../bme/mit/theta/xcfa/cli/ExecuteConfig.kt | 12 +- .../mit/theta/xcfa/cli/utils/XcfaParser.kt | 6 +- .../theta/xcfa/passes/ProcedurePassManager.kt | 17 +-- 14 files changed, 108 insertions(+), 134 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt index 698514b69a..b0a6dcd2be 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Const.kt @@ -19,7 +19,6 @@ import hu.bme.mit.theta.core.decl.Decls import hu.bme.mit.theta.core.decl.VarDecl import hu.bme.mit.theta.core.type.Expr import hu.bme.mit.theta.core.type.bvtype.BvExprs -import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.core.type.bvtype.BvType data class Btor2Const( diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 20fabcef42..64b2be2d8a 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -49,12 +49,34 @@ interface Btor2NodeVisitor { } object Btor2Circuit { - var nodes: MutableMap = mutableMapOf() - var sorts: MutableMap = mutableMapOf() - var constants: MutableMap = mutableMapOf() - var ops: MutableMap = mutableMapOf() - var states: MutableMap = mutableMapOf() - var properties: MutableMap = mutableMapOf() + private val _nodes = mutableMapOf() + private val _sorts = mutableMapOf() + private val _constants = mutableMapOf() + private val _ops = mutableMapOf() + private val _states = mutableMapOf() + private val _properties = mutableMapOf() + + val nodes: Map get() = _nodes + val sorts: Map get() = _sorts + val constants: Map get() = _constants + val ops: Map get() = _ops + val states: Map get() = _states + val properties: Map get() = _properties + + fun addSort(sort: Btor2Sort) { + _sorts[sort.sid] = sort + } + + fun addNode(node: Btor2Node) { + _nodes[node.nid] = node + when (node) { + is Btor2Const -> _constants[node.nid] = node + is Btor2Operation -> _ops[node.nid] = node + is Btor2Stateful -> _states[node.nid] = node + is Btor2Bad -> _properties[node.nid] = node + else -> error("Btor2Circuit cannot sort this type: ${node.javaClass}") + } + } } // sortID lookup in Btor2Sort diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 58a8c24945..7bc72f9d06 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -31,8 +31,8 @@ import hu.bme.mit.theta.core.type.inttype.IntLitExpr import hu.bme.mit.theta.core.utils.TypeUtils.checkAllTypesEqual import java.math.BigInteger -fun getOperandExpr(operand: Btor2Node, negated: Boolean = false) : Expr { - return if(negated) { +fun getOperandExpr(operand: Btor2Node, negated: Boolean = false): Expr { + return if (negated) { Not(operand.getVar()!!.ref as Expr) as Expr } else { operand.getVar()!!.ref as Expr @@ -61,8 +61,7 @@ data class Btor2UnaryOperation( val one = BvExprs.Bv(booleanArrayOf(true)) as Expr return when (operator) { Btor2UnaryOperator.NOT -> BvNotExpr.of(getOperandExpr(operand)) - Btor2UnaryOperator.INC -> - BvAddExpr.create(mutableListOf(getOperandExpr(operand), one)) + Btor2UnaryOperator.INC -> BvAddExpr.create(mutableListOf(getOperandExpr(operand), one)) Btor2UnaryOperator.DEC -> BvSubExpr.create(getOperandExpr(operand), one) Btor2UnaryOperator.NEG -> BvNegExpr.of(getOperandExpr(operand)) Btor2UnaryOperator.REDAND -> BvAndExpr.create(valueByBits()) @@ -134,11 +133,7 @@ data class Btor2SliceOperation( override fun getExpr(): Expr { val newU: BigInteger = u + BigInteger.valueOf(1) // val newU: BigInteger = if (u == l) u + BigInteger.valueOf(1) else u - return BvExtractExpr.create( - getOperandExpr(operand), - IntLitExpr.of(l), - IntLitExpr.of(newU), - ) + return BvExtractExpr.create(getOperandExpr(operand), IntLitExpr.of(l), IntLitExpr.of(newU)) } override fun accept(visitor: Btor2NodeVisitor, param: P): R { @@ -170,60 +165,23 @@ data class Btor2BinaryOperation( val op2Expr = getOperandExpr(op2, opd2_negated) return when (operator) { - Btor2BinaryOperator.ADD -> - BvAddExpr.create( - mutableListOf(op1Expr, op2Expr) - ) - Btor2BinaryOperator.AND -> - BvAndExpr.create( - mutableListOf(op1Expr, op2Expr) - ) + Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1Expr, op2Expr)) + Btor2BinaryOperator.AND -> BvAndExpr.create(mutableListOf(op1Expr, op2Expr)) Btor2BinaryOperator.NAND -> - BvNotExpr.create( - BvAndExpr.create( - mutableListOf(op1Expr, op2Expr) - ) - ) - Btor2BinaryOperator.NOR -> - BvNotExpr.create( - BvOrExpr.create( - mutableListOf(op1Expr, op2Expr) - ) - ) - Btor2BinaryOperator.OR -> - BvOrExpr.create( - mutableListOf(op1Expr, op2Expr) - ) + BvNotExpr.create(BvAndExpr.create(mutableListOf(op1Expr, op2Expr))) + Btor2BinaryOperator.NOR -> BvNotExpr.create(BvOrExpr.create(mutableListOf(op1Expr, op2Expr))) + Btor2BinaryOperator.OR -> BvOrExpr.create(mutableListOf(op1Expr, op2Expr)) Btor2BinaryOperator.XNOR -> - BvNotExpr.create( - BvXorExpr.create( - mutableListOf(op1Expr, op2Expr) - ) - ) - Btor2BinaryOperator.XOR -> - BvXorExpr.create( - mutableListOf(op1Expr, op2Expr) - ) - Btor2BinaryOperator.MUL -> - BvMulExpr.create( - mutableListOf(op1Expr, op2Expr) - ) - Btor2BinaryOperator.SUB -> - BvSubExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.UDIV -> - BvUDivExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.UREM -> - BvURemExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.SDIV -> - BvSDivExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.SREM -> - BvSRemExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.SMOD -> - BvSModExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.CONCAT -> - BvConcatExpr.create( - mutableListOf(op1Expr, op2Expr) - ) + BvNotExpr.create(BvXorExpr.create(mutableListOf(op1Expr, op2Expr))) + Btor2BinaryOperator.XOR -> BvXorExpr.create(mutableListOf(op1Expr, op2Expr)) + Btor2BinaryOperator.MUL -> BvMulExpr.create(mutableListOf(op1Expr, op2Expr)) + Btor2BinaryOperator.SUB -> BvSubExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.UDIV -> BvUDivExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.UREM -> BvURemExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.SDIV -> BvSDivExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.SREM -> BvSRemExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.SMOD -> BvSModExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.CONCAT -> BvConcatExpr.create(mutableListOf(op1Expr, op2Expr)) Btor2BinaryOperator.SADDO -> TODO("Signed addition with overflow not implemented yet") Btor2BinaryOperator.SDIVO -> TODO("Signed division with overflow not implemented yet") Btor2BinaryOperator.SMULO -> TODO("Signed multiplication with overflow not implemented yet") @@ -231,16 +189,11 @@ data class Btor2BinaryOperation( Btor2BinaryOperator.UADDO -> TODO("Unsigned addition with overflow not implemented yet") Btor2BinaryOperator.UMULO -> TODO("Unsigned multiplication with overflow not implemented yet") Btor2BinaryOperator.USUBO -> TODO("Unsigned subtraction with overflow not implemented yet") - Btor2BinaryOperator.ROL -> - BvRotateLeftExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.ROR -> - BvRotateRightExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.SLL -> - BvShiftLeftExpr.create(op1Expr, op2Expr) - Btor2BinaryOperator.SRA -> - BvArithShiftRightExpr.of(op1Expr, op2Expr) - Btor2BinaryOperator.SRL -> - BvLogicShiftRightExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.ROL -> BvRotateLeftExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.ROR -> BvRotateRightExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.SLL -> BvShiftLeftExpr.create(op1Expr, op2Expr) + Btor2BinaryOperator.SRA -> BvArithShiftRightExpr.of(op1Expr, op2Expr) + Btor2BinaryOperator.SRL -> BvLogicShiftRightExpr.create(op1Expr, op2Expr) Btor2BinaryOperator.READ -> TODO("Read operation not implemented yet") } } @@ -405,19 +358,13 @@ data class Btor2Boolean( return when (operator) { Btor2BooleanOperator.IFF -> IteExpr.of( - IffExpr.create( - getOperandExpr(op1, opd1_negated), - getOperandExpr(op2, opd2_negated) - ), + IffExpr.create(getOperandExpr(op1, opd1_negated), getOperandExpr(op2, opd2_negated)), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2BooleanOperator.IMPLIES -> IteExpr.of( - ImplyExpr.create( - getOperandExpr(op1, opd1_negated), - getOperandExpr(op2, opd2_negated) - ), + ImplyExpr.create(getOperandExpr(op1, opd1_negated), getOperandExpr(op2, opd2_negated)), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) @@ -459,8 +406,7 @@ data class Btor2TernaryOperation( val op3Expr = getOperandExpr(op3, negated3) return when (operator) { - Btor2TernaryOperator.ITE -> - IteExpr.of(op1ExprBool as Expr, op2Expr, op3Expr) + Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2Expr, op3Expr) Btor2TernaryOperator.WRITE -> TODO() } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index df9e7eb901..29ada3f315 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -29,7 +29,8 @@ import hu.bme.mit.theta.core.type.bvtype.BvType data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) { - // TODO: btor2 probably enables operations on the bad node(?) - check and add var decl for properties as well, if necessary + // TODO: btor2 probably enables operations on the bad node(?) - check and add var decl for + // properties as well, if necessary override fun getVar(): VarDecl<*>? { return null } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt index 7a6eedad9c..555270a1ef 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/Btor2Visitor.kt @@ -38,7 +38,7 @@ class Btor2Visitor : Btor2BaseVisitor() { override fun visitSort(ctx: Btor2Parser.SortContext?): Btor2Circuit { val result = sortVisitor.visit(ctx) // logger.write(Logger.Level.VERBOSE, "Sort visited \t") - Btor2Circuit.sorts[result.sid] = result + Btor2Circuit.addSort(result) return Btor2Circuit } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt index bd49204992..407ab1bd9c 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/ConstantVisitor.kt @@ -37,8 +37,7 @@ class ConstantVisitor : Btor2BaseVisitor() { val size = sort.width.toInt() val binArray = BooleanArray(size) { index -> (value[index] - '0') == 1 } var node = Btor2Const(nid, binArray, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } @@ -55,8 +54,7 @@ class ConstantVisitor : Btor2BaseVisitor() { ) and BigInteger.ONE) == BigInteger.ONE } var node = Btor2Const(nid, binArray, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } @@ -73,8 +71,7 @@ class ConstantVisitor : Btor2BaseVisitor() { ((hexDigit - '0') shr bitIndex and 1) == 1 } var node = Btor2Const(nid, binArray, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } @@ -101,8 +98,7 @@ class ConstantVisitor : Btor2BaseVisitor() { } } var node = Btor2Const(nid, value, sort) - Btor2Circuit.constants[nid] = node - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt index 4e2566d2e9..57a4b20948 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/OperationVisitor.kt @@ -45,8 +45,7 @@ class OperationVisitor : Btor2BaseVisitor() { check(sort.width == (opd.sort as Btor2BitvecSort).width + w) val node = Btor2ExtOperation(nid, sort, op, opd, w) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node + Btor2Circuit.addNode(node) return node } @@ -60,8 +59,7 @@ class OperationVisitor : Btor2BaseVisitor() { val l = ctx.l.text.toBigInteger() val node = Btor2SliceOperation(nid, sort, opd, u, l) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node + Btor2Circuit.addNode(node) return node } @@ -126,17 +124,16 @@ class OperationVisitor : Btor2BaseVisitor() { if (op is Btor2ComparisonOperator) { val node = Btor2Comparison(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } else if (op is Btor2BinaryOperator) { val node = Btor2BinaryOperation(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node + Btor2Circuit.addNode(node) return node } else if (op is Btor2BooleanOperator) { // Boolean operators are not operations, but comparisons val node = Btor2Boolean(nid, sort, op, opd1, opd2, opd1_negated, opd2_negated) - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } else { throw RuntimeException("Binary operator unknown") @@ -163,8 +160,7 @@ class OperationVisitor : Btor2BaseVisitor() { val opd = nodes[ctx.opd1.text.toUInt()] as Btor2Node val node = Btor2UnaryOperation(nid, sort, op, opd) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node + Btor2Circuit.addNode(node) return node } @@ -190,8 +186,7 @@ class OperationVisitor : Btor2BaseVisitor() { val opd3 = nodes[opd3Index] as Btor2Node val node = Btor2TernaryOperation(nid, sort, op, opd1, opd2, opd3, negated1, negated2, negated3) - Btor2Circuit.nodes[nid] = node - Btor2Circuit.ops[nid] = node + Btor2Circuit.addNode(node) return node } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt index 9008265657..11a7c28957 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/SortVisitor.kt @@ -26,7 +26,7 @@ class SortVisitor : Btor2BaseVisitor() { override fun visitBitvec_sort(ctx: Btor2Parser.Bitvec_sortContext): Btor2Sort { var sort = Btor2BitvecSort(ctx.id.NUM().text.toUInt(), ctx.width.text.toUInt()) - Btor2Circuit.sorts[sort.sid] = sort as Btor2Sort + Btor2Circuit.addSort(sort) return sort } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt index 03a3376e56..6d95de3317 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/visitors/StateVisitor.kt @@ -34,7 +34,7 @@ class StateVisitor : Btor2BaseVisitor() { val sort = Btor2Circuit.sorts[sid] as Btor2Sort val node = Btor2State(nid, sort, null, null) - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } @@ -44,7 +44,7 @@ class StateVisitor : Btor2BaseVisitor() { val sort = Btor2Circuit.sorts[sid] as Btor2Sort val node = Btor2Input(nid, sort, null, null) - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } @@ -58,7 +58,7 @@ class StateVisitor : Btor2BaseVisitor() { check((param1.sort as Btor2BitvecSort).width == (param2.sort as Btor2BitvecSort).width) val node = Btor2Init(nid, sort, param1, param2) - Btor2Circuit.states[nid] = node + Btor2Circuit.addNode(node) return node } @@ -73,8 +73,7 @@ class StateVisitor : Btor2BaseVisitor() { val param1 = Btor2Circuit.nodes[ctx.param1.NUM().text.toUInt()] as Btor2State val param2 = Btor2Circuit.nodes[abs(param2_id).toUInt()] as Btor2Node val node = Btor2Next(nid, sort, param1, param2, param2_negated) - Btor2Circuit.states[nid] = node - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } @@ -84,8 +83,7 @@ class StateVisitor : Btor2BaseVisitor() { val node = Btor2Bad(nid, null, Btor2Circuit.nodes[ctx.param.NUM().text.toUInt()] as Btor2Node) when (ctx.property_type.text) { "bad" -> { - Btor2Circuit.properties[nid] = node - Btor2Circuit.nodes[nid] = node + Btor2Circuit.addNode(node) return node } else -> diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 94c44ea61b..86a7ff4283 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -19,11 +19,11 @@ import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.core.stmt.AssumeStmt import hu.bme.mit.theta.core.type.booltype.BoolExprs import hu.bme.mit.theta.core.type.bvtype.BvLitExpr +import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.models.Btor2Circuit +import hu.bme.mit.theta.xcfa.AssignStmtLabel import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.Btor2Passes -import hu.bme.mit.theta.frontend.ParseContext -import hu.bme.mit.theta.xcfa.AssignStmtLabel object Btor2XcfaBuilder { private var i: Int = 1 @@ -59,7 +59,13 @@ object Btor2XcfaBuilder { newLoc, SequenceLabel( Btor2Circuit.constants - .map { AssignStmtLabel(it.value.getVar()!!.ref, BvLitExpr.of(it.value.value), metadata = EmptyMetaData) } + .map { + AssignStmtLabel( + it.value.getVar()!!.ref, + BvLitExpr.of(it.value.value), + metadata = EmptyMetaData, + ) + } .toList() ), EmptyMetaData, @@ -88,7 +94,6 @@ object Btor2XcfaBuilder { EmptyMetaData, ) procBuilder.addEdge(edge) - i++ lastLoc = newLoc // Havoc initial value of variables diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index 90a8c3c9a7..c11f23b171 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -19,7 +19,6 @@ import hu.bme.mit.theta.btor2xcfa.Btor2XcfaBuilder import hu.bme.mit.theta.common.logging.ConsoleLogger import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.common.logging.UniqueWarningLogger -import hu.bme.mit.theta.frontend.models.Btor2Circuit import hu.bme.mit.theta.frontend.visitors.Btor2Visitor import hu.bme.mit.theta.xcfa.model.toDot import java.io.File diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/ExecuteConfig.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/ExecuteConfig.kt index 3cdf682f91..d7e9d91fd8 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/ExecuteConfig.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/ExecuteConfig.kt @@ -86,7 +86,11 @@ fun runConfig( return result } -private fun propagateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniqueLogger: UniqueWarningLogger) { +private fun propagateInputOptions( + config: XcfaConfig<*, *>, + logger: Logger, + uniqueLogger: UniqueWarningLogger, +) { config.inputConfig.property = determineProperty(config, logger) LbePass.level = config.frontendConfig.lbeLevel StaticCoiPass.enabled = config.frontendConfig.staticCoi @@ -114,7 +118,11 @@ private fun propagateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniq ARGWebDebugger.on = config.debugConfig.argdebug } -private fun validateInputOptions(config: XcfaConfig<*, *>, logger: Logger, uniqueLogger: UniqueWarningLogger) { +private fun validateInputOptions( + config: XcfaConfig<*, *>, + logger: Logger, + uniqueLogger: UniqueWarningLogger, +) { rule("NoCoiWhenDataRace") { config.backendConfig.backend == Backend.CEGAR && (config.backendConfig.specConfig as? CegarConfig)?.coi != ConeOfInfluenceMode.NO_COI && diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index 9fba55722e..83cbbeb295 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -233,7 +233,11 @@ private fun parseChc( return xcfaBuilder.build() } -private fun parseBTOR2(input: File, logger: Logger, uniqueWarningLogger: UniqueWarningLogger): XCFA { +private fun parseBTOR2( + input: File, + logger: Logger, + uniqueWarningLogger: UniqueWarningLogger, +): XCFA { val visitor = Btor2Visitor() val btor2File = input diff --git a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt index 5dcca87d13..bf984bbf10 100644 --- a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt +++ b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt @@ -111,12 +111,13 @@ class OcExtraPasses : ) ) -class Btor2Passes(parseContext: ParseContext, uniqueWarningLogger: Logger) : ProcedurePassManager( - listOf( - NormalizePass(), - DeterministicPass(), - EmptyEdgeRemovalPass(), - UnusedLocRemovalPass(), - SimplifyExprsPass(parseContext) +class Btor2Passes(parseContext: ParseContext, uniqueWarningLogger: Logger) : + ProcedurePassManager( + listOf( + NormalizePass(), + DeterministicPass(), + EmptyEdgeRemovalPass(), + UnusedLocRemovalPass(), + SimplifyExprsPass(parseContext), + ) ) -) From 35b4700d097b24c92d900b4e44f67d71e6f62d72 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 14:45:53 +0200 Subject: [PATCH 60/72] fix: which loc is loop head --- .../mit/theta/frontend/models/Btor2Model.kt | 23 ++++++++++++++----- .../Btor2XcfaBuilder.kt | 8 +++---- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt index 64b2be2d8a..538bd48bf7 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Model.kt @@ -56,12 +56,23 @@ object Btor2Circuit { private val _states = mutableMapOf() private val _properties = mutableMapOf() - val nodes: Map get() = _nodes - val sorts: Map get() = _sorts - val constants: Map get() = _constants - val ops: Map get() = _ops - val states: Map get() = _states - val properties: Map get() = _properties + val nodes: Map + get() = _nodes + + val sorts: Map + get() = _sorts + + val constants: Map + get() = _constants + + val ops: Map + get() = _ops + + val states: Map + get() = _states + + val properties: Map + get() = _properties fun addSort(sort: Btor2Sort) { _sorts[sort.sid] = sort diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 86a7ff4283..4f6a6a1956 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -29,7 +29,7 @@ object Btor2XcfaBuilder { private var i: Int = 1 fun btor2xcfa(uniqueWarningLogger: UniqueWarningLogger): XCFA { - check(Btor2Circuit.properties.size != 0, { "Circuit has no error property" }) + check(Btor2Circuit.properties.isNotEmpty(), { "Circuit has no error property" }) check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) val ops = Btor2Circuit.ops.values.toList() for (i in 1 until ops.size) { @@ -95,8 +95,9 @@ object Btor2XcfaBuilder { ) procBuilder.addEdge(edge) lastLoc = newLoc + val loopHeadLoc = newLoc - // Havoc initial value of variables + // Havoc initial value of input variables if ( Btor2Circuit.states .filter { it.value.getVar()?.name?.startsWith("input_") == true } @@ -160,14 +161,13 @@ object Btor2XcfaBuilder { // Close circuit (update state values with nexts, havoc otherwise) var nexts = Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() - val firstLoc = procBuilder.getLocs().elementAt(1) nexts.forEach { newLoc = nextLoc(false, false, false) procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.second.getStmt()), EmptyMetaData)) lastLoc = newLoc } - procBuilder.addEdge(XcfaEdge(lastLoc, firstLoc, metadata = EmptyMetaData)) + procBuilder.addEdge(XcfaEdge(lastLoc, loopHeadLoc, metadata = EmptyMetaData)) return xcfaBuilder.build() } From c1ac7550afcf17c335638de28adac07c4a9ccc1f Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 14:57:22 +0200 Subject: [PATCH 61/72] added bitwise trait to xcfa made from btor2 --- .../java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 4f6a6a1956..8dc7308f05 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -21,6 +21,7 @@ import hu.bme.mit.theta.core.type.booltype.BoolExprs import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.models.Btor2Circuit +import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait import hu.bme.mit.theta.xcfa.AssignStmtLabel import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.Btor2Passes @@ -41,7 +42,10 @@ object Btor2XcfaBuilder { } val xcfaBuilder = XcfaBuilder("Btor2XCFA") - val procBuilder = XcfaProcedureBuilder("main", Btor2Passes(ParseContext(), uniqueWarningLogger)) + val context = ParseContext() + context.addArithmeticTrait(ArithmeticTrait.BITWISE) + + val procBuilder = XcfaProcedureBuilder("main", Btor2Passes(context, uniqueWarningLogger)) xcfaBuilder.addEntryPoint(procBuilder, emptyList()) procBuilder.createInitLoc() From 4d91bacceec2b8ec04008730969b8fbed977b56a Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 15:03:51 +0200 Subject: [PATCH 62/72] parsecontext integrated to btor2xcfa --- .../java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 7 +++---- .../java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt | 5 +++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 8dc7308f05..f4ecc0e9f5 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -29,7 +29,7 @@ import hu.bme.mit.theta.xcfa.passes.Btor2Passes object Btor2XcfaBuilder { private var i: Int = 1 - fun btor2xcfa(uniqueWarningLogger: UniqueWarningLogger): XCFA { + fun btor2xcfa(parseContext: ParseContext, uniqueWarningLogger: UniqueWarningLogger): XCFA { check(Btor2Circuit.properties.isNotEmpty(), { "Circuit has no error property" }) check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) val ops = Btor2Circuit.ops.values.toList() @@ -42,10 +42,9 @@ object Btor2XcfaBuilder { } val xcfaBuilder = XcfaBuilder("Btor2XCFA") - val context = ParseContext() - context.addArithmeticTrait(ArithmeticTrait.BITWISE) + parseContext.addArithmeticTrait(ArithmeticTrait.BITWISE) - val procBuilder = XcfaProcedureBuilder("main", Btor2Passes(context, uniqueWarningLogger)) + val procBuilder = XcfaProcedureBuilder("main", Btor2Passes(parseContext, uniqueWarningLogger)) xcfaBuilder.addEntryPoint(procBuilder, emptyList()) procBuilder.createInitLoc() diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index 83cbbeb295..baa9720aba 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -104,7 +104,7 @@ fun getXcfa( } InputType.BTOR2 -> { - parseBTOR2(config.inputConfig.input!!, logger, uniqueWarningLogger) + parseBTOR2(config.inputConfig.input!!, parseContext, logger, uniqueWarningLogger) } } } catch (e: Exception) { @@ -235,6 +235,7 @@ private fun parseChc( private fun parseBTOR2( input: File, + parseContext: ParseContext, logger: Logger, uniqueWarningLogger: UniqueWarningLogger, ): XCFA { @@ -251,7 +252,7 @@ private fun parseBTOR2( context.accept(visitor) - val xcfa = Btor2XcfaBuilder.btor2xcfa(uniqueWarningLogger) + val xcfa = Btor2XcfaBuilder.btor2xcfa(parseContext, uniqueWarningLogger) logger.write(Logger.Level.MAINSTEP, "XCFA built successfully") return xcfa } From 0179f14e3b211228e362444f829b2b81aff861dd Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 16:00:27 +0200 Subject: [PATCH 63/72] removeFirst to removeAt fix --- .../hu/bme/mit/theta/analysis/algorithm/oc/OcChecker.kt | 4 ++-- .../src/main/java/hu/bme/mit/theta/solver/SolverPool.java | 2 +- .../main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoi.kt | 2 +- .../bme/mit/theta/xcfa/analysis/coi/XcfaCoiMultiThread.kt | 2 +- .../bme/mit/theta/xcfa/analysis/coi/XcfaCoiSingleThread.kt | 2 +- .../java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaExactPo.kt | 6 +++--- .../bme/mit/theta/xcfa/analysis/oc/XcfaOcTraceExtractor.kt | 2 +- .../java/hu/bme/mit/theta/xcfa/analysis/por/XcfaSporLts.kt | 4 ++-- .../xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/Utils.kt | 4 ++-- .../java/hu/bme/mit/theta/xcfa/passes/LoopUnrollPass.kt | 2 +- .../java/hu/bme/mit/theta/xcfa/passes/SimplifyExprsPass.kt | 2 +- .../main/java/hu/bme/mit/theta/xcfa/passes/StaticCoiPass.kt | 4 ++-- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/subprojects/common/analysis/src/main/java/hu/bme/mit/theta/analysis/algorithm/oc/OcChecker.kt b/subprojects/common/analysis/src/main/java/hu/bme/mit/theta/analysis/algorithm/oc/OcChecker.kt index 3b13a2c976..48fdca9ba7 100644 --- a/subprojects/common/analysis/src/main/java/hu/bme/mit/theta/analysis/algorithm/oc/OcChecker.kt +++ b/subprojects/common/analysis/src/main/java/hu/bme/mit/theta/analysis/algorithm/oc/OcChecker.kt @@ -117,7 +117,7 @@ abstract class OcCheckerBase : OcChecker { if (from == to) return reason // cycle (self-loop) found val toClose = mutableListOf(from to to to reason) while (toClose.isNotEmpty()) { - val (fromTo, r) = toClose.removeFirst() + val (fromTo, r) = toClose.removeAt(0) val (i1, i2) = fromTo check(i1 != i2) if (rels[i1][i2] != null) continue @@ -160,7 +160,7 @@ abstract class OcCheckerBase : OcChecker { val unassignedCopy = unassignedWss.toMutableList() val pairs = mutableListOf, Relation>>() while (unassignedCopy.isNotEmpty()) { - val ws = unassignedCopy.removeFirst() + val ws = unassignedCopy.removeAt(0) val pair = unassignedCopy.find { it.from == ws.to || it.to == ws.from } if (pair != null) { pairs.add(ws to pair) diff --git a/subprojects/solver/solver/src/main/java/hu/bme/mit/theta/solver/SolverPool.java b/subprojects/solver/solver/src/main/java/hu/bme/mit/theta/solver/SolverPool.java index 63d8c24b46..d41e16997e 100644 --- a/subprojects/solver/solver/src/main/java/hu/bme/mit/theta/solver/SolverPool.java +++ b/subprojects/solver/solver/src/main/java/hu/bme/mit/theta/solver/SolverPool.java @@ -57,7 +57,7 @@ public SolverPool(SolverFactory solverFactory, ClosingMode closingMode) { public Solver requestSolver() { if (this.available.isEmpty()) createNewSolvers(); - return this.available.removeFirst(); + return this.available.removeAt(0); } public void returnSolver(Solver solver) { diff --git a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoi.kt b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoi.kt index 8fe5710bea..1a0ca76021 100644 --- a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoi.kt +++ b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoi.kt @@ -117,7 +117,7 @@ abstract class XcfaCoi(protected val xcfa: XCFA) { val toVisit = edge.target.outgoingEdges.toMutableList() val visited = mutableSetOf() while (toVisit.isNotEmpty()) { - val visiting = toVisit.removeFirst() + val visiting = toVisit.removeAt(0) visited.add(visiting) val currentVars = visiting.collectVarsWithAccessType() addEdgeIfObserved( diff --git a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoiMultiThread.kt b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoiMultiThread.kt index 6634a3bc53..6db52bc12a 100644 --- a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoiMultiThread.kt +++ b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoiMultiThread.kt @@ -112,7 +112,7 @@ class XcfaCoiMultiThread(xcfa: XCFA) : XcfaCoi(xcfa) { val visited = mutableSetOf() while (toVisit.isNotEmpty()) { - val visiting = toVisit.removeFirst() + val visiting = toVisit.removeAt(0) if (isRealObserver(visiting)) return true visited.add(visiting) diff --git a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoiSingleThread.kt b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoiSingleThread.kt index dbea686f3e..20a4ea3247 100644 --- a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoiSingleThread.kt +++ b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/coi/XcfaCoiSingleThread.kt @@ -80,7 +80,7 @@ class XcfaCoiSingleThread(xcfa: XCFA) : XcfaCoi(xcfa) { val toVisit = realObservers.toMutableList() val visited = mutableSetOf() while (toVisit.isNotEmpty()) { - val visiting = toVisit.removeFirst() + val visiting = toVisit.removeAt(0) visited.add(visiting) val toAdd = directObservers[visiting] ?: emptySet() toVisit.addAll(toAdd.filter { it !in visited }) diff --git a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaExactPo.kt b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaExactPo.kt index 18c0ad1617..70a9f7d235 100644 --- a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaExactPo.kt +++ b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaExactPo.kt @@ -52,7 +52,7 @@ internal class XcfaExactPo(private val threads: Set) { val possiblePathPoints = mutableListOf(GlobalEdge(from)) val visited = mutableSetOf() while (possiblePathPoints.isNotEmpty()) { - val current = possiblePathPoints.removeFirst() + val current = possiblePathPoints.removeAt(0) if (!visited.add(current)) continue if (current.pid == to.pid && reachableEdges[current.pid]!!.reachable(current, to.edge)) return true @@ -88,7 +88,7 @@ private class ReachableEdges(procedure: XcfaProcedure) { val toVisit = mutableListOf(null to procedure.initLoc) val initials = mutableListOf>() while (toVisit.isNotEmpty()) { // assumes xcfa contains no cycles (an OC checker requirement) - val edge = toVisit.removeFirst() + val edge = toVisit.removeAt(0) val id = ids.size ids[edge] = id @@ -118,7 +118,7 @@ private class ReachableEdges(procedure: XcfaProcedure) { private fun close(initials: List>) { val toClose = initials.toMutableList() while (toClose.isNotEmpty()) { - val (from, to) = toClose.removeFirst() + val (from, to) = toClose.removeAt(0) if (reachable[from][to]) continue reachable[from][to] = true diff --git a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaOcTraceExtractor.kt b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaOcTraceExtractor.kt index c415ed0d63..9e3ed9d881 100644 --- a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaOcTraceExtractor.kt +++ b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/oc/XcfaOcTraceExtractor.kt @@ -127,7 +127,7 @@ internal class XcfaOcTraceExtractor( val finished = mutableListOf() // topological order while (lastEvents.isNotEmpty()) { // DFS from startEvents as root nodes val stack = Stack() - stack.push(StackItem(lastEvents.removeFirst())) + stack.push(StackItem(lastEvents.removeAt(0))) while (stack.isNotEmpty()) { val top = stack.peek() if (top.eventsToVisit == null) { diff --git a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/por/XcfaSporLts.kt b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/por/XcfaSporLts.kt index 49bf538422..cf8de86f79 100644 --- a/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/por/XcfaSporLts.kt +++ b/subprojects/xcfa/xcfa-analysis/src/main/java/hu/bme/mit/theta/xcfa/analysis/por/XcfaSporLts.kt @@ -422,7 +422,7 @@ open class XcfaSporLts(protected val xcfa: XCFA) : val edgesToExplore = mutableListOf() edgesToExplore.add(startEdge) while (edgesToExplore.isNotEmpty()) { - val exploring = edgesToExplore.removeFirst() + val exploring = edgesToExplore.removeAt(0) vars.addAll(getDirectlyUsedVars(exploring)) if (goFurther.test(exploring)) { val successiveEdges = getSuccessiveEdges(exploring) @@ -451,7 +451,7 @@ open class XcfaSporLts(protected val xcfa: XCFA) : val edgesToExplore = mutableListOf() edgesToExplore.add(startEdge) while (edgesToExplore.isNotEmpty()) { - val exploring = edgesToExplore.removeFirst() + val exploring = edgesToExplore.removeAt(0) memLocs.addAll(getDirectlyUsedMemLocs(exploring)) if (goFurther.test(exploring)) { val successiveEdges = getSuccessiveEdges(exploring) diff --git a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/Utils.kt b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/Utils.kt index 2008a20f79..1c47773d43 100644 --- a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/Utils.kt +++ b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/Utils.kt @@ -182,7 +182,7 @@ inline val XcfaEdge.acquiredEmbeddedFenceVars: Set val acquired = mutableSetOf() val toVisit = mutableListOf>>(this to setOf()) while (toVisit.isNotEmpty()) { - val (visiting, mutexes) = toVisit.removeFirst() + val (visiting, mutexes) = toVisit.removeAt(0) val newMutexes = mutexes.toMutableSet() acquired.addAll( visiting.getFlatLabels().flatMap { fence -> @@ -334,7 +334,7 @@ private fun XcfaEdge.collectGlobalVarsWithTraversal( val edgesToExplore = mutableListOf() edgesToExplore.add(this) while (edgesToExplore.isNotEmpty()) { - val exploring = edgesToExplore.removeFirst() + val exploring = edgesToExplore.removeAt(0) exploring.label.collectGlobalVars(globalVars).forEach { (varDecl, access) -> vars[varDecl] = vars[varDecl].merge(access) } diff --git a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/LoopUnrollPass.kt b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/LoopUnrollPass.kt index 7000a3813e..12032208de 100644 --- a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/LoopUnrollPass.kt +++ b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/LoopUnrollPass.kt @@ -312,7 +312,7 @@ class LoopUnrollPass(alwaysForceUnroll: Int = -1) : ProcedurePass { val edges = mutableListOf() val toVisit = mutableListOf(startLoc) while (toVisit.isNotEmpty()) { - val current = toVisit.removeFirst() + val current = toVisit.removeAt(0) if (current == loopStart) continue if (current.incomingEdges.size == 0) return@backSearch null // not part of the loop if (locs.add(current)) { diff --git a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/SimplifyExprsPass.kt b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/SimplifyExprsPass.kt index d81012d3b2..03767e6914 100644 --- a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/SimplifyExprsPass.kt +++ b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/SimplifyExprsPass.kt @@ -73,7 +73,7 @@ class SimplifyExprsPass(val parseContext: ParseContext) : ProcedurePass { val toVisit = builder.initLoc.outgoingEdges.toMutableList() val visited = mutableSetOf() while (toVisit.isNotEmpty()) { - val edge = toVisit.removeFirst() + val edge = toVisit.removeAt(0) visited.add(edge) val incomingValuations = diff --git a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/StaticCoiPass.kt b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/StaticCoiPass.kt index d220bdab5b..dd035cedd3 100644 --- a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/StaticCoiPass.kt +++ b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/StaticCoiPass.kt @@ -79,7 +79,7 @@ class StaticCoiPass : ProcedurePass { val toVisit = mutableListOf(edge) val visited = mutableSetOf() while (toVisit.isNotEmpty()) { - val visiting = toVisit.removeFirst() + val visiting = toVisit.removeAt(0) visited.add(visiting) val labels = if (visiting == edge) remaining else visiting.getFlatLabels() labels.forEach { target -> @@ -121,7 +121,7 @@ class StaticCoiPass : ProcedurePass { val toVisit = mutableListOf(label) val visited = mutableSetOf() while (toVisit.isNotEmpty()) { - val visiting = toVisit.removeFirst() + val visiting = toVisit.removeAt(0) if (visiting.collectAssumesVars().isNotEmpty()) return true if (visiting.dereferencesWithAccessTypes.any { it.second.isWritten }) return true From 4b1f0f9c4e4a74dcf6b28b033532a19ab480467b Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 16:05:13 +0200 Subject: [PATCH 64/72] minor remove first fix --- .../src/main/java/hu/bme/mit/theta/solver/SolverPool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/solver/solver/src/main/java/hu/bme/mit/theta/solver/SolverPool.java b/subprojects/solver/solver/src/main/java/hu/bme/mit/theta/solver/SolverPool.java index d41e16997e..63d8c24b46 100644 --- a/subprojects/solver/solver/src/main/java/hu/bme/mit/theta/solver/SolverPool.java +++ b/subprojects/solver/solver/src/main/java/hu/bme/mit/theta/solver/SolverPool.java @@ -57,7 +57,7 @@ public SolverPool(SolverFactory solverFactory, ClosingMode closingMode) { public Solver requestSolver() { if (this.available.isEmpty()) createNewSolvers(); - return this.available.removeAt(0); + return this.available.removeFirst(); } public void returnSolver(Solver solver) { From 87a8b060d78ad9024cb9d1eb7145ae6574260d84 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 16:51:10 +0200 Subject: [PATCH 65/72] added missing initial state havocs --- .../Btor2XcfaBuilder.kt | 48 ++++++++++++++----- .../theta/xcfa/cli/XcfaCliPortfolioTest.kt | 5 +- .../hu/bme/mit/theta/xcfa/cli/XcfaDslTest.kt | 5 +- 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index f4ecc0e9f5..48ff6b9820 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -17,10 +17,11 @@ package hu.bme.mit.theta.btor2xcfa import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.core.stmt.AssumeStmt +import hu.bme.mit.theta.core.stmt.HavocStmt import hu.bme.mit.theta.core.type.booltype.BoolExprs import hu.bme.mit.theta.core.type.bvtype.BvLitExpr import hu.bme.mit.theta.frontend.ParseContext -import hu.bme.mit.theta.frontend.models.Btor2Circuit +import hu.bme.mit.theta.frontend.models.* import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait import hu.bme.mit.theta.xcfa.AssignStmtLabel import hu.bme.mit.theta.xcfa.model.* @@ -80,18 +81,31 @@ object Btor2XcfaBuilder { // Initializations newLoc = nextLoc(false, false, false) procBuilder.addLoc(newLoc) + val stateInitMap : MutableMap = mutableMapOf() + for(init in Btor2Circuit.states.values.filter { it.value is Btor2Init }) { + stateInitMap[init.state!!] = init as Btor2Init + } val edge = XcfaEdge( lastLoc, newLoc, SequenceLabel( - Btor2Circuit.states + Btor2Circuit.states.values .filter { - if (it.value.getVar() != null && it.value.getVar()!!.name.startsWith("init_")) true - else false + it is Btor2State + } + .map { + StmtLabel( + if(it in stateInitMap) { + stateInitMap[it]!!.getStmt() + } else { + HavocStmt.of(it.getVar()) + }, + metadata = EmptyMetaData + ) + } - .map { StmtLabel(it.value.getStmt(), metadata = EmptyMetaData) } .toList() ), EmptyMetaData, @@ -102,8 +116,8 @@ object Btor2XcfaBuilder { // Havoc initial value of input variables if ( - Btor2Circuit.states - .filter { it.value.getVar()?.name?.startsWith("input_") == true } + Btor2Circuit.states.values + .filter { it is Btor2Input } .isNotEmpty() ) { newLoc = nextLoc(false, false, false) @@ -113,12 +127,11 @@ object Btor2XcfaBuilder { lastLoc, newLoc, SequenceLabel( - Btor2Circuit.states + Btor2Circuit.states.values .filter { - if (it.value.getVar() != null && it.value.getVar()!!.name.startsWith("input_")) true - else false + it is Btor2Input } - .map { StmtLabel(it.value.getStmt(), metadata = EmptyMetaData) } + .map { StmtLabel(it.getStmt(), metadata = EmptyMetaData) } .toList() ), EmptyMetaData, @@ -163,13 +176,22 @@ object Btor2XcfaBuilder { // Close circuit (update state values with nexts, havoc otherwise) var nexts = - Btor2Circuit.states.filter { it.value.getVar()?.name?.startsWith("next_") == true }.toList() + Btor2Circuit.states.values.filter { it is Btor2Next }.toList() + var statesWithNext = nexts.map { (it as Btor2Next).state }.toSet() + var statesWithoutNext = Btor2Circuit.states.values.filter { it is Btor2State }.filter { !statesWithNext.contains(it.value) }.toList() nexts.forEach { newLoc = nextLoc(false, false, false) - procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.second.getStmt()), EmptyMetaData)) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.getStmt()), EmptyMetaData)) lastLoc = newLoc } + + statesWithoutNext.forEach { + newLoc = nextLoc(false, false, false) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(HavocStmt.of(it.getVar()!!)), EmptyMetaData)) + lastLoc = newLoc + } + procBuilder.addEdge(XcfaEdge(lastLoc, loopHeadLoc, metadata = EmptyMetaData)) return xcfaBuilder.build() } diff --git a/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaCliPortfolioTest.kt b/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaCliPortfolioTest.kt index 3ba0c16167..dd9acec681 100644 --- a/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaCliPortfolioTest.kt +++ b/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaCliPortfolioTest.kt @@ -15,8 +15,7 @@ */ package hu.bme.mit.theta.xcfa.cli -import hu.bme.mit.theta.common.logging.Logger -import hu.bme.mit.theta.common.logging.NullLogger +import hu.bme.mit.theta.common.logging.* import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.graphsolver.patterns.constraints.MCM import hu.bme.mit.theta.xcfa.cli.params.SpecBackendConfig @@ -114,7 +113,7 @@ class XcfaCliPortfolioTest { ParseContext(), XcfaConfig(), NullLogger.getInstance(), - NullLogger.getInstance(), + UniqueWarningLogger(NullLogger.getInstance()) ) val vis = stm.visualize() diff --git a/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaDslTest.kt b/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaDslTest.kt index 354050fea6..57e865ecb0 100644 --- a/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaDslTest.kt +++ b/subprojects/xcfa/xcfa-cli/src/test/java/hu/bme/mit/theta/xcfa/cli/XcfaDslTest.kt @@ -16,6 +16,7 @@ package hu.bme.mit.theta.xcfa.cli import hu.bme.mit.theta.common.logging.NullLogger +import hu.bme.mit.theta.common.logging.UniqueWarningLogger import hu.bme.mit.theta.core.type.inttype.IntExprs.Int import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.solver.SolverManager @@ -94,7 +95,7 @@ class XcfaDslTest { config, ParseContext(), NullLogger.getInstance(), - NullLogger.getInstance(), + UniqueWarningLogger(NullLogger.getInstance()), ) val safetyResult = checker.check() Assert.assertTrue(safetyResult.isSafe) @@ -108,7 +109,7 @@ class XcfaDslTest { config, ParseContext(), NullLogger.getInstance(), - NullLogger.getInstance(), + UniqueWarningLogger(NullLogger.getInstance()), ) val safetyResult = checker.check() Assert.assertTrue(safetyResult.isUnsafe) From d5eda861e4440c12485a825d483dc2db3750cd85 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Wed, 16 Jul 2025 17:10:27 +0200 Subject: [PATCH 66/72] minor fix --- .../hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 48ff6b9820..f56d04821b 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -62,11 +62,11 @@ object Btor2XcfaBuilder { lastLoc, newLoc, SequenceLabel( - Btor2Circuit.constants + Btor2Circuit.constants.values .map { AssignStmtLabel( - it.value.getVar()!!.ref, - BvLitExpr.of(it.value.value), + it.getVar()!!.ref, + BvLitExpr.of(it.value), metadata = EmptyMetaData, ) } @@ -82,8 +82,8 @@ object Btor2XcfaBuilder { newLoc = nextLoc(false, false, false) procBuilder.addLoc(newLoc) val stateInitMap : MutableMap = mutableMapOf() - for(init in Btor2Circuit.states.values.filter { it.value is Btor2Init }) { - stateInitMap[init.state!!] = init as Btor2Init + for(init in Btor2Circuit.states.values.filter { it is Btor2Init }) { + stateInitMap[init.state!!] = (init as Btor2Init) } val edge = @@ -97,7 +97,7 @@ object Btor2XcfaBuilder { } .map { StmtLabel( - if(it in stateInitMap) { + if(it in stateInitMap.keys) { stateInitMap[it]!!.getStmt() } else { HavocStmt.of(it.getVar()) @@ -178,7 +178,7 @@ object Btor2XcfaBuilder { var nexts = Btor2Circuit.states.values.filter { it is Btor2Next }.toList() var statesWithNext = nexts.map { (it as Btor2Next).state }.toSet() - var statesWithoutNext = Btor2Circuit.states.values.filter { it is Btor2State }.filter { !statesWithNext.contains(it.value) }.toList() + var statesWithoutNext = Btor2Circuit.states.values.filter { it is Btor2State }.filter { !statesWithNext.contains(it) }.toList() nexts.forEach { newLoc = nextLoc(false, false, false) From f80ce5245b3b74f0610258e6dc7812aa8e9cb15c Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Fri, 18 Jul 2025 11:50:02 +0200 Subject: [PATCH 67/72] over-cautious check removed --- .../java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index f56d04821b..4474539bbe 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -33,14 +33,11 @@ object Btor2XcfaBuilder { fun btor2xcfa(parseContext: ParseContext, uniqueWarningLogger: UniqueWarningLogger): XCFA { check(Btor2Circuit.properties.isNotEmpty(), { "Circuit has no error property" }) check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) + + // would be nice to check that no operand node (i.e. right side node) is later than it's operation node (i.e. left side) + // but I think we parse it in the right order, so it's the circuit's fault if the above does not hold val ops = Btor2Circuit.ops.values.toList() - for (i in 1 until ops.size) { - check(ops[i].nid > ops[i - 1].nid, { "Ops are not in increasing order" }) - } val nodes = Btor2Circuit.nodes.values.toList() - for (i in 1 until nodes.size) { - check(nodes[i].nid > nodes[i - 1].nid, { "Nodes are not in increasing order" }) - } val xcfaBuilder = XcfaBuilder("Btor2XCFA") parseContext.addArithmeticTrait(ArithmeticTrait.BITWISE) From 78a643cc16d66352ab6d432e66c9b24de1759a30 Mon Sep 17 00:00:00 2001 From: AdamZsofi Date: Mon, 6 Oct 2025 11:54:17 +0200 Subject: [PATCH 68/72] added some refs instead of expr --- .../theta/frontend/models/Btor2Operation.kt | 34 +++++++++---------- .../Btor2XcfaBuilder.kt | 2 ++ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index 7bc72f9d06..dc3dd294e8 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -31,7 +31,7 @@ import hu.bme.mit.theta.core.type.inttype.IntLitExpr import hu.bme.mit.theta.core.utils.TypeUtils.checkAllTypesEqual import java.math.BigInteger -fun getOperandExpr(operand: Btor2Node, negated: Boolean = false): Expr { +fun getOperandRef(operand: Btor2Node, negated: Boolean = false): Expr { return if (negated) { Not(operand.getVar()!!.ref as Expr) as Expr } else { @@ -60,10 +60,10 @@ data class Btor2UnaryOperation( override fun getExpr(): Expr { val one = BvExprs.Bv(booleanArrayOf(true)) as Expr return when (operator) { - Btor2UnaryOperator.NOT -> BvNotExpr.of(getOperandExpr(operand)) - Btor2UnaryOperator.INC -> BvAddExpr.create(mutableListOf(getOperandExpr(operand), one)) - Btor2UnaryOperator.DEC -> BvSubExpr.create(getOperandExpr(operand), one) - Btor2UnaryOperator.NEG -> BvNegExpr.of(getOperandExpr(operand)) + Btor2UnaryOperator.NOT -> BvNotExpr.of(getOperandRef(operand)) + Btor2UnaryOperator.INC -> BvAddExpr.create(mutableListOf(getOperandRef(operand), one)) + Btor2UnaryOperator.DEC -> BvSubExpr.create(getOperandRef(operand), one) + Btor2UnaryOperator.NEG -> BvNegExpr.of(getOperandRef(operand)) Btor2UnaryOperator.REDAND -> BvAndExpr.create(valueByBits()) Btor2UnaryOperator.REDOR -> BvOrExpr.create(valueByBits()) Btor2UnaryOperator.REDXOR -> BvXorExpr.create(valueByBits()) @@ -103,8 +103,8 @@ data class Btor2ExtOperation( ogLength?.plus(wLength) ?: throw IllegalArgumentException("Operand sort width is null or not defined") return when (operator) { - Btor2ExtOperator.SEXT -> BvSExtExpr.create(getOperandExpr(operand), BvType.of(newLength)) - Btor2ExtOperator.UEXT -> BvZExtExpr.create(getOperandExpr(operand), BvType.of(newLength)) + Btor2ExtOperator.SEXT -> BvSExtExpr.create(getOperandRef(operand), BvType.of(newLength)) + Btor2ExtOperator.UEXT -> BvZExtExpr.create(getOperandRef(operand), BvType.of(newLength)) } } @@ -133,7 +133,7 @@ data class Btor2SliceOperation( override fun getExpr(): Expr { val newU: BigInteger = u + BigInteger.valueOf(1) // val newU: BigInteger = if (u == l) u + BigInteger.valueOf(1) else u - return BvExtractExpr.create(getOperandExpr(operand), IntLitExpr.of(l), IntLitExpr.of(newU)) + return BvExtractExpr.create(getOperandRef(operand), IntLitExpr.of(l), IntLitExpr.of(newU)) } override fun accept(visitor: Btor2NodeVisitor, param: P): R { @@ -161,8 +161,8 @@ data class Btor2BinaryOperation( } override fun getExpr(): Expr { - val op1Expr = getOperandExpr(op1, opd1_negated) - val op2Expr = getOperandExpr(op2, opd2_negated) + val op1Expr = getOperandRef(op1, opd1_negated) + val op2Expr = getOperandRef(op2, opd2_negated) return when (operator) { Btor2BinaryOperator.ADD -> BvAddExpr.create(mutableListOf(op1Expr, op2Expr)) @@ -252,8 +252,8 @@ data class Btor2Comparison( } override fun getExpr(): Expr { - val op1_expr = getOperandExpr(op1, opd1_negated) - val op2_expr = getOperandExpr(op2, opd2_negated) + val op1_expr = getOperandRef(op1, opd1_negated) + val op2_expr = getOperandRef(op2, opd2_negated) return when (operator) { Btor2ComparisonOperator.EQ -> IteExpr.of( @@ -358,13 +358,13 @@ data class Btor2Boolean( return when (operator) { Btor2BooleanOperator.IFF -> IteExpr.of( - IffExpr.create(getOperandExpr(op1, opd1_negated), getOperandExpr(op2, opd2_negated)), + IffExpr.create(getOperandRef(op1, opd1_negated), getOperandRef(op2, opd2_negated)), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) Btor2BooleanOperator.IMPLIES -> IteExpr.of( - ImplyExpr.create(getOperandExpr(op1, opd1_negated), getOperandExpr(op2, opd2_negated)), + ImplyExpr.create(getOperandRef(op1, opd1_negated), getOperandRef(op2, opd2_negated)), BvExprs.Bv(BooleanArray(1) { true }), BvExprs.Bv(BooleanArray(1) { false }), ) @@ -400,10 +400,10 @@ data class Btor2TernaryOperation( override fun getExpr(): Expr { checkAllTypesEqual(op1.getExpr(), BvExprs.Bv(BooleanArray(1) { true })) - val op1Expr = getOperandExpr(op1, negated1) + val op1Expr = getOperandRef(op1, negated1) val op1ExprBool = Eq(op1Expr, BvExprs.Bv(BooleanArray(1) { true })) - val op2Expr = getOperandExpr(op2, negated2) - val op3Expr = getOperandExpr(op3, negated3) + val op2Expr = getOperandRef(op2, negated2) + val op3Expr = getOperandRef(op3, negated3) return when (operator) { Btor2TernaryOperator.ITE -> IteExpr.of(op1ExprBool as Expr, op2Expr, op3Expr) diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 4474539bbe..5abbe39b75 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -137,6 +137,8 @@ object Btor2XcfaBuilder { lastLoc = newLoc } + + // Add operations Btor2Circuit.ops.forEach() { val loc = nextLoc(false, false, false) From 58b44c59703b27684120362f3736049e6b2f318d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sat, 29 Nov 2025 13:05:11 +0100 Subject: [PATCH 69/72] Mathsat added for local bechmarks --- .../theta/frontend/models/Btor2Stateful.kt | 3 +- .../mathsat/MathSATSmtLibSolverInstaller.java | 5 +- .../adding.3.prop1-back-serstep.btor2 | 179 + .../anderson.4.prop1-back-serstep.btor2 | 690 ++++ .../driving_phils.1.prop1-back-serstep.btor2 | 1033 ++++++ .../xcfa/c2xcfa/src/test/resources/count2.c | 50 + .../driving_phils.1.prop1-back-serstep.c | 3175 +++++++++++++++++ .../mit/theta/xcfa/cli/params/XcfaConfig.kt | 14 +- .../xcfa/cli/utils/SolverRegistration.kt | 2 +- .../mit/theta/xcfa/cli/utils/XcfaParser.kt | 3 +- 10 files changed, 5141 insertions(+), 13 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/driving_phils.1.prop1-back-serstep.btor2 create mode 100644 subprojects/xcfa/c2xcfa/src/test/resources/count2.c create mode 100644 subprojects/xcfa/c2xcfa/src/test/resources/driving_phils.1.prop1-back-serstep.c diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt index f930ebea1a..d60aa9daf7 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Stateful.kt @@ -129,8 +129,7 @@ data class Btor2Next( } override fun getStmt(): Stmt { - return if (negated) AssignStmt.of(state.getVar(), BvNotExpr.create(value.getExpr())) - else AssignStmt.of(state.getVar(), value.getExpr() as Expr) + return AssignStmt.of(state.getVar(), getOperandRef(value, negated)) } override fun accept(visitor: Btor2NodeVisitor, param: P): R { diff --git a/subprojects/solver/solver-smtlib/src/main/java/hu/bme/mit/theta/solver/smtlib/impl/mathsat/MathSATSmtLibSolverInstaller.java b/subprojects/solver/solver-smtlib/src/main/java/hu/bme/mit/theta/solver/smtlib/impl/mathsat/MathSATSmtLibSolverInstaller.java index 5621929662..351b34d1ef 100644 --- a/subprojects/solver/solver-smtlib/src/main/java/hu/bme/mit/theta/solver/smtlib/impl/mathsat/MathSATSmtLibSolverInstaller.java +++ b/subprojects/solver/solver-smtlib/src/main/java/hu/bme/mit/theta/solver/smtlib/impl/mathsat/MathSATSmtLibSolverInstaller.java @@ -127,10 +127,11 @@ protected void installSolver(Path installDir, String version) final var downloadUrl = URI.create( String.format( - "https://mathsat.fbk.eu/download.php?file=mathsat-%s-%s.%s", + "https://mathsat.fbk.eu/release/mathsat-%s-%s.%s", version, archStr, - OsHelper.getOs().equals(WINDOWS) ? "zip" : "tar.gz")); + OsHelper.getOs().equals(WINDOWS) ? "zip" : "tar.gz") + ); logger.write(Logger.Level.MAINSTEP, "Starting download (%s)...\n", downloadUrl.toString()); diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..34ac31f2c1 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/adding.3.prop1-back-serstep.btor2 @@ -0,0 +1,179 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 16 +4 sort bitvec 32 +5 zero 3 +6 state 3 nextv_c +7 init 3 6 5 +8 state 3 nextv_x1 +9 init 3 8 5 +10 state 3 nextv_x2 +11 init 3 10 5 +12 zero 1 +13 state 1 nexta_Q_a1 +14 init 1 13 12 +15 state 1 nexta_R_a1 +16 init 1 15 12 +17 state 1 nexta_S_a1 +18 init 1 17 12 +19 state 1 nexta_Q_a2 +20 init 1 19 12 +21 state 1 nexta_R_a2 +22 init 1 21 12 +23 state 1 nexta_S_a2 +24 init 1 23 12 +25 state 1 dve_initialized +26 init 1 25 12 +27 state 1 dve_valid +28 init 1 27 12 +29 and 1 13 -15 +30 and 1 29 -17 +31 and 1 30 19 +32 and 1 31 -21 +33 and 1 32 -23 +34 constd 3 1 +35 eq 1 34 6 +36 and 1 33 35 +37 constd 3 0 +38 eq 1 37 8 +39 and 1 36 38 +40 eq 1 37 10 +41 and 1 39 40 +42 and 1 27 41 +43 bad 42 +44 input 3 v_c +45 next 3 6 44 +46 input 3 v_x1 +47 next 3 8 46 +48 input 3 v_x2 +49 next 3 10 48 +50 input 1 a_Q_a1 +51 next 1 13 50 +52 input 1 a_R_a1 +53 next 1 15 52 +54 input 1 a_S_a1 +55 next 1 17 54 +56 input 1 a_Q_a2 +57 next 1 19 56 +58 input 1 a_R_a2 +59 next 1 21 58 +60 input 1 a_S_a2 +61 next 1 23 60 +62 const 1 1 +63 next 1 25 62 +64 input 1 f0 +65 constd 4 300 +66 constd 3 0 +67 concat 4 44 66 +68 constd 4 16 +69 sra 4 67 68 +70 ulte 1 65 69 +71 and 1 50 -70 +72 or 1 -64 71 +73 or 1 52 64 +74 input 1 f1 +75 or 1 73 -74 +76 and 1 72 75 +77 or 1 54 74 +78 input 1 f2 +79 or 1 77 -78 +80 and 1 76 79 +81 input 1 f3 +82 ite 3 64 44 46 +83 concat 4 82 66 +84 sra 4 83 68 +85 add 4 69 84 +86 slice 3 85 15 0 +87 ite 3 74 86 82 +88 ite 3 78 87 44 +89 concat 4 88 66 +90 sra 4 89 68 +91 ulte 1 65 90 +92 and 1 56 -91 +93 or 1 -81 92 +94 and 1 80 93 +95 or 1 58 81 +96 input 1 f4 +97 or 1 95 -96 +98 and 1 94 97 +99 or 1 60 96 +100 input 1 f5 +101 or 1 99 -100 +102 and 1 98 101 +103 or 1 64 74 +104 or 1 78 103 +105 or 1 81 104 +106 or 1 96 105 +107 or 1 100 106 +108 and 1 102 107 +109 and 1 50 52 +110 or 1 50 52 +111 and 1 54 110 +112 or 1 109 111 +113 or 1 54 110 +114 and 1 -112 113 +115 and 1 56 58 +116 or 1 56 58 +117 and 1 60 116 +118 or 1 115 117 +119 and 1 114 -118 +120 or 1 60 116 +121 and 1 119 120 +122 and 1 108 121 +123 and 1 73 -74 +124 and 1 50 -64 +125 or 1 124 78 +126 and 1 123 125 +127 and 1 77 -78 +128 or 1 123 125 +129 and 1 127 128 +130 or 1 126 129 +131 or 1 127 128 +132 and 1 -130 131 +133 and 1 95 -96 +134 and 1 56 -81 +135 or 1 134 100 +136 and 1 133 135 +137 and 1 99 -100 +138 or 1 133 135 +139 and 1 137 138 +140 or 1 136 139 +141 and 1 132 -140 +142 or 1 137 138 +143 and 1 141 142 +144 and 1 122 143 +145 ite 3 81 88 48 +146 concat 4 145 66 +147 sra 4 146 68 +148 add 4 90 147 +149 slice 3 148 15 0 +150 ite 3 96 149 145 +151 ite 3 100 150 88 +152 eq 1 151 6 +153 and 1 144 152 +154 eq 1 87 8 +155 and 1 153 154 +156 eq 1 150 10 +157 and 1 155 156 +158 eq 1 125 13 +159 and 1 157 158 +160 eq 1 123 15 +161 and 1 159 160 +162 eq 1 127 17 +163 and 1 161 162 +164 eq 1 135 19 +165 and 1 163 164 +166 eq 1 133 21 +167 and 1 165 166 +168 eq 1 137 23 +169 and 1 167 168 +170 and 1 169 27 +171 constd 4 637 +172 eq 1 171 69 +173 ite 1 25 170 172 +174 next 1 27 173 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..f224822b83 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.4.prop1-back-serstep.btor2 @@ -0,0 +1,690 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_Slot_2 +11 init 2 10 5 +12 state 2 nextv_Slot_3 +13 init 2 12 5 +14 state 2 nextv_next +15 init 2 14 5 +16 state 2 nextv_my_place_P_0 +17 init 2 16 5 +18 state 2 nextv_my_place_P_1 +19 init 2 18 5 +20 state 2 nextv_my_place_P_2 +21 init 2 20 5 +22 state 2 nextv_my_place_P_3 +23 init 2 22 5 +24 zero 1 +25 state 1 nexta_NCS_P_0 +26 init 1 25 24 +27 state 1 nexta_p1_P_0 +28 init 1 27 24 +29 state 1 nexta_p2_P_0 +30 init 1 29 24 +31 state 1 nexta_p3_P_0 +32 init 1 31 24 +33 state 1 nexta_CS_P_0 +34 init 1 33 24 +35 state 1 nexta_NCS_P_1 +36 init 1 35 24 +37 state 1 nexta_p1_P_1 +38 init 1 37 24 +39 state 1 nexta_p2_P_1 +40 init 1 39 24 +41 state 1 nexta_p3_P_1 +42 init 1 41 24 +43 state 1 nexta_CS_P_1 +44 init 1 43 24 +45 state 1 nexta_NCS_P_2 +46 init 1 45 24 +47 state 1 nexta_p1_P_2 +48 init 1 47 24 +49 state 1 nexta_p2_P_2 +50 init 1 49 24 +51 state 1 nexta_p3_P_2 +52 init 1 51 24 +53 state 1 nexta_CS_P_2 +54 init 1 53 24 +55 state 1 nexta_NCS_P_3 +56 init 1 55 24 +57 state 1 nexta_p1_P_3 +58 init 1 57 24 +59 state 1 nexta_p2_P_3 +60 init 1 59 24 +61 state 1 nexta_p3_P_3 +62 init 1 61 24 +63 state 1 nexta_CS_P_3 +64 init 1 63 24 +65 state 1 dve_initialized +66 init 1 65 24 +67 state 1 dve_valid +68 init 1 67 24 +69 and 1 25 -27 +70 and 1 69 -29 +71 and 1 70 -31 +72 and 1 71 -33 +73 and 1 72 35 +74 and 1 73 -37 +75 and 1 74 -39 +76 and 1 75 -41 +77 and 1 76 -43 +78 and 1 77 45 +79 and 1 78 -47 +80 and 1 79 -49 +81 and 1 80 -51 +82 and 1 81 -53 +83 and 1 82 55 +84 and 1 83 -57 +85 and 1 84 -59 +86 and 1 85 -61 +87 and 1 86 -63 +88 constd 2 1 +89 eq 1 88 6 +90 and 1 87 89 +91 constd 2 0 +92 eq 1 91 8 +93 and 1 90 92 +94 eq 1 91 10 +95 and 1 93 94 +96 eq 1 91 12 +97 and 1 95 96 +98 eq 1 91 14 +99 and 1 97 98 +100 eq 1 91 16 +101 and 1 99 100 +102 eq 1 91 18 +103 and 1 101 102 +104 eq 1 91 20 +105 and 1 103 104 +106 eq 1 91 22 +107 and 1 105 106 +108 and 1 67 107 +109 bad 108 +110 input 2 v_Slot_0 +111 next 2 6 110 +112 input 2 v_Slot_1 +113 next 2 8 112 +114 input 2 v_Slot_2 +115 next 2 10 114 +116 input 2 v_Slot_3 +117 next 2 12 116 +118 input 2 v_next +119 next 2 14 118 +120 input 2 v_my_place_P_0 +121 next 2 16 120 +122 input 2 v_my_place_P_1 +123 next 2 18 122 +124 input 2 v_my_place_P_2 +125 next 2 20 124 +126 input 2 v_my_place_P_3 +127 next 2 22 126 +128 input 1 a_NCS_P_0 +129 next 1 25 128 +130 input 1 a_p1_P_0 +131 next 1 27 130 +132 input 1 a_p2_P_0 +133 next 1 29 132 +134 input 1 a_p3_P_0 +135 next 1 31 134 +136 input 1 a_CS_P_0 +137 next 1 33 136 +138 input 1 a_NCS_P_1 +139 next 1 35 138 +140 input 1 a_p1_P_1 +141 next 1 37 140 +142 input 1 a_p2_P_1 +143 next 1 39 142 +144 input 1 a_p3_P_1 +145 next 1 41 144 +146 input 1 a_CS_P_1 +147 next 1 43 146 +148 input 1 a_NCS_P_2 +149 next 1 45 148 +150 input 1 a_p1_P_2 +151 next 1 47 150 +152 input 1 a_p2_P_2 +153 next 1 49 152 +154 input 1 a_p3_P_2 +155 next 1 51 154 +156 input 1 a_CS_P_2 +157 next 1 53 156 +158 input 1 a_NCS_P_3 +159 next 1 55 158 +160 input 1 a_p1_P_3 +161 next 1 57 160 +162 input 1 a_p2_P_3 +163 next 1 59 162 +164 input 1 a_p3_P_3 +165 next 1 61 164 +166 input 1 a_CS_P_3 +167 next 1 63 166 +168 const 1 1 +169 next 1 65 168 +170 input 1 f00 +171 or 1 128 -170 +172 input 1 f01 +173 or 1 130 170 +174 constd 2 3 +175 ite 2 170 118 120 +176 eq 1 174 175 +177 and 1 173 176 +178 or 1 -172 177 +179 and 1 171 178 +180 input 1 f02 +181 and 1 173 -172 +182 and 1 -176 181 +183 or 1 -180 182 +184 and 1 179 183 +185 input 1 f03 +186 or 1 132 172 +187 or 1 186 180 +188 constd 3 0 +189 concat 4 188 175 +190 constd 4 4 +191 srem 4 189 190 +192 slice 2 191 7 0 +193 ite 2 180 192 175 +194 eq 1 91 193 +195 eq 1 88 193 +196 constd 2 2 +197 eq 1 196 193 +198 ite 2 197 114 116 +199 ite 2 195 112 198 +200 ite 2 194 110 199 +201 eq 1 88 200 +202 and 1 187 201 +203 or 1 -185 202 +204 and 1 184 203 +205 or 1 134 185 +206 input 1 f04 +207 or 1 205 -206 +208 and 1 204 207 +209 or 1 136 206 +210 input 1 f05 +211 or 1 209 -210 +212 and 1 208 211 +213 input 1 f06 +214 or 1 138 -213 +215 and 1 212 214 +216 input 1 f07 +217 or 1 140 213 +218 constd 4 1 +219 concat 4 188 118 +220 add 4 218 219 +221 slice 2 220 7 0 +222 ite 2 170 221 118 +223 concat 4 188 222 +224 sub 4 223 190 +225 slice 2 224 7 0 +226 ite 2 172 225 222 +227 ite 2 213 226 122 +228 eq 1 174 227 +229 and 1 217 228 +230 or 1 -216 229 +231 and 1 215 230 +232 input 1 f08 +233 and 1 217 -216 +234 and 1 -228 233 +235 or 1 -232 234 +236 and 1 231 235 +237 input 1 f09 +238 or 1 142 216 +239 or 1 238 232 +240 concat 4 188 227 +241 srem 4 240 190 +242 slice 2 241 7 0 +243 ite 2 232 242 227 +244 eq 1 91 243 +245 constd 4 0 +246 concat 4 188 193 +247 add 4 218 246 +248 srem 4 247 190 +249 eq 1 245 248 +250 and 1 210 249 +251 and 1 194 206 +252 ite 2 251 91 110 +253 ite 2 250 88 252 +254 eq 1 88 243 +255 eq 1 218 248 +256 and 1 210 255 +257 and 1 195 206 +258 ite 2 257 91 112 +259 ite 2 256 88 258 +260 eq 1 196 243 +261 constd 4 2 +262 eq 1 261 248 +263 and 1 210 262 +264 and 1 197 206 +265 ite 2 264 91 114 +266 ite 2 263 88 265 +267 constd 4 3 +268 eq 1 267 248 +269 and 1 210 268 +270 eq 1 174 193 +271 and 1 270 206 +272 ite 2 271 91 116 +273 ite 2 269 88 272 +274 ite 2 260 266 273 +275 ite 2 254 259 274 +276 ite 2 244 253 275 +277 eq 1 88 276 +278 and 1 239 277 +279 or 1 -237 278 +280 and 1 236 279 +281 or 1 144 237 +282 input 1 f10 +283 or 1 281 -282 +284 and 1 280 283 +285 or 1 146 282 +286 input 1 f11 +287 or 1 285 -286 +288 and 1 284 287 +289 input 1 f12 +290 or 1 148 -289 +291 and 1 288 290 +292 input 1 f13 +293 or 1 150 289 +294 concat 4 188 226 +295 add 4 218 294 +296 slice 2 295 7 0 +297 ite 2 213 296 226 +298 concat 4 188 297 +299 sub 4 298 190 +300 slice 2 299 7 0 +301 ite 2 216 300 297 +302 ite 2 289 301 124 +303 eq 1 174 302 +304 and 1 293 303 +305 or 1 -292 304 +306 and 1 291 305 +307 input 1 f14 +308 and 1 293 -292 +309 and 1 -303 308 +310 or 1 -307 309 +311 and 1 306 310 +312 input 1 f15 +313 or 1 152 292 +314 or 1 313 307 +315 concat 4 188 302 +316 srem 4 315 190 +317 slice 2 316 7 0 +318 ite 2 307 317 302 +319 eq 1 91 318 +320 concat 4 188 243 +321 add 4 218 320 +322 srem 4 321 190 +323 eq 1 245 322 +324 and 1 286 323 +325 and 1 244 282 +326 ite 2 325 91 253 +327 ite 2 324 88 326 +328 eq 1 88 318 +329 eq 1 218 322 +330 and 1 286 329 +331 and 1 254 282 +332 ite 2 331 91 259 +333 ite 2 330 88 332 +334 eq 1 196 318 +335 eq 1 261 322 +336 and 1 286 335 +337 and 1 260 282 +338 ite 2 337 91 266 +339 ite 2 336 88 338 +340 eq 1 267 322 +341 and 1 286 340 +342 eq 1 174 243 +343 and 1 342 282 +344 ite 2 343 91 273 +345 ite 2 341 88 344 +346 ite 2 334 339 345 +347 ite 2 328 333 346 +348 ite 2 319 327 347 +349 eq 1 88 348 +350 and 1 314 349 +351 or 1 -312 350 +352 and 1 311 351 +353 or 1 154 312 +354 input 1 f16 +355 or 1 353 -354 +356 and 1 352 355 +357 or 1 156 354 +358 input 1 f17 +359 or 1 357 -358 +360 and 1 356 359 +361 input 1 f18 +362 or 1 158 -361 +363 and 1 360 362 +364 input 1 f19 +365 or 1 160 361 +366 concat 4 188 301 +367 add 4 218 366 +368 slice 2 367 7 0 +369 ite 2 289 368 301 +370 concat 4 188 369 +371 sub 4 370 190 +372 slice 2 371 7 0 +373 ite 2 292 372 369 +374 ite 2 361 373 126 +375 eq 1 174 374 +376 and 1 365 375 +377 or 1 -364 376 +378 and 1 363 377 +379 input 1 f20 +380 and 1 365 -364 +381 and 1 -375 380 +382 or 1 -379 381 +383 and 1 378 382 +384 input 1 f21 +385 or 1 162 364 +386 or 1 385 379 +387 concat 4 188 374 +388 srem 4 387 190 +389 slice 2 388 7 0 +390 ite 2 379 389 374 +391 eq 1 91 390 +392 concat 4 188 318 +393 add 4 218 392 +394 srem 4 393 190 +395 eq 1 245 394 +396 and 1 358 395 +397 and 1 319 354 +398 ite 2 397 91 327 +399 ite 2 396 88 398 +400 eq 1 88 390 +401 eq 1 218 394 +402 and 1 358 401 +403 and 1 328 354 +404 ite 2 403 91 333 +405 ite 2 402 88 404 +406 eq 1 196 390 +407 eq 1 261 394 +408 and 1 358 407 +409 and 1 334 354 +410 ite 2 409 91 339 +411 ite 2 408 88 410 +412 eq 1 267 394 +413 and 1 358 412 +414 eq 1 174 318 +415 and 1 414 354 +416 ite 2 415 91 345 +417 ite 2 413 88 416 +418 ite 2 406 411 417 +419 ite 2 400 405 418 +420 ite 2 391 399 419 +421 eq 1 88 420 +422 and 1 386 421 +423 or 1 -384 422 +424 and 1 383 423 +425 or 1 164 384 +426 input 1 f22 +427 or 1 425 -426 +428 and 1 424 427 +429 or 1 166 426 +430 input 1 f23 +431 or 1 429 -430 +432 and 1 428 431 +433 or 1 170 172 +434 or 1 180 433 +435 or 1 185 434 +436 or 1 206 435 +437 or 1 210 436 +438 or 1 213 437 +439 or 1 216 438 +440 or 1 232 439 +441 or 1 237 440 +442 or 1 282 441 +443 or 1 286 442 +444 or 1 289 443 +445 or 1 292 444 +446 or 1 307 445 +447 or 1 312 446 +448 or 1 354 447 +449 or 1 358 448 +450 or 1 361 449 +451 or 1 364 450 +452 or 1 379 451 +453 or 1 384 452 +454 or 1 426 453 +455 or 1 430 454 +456 and 1 432 455 +457 and 1 128 130 +458 or 1 128 130 +459 and 1 132 458 +460 or 1 457 459 +461 or 1 132 458 +462 and 1 134 461 +463 or 1 460 462 +464 or 1 134 461 +465 and 1 136 464 +466 or 1 463 465 +467 or 1 136 464 +468 and 1 -466 467 +469 and 1 138 140 +470 or 1 138 140 +471 and 1 142 470 +472 or 1 469 471 +473 or 1 142 470 +474 and 1 144 473 +475 or 1 472 474 +476 or 1 144 473 +477 and 1 146 476 +478 or 1 475 477 +479 and 1 468 -478 +480 or 1 146 476 +481 and 1 479 480 +482 and 1 148 150 +483 or 1 148 150 +484 and 1 152 483 +485 or 1 482 484 +486 or 1 152 483 +487 and 1 154 486 +488 or 1 485 487 +489 or 1 154 486 +490 and 1 156 489 +491 or 1 488 490 +492 and 1 481 -491 +493 or 1 156 489 +494 and 1 492 493 +495 and 1 158 160 +496 or 1 158 160 +497 and 1 162 496 +498 or 1 495 497 +499 or 1 162 496 +500 and 1 164 499 +501 or 1 498 500 +502 or 1 164 499 +503 and 1 166 502 +504 or 1 501 503 +505 and 1 494 -504 +506 or 1 166 502 +507 and 1 505 506 +508 and 1 456 507 +509 and 1 181 -180 +510 and 1 128 -170 +511 or 1 510 210 +512 and 1 509 511 +513 and 1 187 -185 +514 or 1 509 511 +515 and 1 513 514 +516 or 1 512 515 +517 and 1 205 -206 +518 or 1 513 514 +519 and 1 517 518 +520 or 1 516 519 +521 and 1 209 -210 +522 or 1 517 518 +523 and 1 521 522 +524 or 1 520 523 +525 or 1 521 522 +526 and 1 -524 525 +527 and 1 233 -232 +528 and 1 138 -213 +529 or 1 528 286 +530 and 1 527 529 +531 and 1 239 -237 +532 or 1 527 529 +533 and 1 531 532 +534 or 1 530 533 +535 and 1 281 -282 +536 or 1 531 532 +537 and 1 535 536 +538 or 1 534 537 +539 and 1 285 -286 +540 or 1 535 536 +541 and 1 539 540 +542 or 1 538 541 +543 and 1 526 -542 +544 or 1 539 540 +545 and 1 543 544 +546 and 1 308 -307 +547 and 1 148 -289 +548 or 1 547 358 +549 and 1 546 548 +550 and 1 314 -312 +551 or 1 546 548 +552 and 1 550 551 +553 or 1 549 552 +554 and 1 353 -354 +555 or 1 550 551 +556 and 1 554 555 +557 or 1 553 556 +558 and 1 357 -358 +559 or 1 554 555 +560 and 1 558 559 +561 or 1 557 560 +562 and 1 545 -561 +563 or 1 558 559 +564 and 1 562 563 +565 and 1 380 -379 +566 and 1 158 -361 +567 or 1 566 430 +568 and 1 565 567 +569 and 1 386 -384 +570 or 1 565 567 +571 and 1 569 570 +572 or 1 568 571 +573 and 1 425 -426 +574 or 1 569 570 +575 and 1 573 574 +576 or 1 572 575 +577 and 1 429 -430 +578 or 1 573 574 +579 and 1 577 578 +580 or 1 576 579 +581 and 1 564 -580 +582 or 1 577 578 +583 and 1 581 582 +584 and 1 508 583 +585 concat 4 188 390 +586 add 4 218 585 +587 srem 4 586 190 +588 eq 1 245 587 +589 and 1 430 588 +590 and 1 391 426 +591 ite 2 590 91 399 +592 ite 2 589 88 591 +593 eq 1 592 6 +594 and 1 584 593 +595 eq 1 218 587 +596 and 1 430 595 +597 and 1 400 426 +598 ite 2 597 91 405 +599 ite 2 596 88 598 +600 eq 1 599 8 +601 and 1 594 600 +602 eq 1 261 587 +603 and 1 430 602 +604 and 1 406 426 +605 ite 2 604 91 411 +606 ite 2 603 88 605 +607 eq 1 606 10 +608 and 1 601 607 +609 eq 1 267 587 +610 and 1 430 609 +611 eq 1 174 390 +612 and 1 611 426 +613 ite 2 612 91 417 +614 ite 2 610 88 613 +615 eq 1 614 12 +616 and 1 608 615 +617 concat 4 188 373 +618 add 4 218 617 +619 slice 2 618 7 0 +620 ite 2 361 619 373 +621 concat 4 188 620 +622 sub 4 621 190 +623 slice 2 622 7 0 +624 ite 2 364 623 620 +625 eq 1 624 14 +626 and 1 616 625 +627 eq 1 193 16 +628 and 1 626 627 +629 eq 1 243 18 +630 and 1 628 629 +631 eq 1 318 20 +632 and 1 630 631 +633 eq 1 390 22 +634 and 1 632 633 +635 eq 1 511 25 +636 and 1 634 635 +637 eq 1 509 27 +638 and 1 636 637 +639 eq 1 513 29 +640 and 1 638 639 +641 eq 1 517 31 +642 and 1 640 641 +643 eq 1 521 33 +644 and 1 642 643 +645 eq 1 529 35 +646 and 1 644 645 +647 eq 1 527 37 +648 and 1 646 647 +649 eq 1 531 39 +650 and 1 648 649 +651 eq 1 535 41 +652 and 1 650 651 +653 eq 1 539 43 +654 and 1 652 653 +655 eq 1 548 45 +656 and 1 654 655 +657 eq 1 546 47 +658 and 1 656 657 +659 eq 1 550 49 +660 and 1 658 659 +661 eq 1 554 51 +662 and 1 660 661 +663 eq 1 558 53 +664 and 1 662 663 +665 eq 1 567 55 +666 and 1 664 665 +667 eq 1 565 57 +668 and 1 666 667 +669 eq 1 569 59 +670 and 1 668 669 +671 eq 1 573 61 +672 and 1 670 671 +673 eq 1 577 63 +674 and 1 672 673 +675 and 1 674 67 +676 ite 4 136 218 245 +677 ite 4 146 218 245 +678 add 4 676 677 +679 ite 4 156 218 245 +680 add 4 678 679 +681 ite 4 166 218 245 +682 add 4 680 681 +683 ulte 1 682 218 +684 ite 1 65 675 -683 +685 next 1 67 684 +; End + + diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/driving_phils.1.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/driving_phils.1.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..4a24f2213c --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/driving_phils.1.prop1-back-serstep.btor2 @@ -0,0 +1,1033 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 8 +4 sort bitvec 16 +5 sort bitvec 24 +6 sort bitvec 32 +7 zero 3 +8 state 3 nextv_request_0 +9 init 3 8 7 +10 state 3 nextv_request_1 +11 init 3 10 7 +12 state 3 nextv_starvers_0 +13 init 3 12 7 +14 state 3 nextv_starvers_1 +15 init 3 14 7 +16 state 3 nextv_resources_0 +17 init 3 16 7 +18 state 3 nextv_resources_1 +19 init 3 18 7 +20 zero 4 +21 state 4 nextv_res0_0 +22 init 4 21 20 +23 state 4 nextv_res0_1 +24 init 4 23 20 +25 state 4 nextv_res1_0 +26 init 4 25 20 +27 state 4 nextv_res1_1 +28 init 4 27 20 +29 state 4 nextv_acquiring_0 +30 init 4 29 20 +31 state 4 nextv_acquiring_1 +32 init 4 31 20 +33 state 4 nextv_entryRound +34 init 4 33 20 +35 state 3 nextv_phase +36 init 3 35 7 +37 state 3 nextv_fire +38 init 3 37 7 +39 state 4 nextv_i_round_about +40 init 4 39 20 +41 state 4 nextv_i_phil_0 +42 init 4 41 20 +43 state 4 nextv_i_phil_1 +44 init 4 43 20 +45 zero 1 +46 state 1 nexta_reset +47 init 1 46 45 +48 state 1 nexta_begin0 +49 init 1 48 45 +50 state 1 nexta_begin1 +51 init 1 50 45 +52 state 1 nexta_begin2 +53 init 1 52 45 +54 state 1 nexta_begin3 +55 init 1 54 45 +56 state 1 nexta_action_round_about +57 init 1 56 45 +58 state 1 nexta_end0 +59 init 1 58 45 +60 state 1 nexta_end1 +61 init 1 60 45 +62 state 1 nexta_end2 +63 init 1 62 45 +64 state 1 nexta_action_phil_0 +65 init 1 64 45 +66 state 1 nexta_end_phil_0 +67 init 1 66 45 +68 state 1 nexta_mutex_phil_0 +69 init 1 68 45 +70 state 1 nexta_action_phil_1 +71 init 1 70 45 +72 state 1 nexta_end_phil_1 +73 init 1 72 45 +74 state 1 nexta_mutex_phil_1 +75 init 1 74 45 +76 state 1 dve_initialized +77 init 1 76 45 +78 state 1 dve_valid +79 init 1 78 45 +80 and 1 46 -48 +81 and 1 80 -50 +82 and 1 81 -52 +83 and 1 82 -54 +84 and 1 83 -56 +85 and 1 84 -58 +86 and 1 85 -60 +87 and 1 86 -62 +88 and 1 87 64 +89 and 1 88 -66 +90 and 1 89 -68 +91 and 1 90 70 +92 and 1 91 -72 +93 and 1 92 -74 +94 constd 3 0 +95 eq 1 94 8 +96 and 1 93 95 +97 eq 1 94 10 +98 and 1 96 97 +99 eq 1 94 12 +100 and 1 98 99 +101 eq 1 94 14 +102 and 1 100 101 +103 eq 1 94 16 +104 and 1 102 103 +105 eq 1 94 18 +106 and 1 104 105 +107 constd 4 0 +108 eq 1 107 21 +109 and 1 106 108 +110 eq 1 107 23 +111 and 1 109 110 +112 eq 1 107 25 +113 and 1 111 112 +114 eq 1 107 27 +115 and 1 113 114 +116 eq 1 107 29 +117 and 1 115 116 +118 eq 1 107 31 +119 and 1 117 118 +120 constd 4 1 +121 eq 1 120 33 +122 and 1 119 121 +123 eq 1 94 35 +124 and 1 122 123 +125 eq 1 94 37 +126 and 1 124 125 +127 eq 1 107 39 +128 and 1 126 127 +129 eq 1 107 41 +130 and 1 128 129 +131 eq 1 107 43 +132 and 1 130 131 +133 and 1 78 132 +134 bad 133 +135 input 3 v_request_0 +136 next 3 8 135 +137 input 3 v_request_1 +138 next 3 10 137 +139 input 3 v_starvers_0 +140 next 3 12 139 +141 input 3 v_starvers_1 +142 next 3 14 141 +143 input 3 v_resources_0 +144 next 3 16 143 +145 input 3 v_resources_1 +146 next 3 18 145 +147 input 4 v_res0_0 +148 next 4 21 147 +149 input 4 v_res0_1 +150 next 4 23 149 +151 input 4 v_res1_0 +152 next 4 25 151 +153 input 4 v_res1_1 +154 next 4 27 153 +155 input 4 v_acquiring_0 +156 next 4 29 155 +157 input 4 v_acquiring_1 +158 next 4 31 157 +159 input 4 v_entryRound +160 next 4 33 159 +161 input 3 v_phase +162 next 3 35 161 +163 input 3 v_fire +164 next 3 37 163 +165 input 4 v_i_round_about +166 next 4 39 165 +167 input 4 v_i_phil_0 +168 next 4 41 167 +169 input 4 v_i_phil_1 +170 next 4 43 169 +171 input 1 a_reset +172 next 1 46 171 +173 input 1 a_begin0 +174 next 1 48 173 +175 input 1 a_begin1 +176 next 1 50 175 +177 input 1 a_begin2 +178 next 1 52 177 +179 input 1 a_begin3 +180 next 1 54 179 +181 input 1 a_action_round_about +182 next 1 56 181 +183 input 1 a_end0 +184 next 1 58 183 +185 input 1 a_end1 +186 next 1 60 185 +187 input 1 a_end2 +188 next 1 62 187 +189 input 1 a_action_phil_0 +190 next 1 64 189 +191 input 1 a_end_phil_0 +192 next 1 66 191 +193 input 1 a_mutex_phil_0 +194 next 1 68 193 +195 input 1 a_action_phil_1 +196 next 1 70 195 +197 input 1 a_end_phil_1 +198 next 1 72 197 +199 input 1 a_mutex_phil_1 +200 next 1 74 199 +201 const 1 1 +202 next 1 76 201 +203 input 1 f00 +204 constd 6 2 +205 constd 4 0 +206 concat 6 165 205 +207 constd 6 16 +208 sra 6 206 207 +209 ulte 1 204 208 +210 and 1 171 -209 +211 or 1 -203 210 +212 input 1 f01 +213 constd 6 1 +214 add 6 213 208 +215 slice 4 214 15 0 +216 ite 4 203 215 165 +217 concat 6 216 205 +218 sra 6 217 207 +219 eq 1 204 218 +220 and 1 171 219 +221 or 1 -212 220 +222 and 1 211 221 +223 input 1 f02 +224 or 1 173 212 +225 ite 4 212 107 216 +226 concat 6 225 205 +227 sra 6 226 207 +228 ulte 1 204 227 +229 and 1 224 -228 +230 or 1 -223 229 +231 and 1 222 230 +232 input 1 f03 +233 add 6 213 227 +234 slice 4 233 15 0 +235 ite 4 223 234 225 +236 concat 6 235 205 +237 sra 6 236 207 +238 eq 1 204 237 +239 and 1 224 238 +240 or 1 -232 239 +241 and 1 231 240 +242 input 1 f04 +243 or 1 175 232 +244 ite 4 232 107 235 +245 concat 6 244 205 +246 sra 6 245 207 +247 ulte 1 204 246 +248 constd 6 4294967295 +249 constd 6 0 +250 eq 1 249 246 +251 eq 1 249 208 +252 and 1 203 251 +253 constd 4 65535 +254 ite 4 252 253 147 +255 eq 1 213 208 +256 and 1 203 255 +257 ite 4 256 253 149 +258 ite 4 250 254 257 +259 concat 6 258 205 +260 sra 6 259 207 +261 eq 1 248 260 +262 and 1 -247 -261 +263 and 1 243 262 +264 or 1 -242 263 +265 and 1 241 264 +266 input 1 f05 +267 add 6 213 246 +268 slice 4 267 15 0 +269 ite 4 242 268 244 +270 concat 6 269 205 +271 sra 6 270 207 +272 ulte 1 204 271 +273 eq 1 249 271 +274 ite 4 273 254 257 +275 concat 6 274 205 +276 sra 6 275 207 +277 eq 1 248 276 +278 and 1 -272 277 +279 and 1 243 278 +280 or 1 -266 279 +281 and 1 265 280 +282 input 1 f06 +283 add 6 213 271 +284 slice 4 283 15 0 +285 ite 4 266 284 269 +286 concat 6 285 205 +287 sra 6 286 207 +288 eq 1 204 287 +289 and 1 243 288 +290 or 1 -282 289 +291 and 1 281 290 +292 input 1 f07 +293 or 1 177 282 +294 ite 4 282 107 285 +295 concat 6 294 205 +296 sra 6 295 207 +297 ulte 1 204 296 +298 eq 1 249 296 +299 ite 4 252 253 151 +300 ite 4 256 253 153 +301 ite 4 298 299 300 +302 concat 6 301 205 +303 sra 6 302 207 +304 eq 1 248 303 +305 and 1 -297 -304 +306 and 1 293 305 +307 or 1 -292 306 +308 and 1 291 307 +309 input 1 f08 +310 add 6 213 296 +311 slice 4 310 15 0 +312 ite 4 292 311 294 +313 concat 6 312 205 +314 sra 6 313 207 +315 ulte 1 204 314 +316 eq 1 249 314 +317 ite 4 316 299 300 +318 concat 6 317 205 +319 sra 6 318 207 +320 eq 1 248 319 +321 and 1 -315 320 +322 and 1 293 321 +323 or 1 -309 322 +324 and 1 308 323 +325 input 1 f09 +326 add 6 213 314 +327 slice 4 326 15 0 +328 ite 4 309 327 312 +329 concat 6 328 205 +330 sra 6 329 207 +331 eq 1 204 330 +332 and 1 293 331 +333 or 1 -325 332 +334 and 1 324 333 +335 input 1 f10 +336 or 1 181 325 +337 constd 3 2 +338 ite 3 325 94 163 +339 eq 1 337 338 +340 and 1 336 339 +341 or 1 -335 340 +342 and 1 334 341 +343 input 1 f11 +344 or 1 183 335 +345 ite 4 325 107 328 +346 concat 6 345 205 +347 sra 6 346 207 +348 ulte 1 213 347 +349 mul 6 204 347 +350 eq 1 249 349 +351 mul 6 204 303 +352 eq 1 249 351 +353 add 6 213 351 +354 eq 1 249 353 +355 or 1 352 354 +356 and 1 292 355 +357 slice 3 294 7 0 +358 slice 3 159 7 0 +359 ite 3 354 357 358 +360 mul 6 204 260 +361 eq 1 249 360 +362 add 6 213 360 +363 eq 1 249 362 +364 or 1 361 363 +365 and 1 242 364 +366 slice 3 244 7 0 +367 ite 3 363 366 358 +368 eq 1 249 227 +369 and 1 223 368 +370 ite 3 369 94 143 +371 ite 3 365 367 370 +372 ite 3 356 359 371 +373 eq 1 213 351 +374 eq 1 213 353 +375 or 1 373 374 +376 and 1 292 375 +377 ite 3 374 357 358 +378 eq 1 213 360 +379 eq 1 213 362 +380 or 1 378 379 +381 and 1 242 380 +382 ite 3 379 366 358 +383 eq 1 213 227 +384 and 1 223 383 +385 ite 3 384 94 145 +386 ite 3 381 382 385 +387 ite 3 376 377 386 +388 ite 3 350 372 387 +389 eq 1 94 388 +390 and 1 -348 -389 +391 and 1 344 390 +392 or 1 -343 391 +393 and 1 342 392 +394 input 1 f12 +395 add 6 213 347 +396 slice 4 395 15 0 +397 ite 4 343 396 345 +398 concat 6 397 205 +399 sra 6 398 207 +400 ulte 1 213 399 +401 mul 6 204 399 +402 eq 1 249 401 +403 ite 3 402 372 387 +404 eq 1 94 403 +405 and 1 -400 404 +406 and 1 344 405 +407 or 1 -394 406 +408 and 1 393 407 +409 input 1 f13 +410 add 6 213 399 +411 slice 4 410 15 0 +412 ite 4 394 411 397 +413 concat 6 412 205 +414 sra 6 413 207 +415 eq 1 213 414 +416 and 1 344 415 +417 or 1 -409 416 +418 and 1 408 417 +419 input 1 f14 +420 or 1 185 409 +421 ite 4 409 107 412 +422 concat 6 421 205 +423 sra 6 422 207 +424 ulte 1 204 423 +425 and 1 420 -424 +426 or 1 -419 425 +427 and 1 418 426 +428 input 1 f15 +429 add 6 213 423 +430 slice 4 429 15 0 +431 ite 4 419 430 421 +432 concat 6 431 205 +433 sra 6 432 207 +434 eq 1 204 433 +435 ite 3 335 94 338 +436 eq 1 337 435 +437 and 1 434 436 +438 and 1 420 437 +439 or 1 -428 438 +440 and 1 427 439 +441 input 1 f16 +442 constd 3 1 +443 ite 3 212 94 161 +444 ite 3 325 442 443 +445 ite 3 335 337 444 +446 ite 3 428 94 445 +447 eq 1 442 446 +448 concat 6 254 205 +449 sra 6 448 207 +450 eq 1 248 449 +451 and 1 447 -450 +452 and 1 189 451 +453 or 1 -441 452 +454 and 1 440 453 +455 input 1 f17 +456 and 1 189 -441 +457 ite 4 441 253 299 +458 concat 6 457 205 +459 sra 6 458 207 +460 eq 1 248 459 +461 and 1 447 460 +462 ite 4 252 253 155 +463 concat 6 462 205 +464 sra 6 463 207 +465 eq 1 248 464 +466 and 1 461 465 +467 and 1 456 466 +468 or 1 -455 467 +469 and 1 454 468 +470 input 1 f18 +471 and 1 456 -455 +472 and 1 447 471 +473 or 1 -470 472 +474 and 1 469 473 +475 input 1 f19 +476 or 1 191 441 +477 or 1 476 455 +478 or 1 477 470 +479 eq 1 337 446 +480 ite 4 455 107 462 +481 concat 6 480 205 +482 sra 6 481 207 +483 eq 1 248 482 +484 and 1 479 483 +485 and 1 478 484 +486 or 1 -475 485 +487 and 1 474 486 +488 input 1 f20 +489 and 1 478 -475 +490 and 1 479 -483 +491 constd 5 0 +492 concat 6 491 435 +493 add 6 213 492 +494 slice 3 493 7 0 +495 ite 3 441 494 435 +496 concat 6 491 495 +497 add 6 213 496 +498 slice 3 497 7 0 +499 ite 3 455 498 495 +500 concat 6 491 499 +501 add 6 213 500 +502 slice 3 501 7 0 +503 ite 3 470 502 499 +504 concat 6 491 503 +505 add 6 213 504 +506 slice 3 505 7 0 +507 ite 3 475 506 503 +508 eq 1 94 507 +509 and 1 490 508 +510 and 1 489 509 +511 or 1 -488 510 +512 and 1 487 511 +513 input 1 f21 +514 or 1 193 488 +515 concat 6 167 205 +516 sra 6 515 207 +517 ulte 1 204 516 +518 eq 1 249 516 +519 ite 4 441 299 254 +520 ite 4 518 519 257 +521 concat 6 520 205 +522 sra 6 521 207 +523 eq 1 482 522 +524 and 1 -517 -523 +525 ite 4 518 457 300 +526 concat 6 525 205 +527 sra 6 526 207 +528 eq 1 482 527 +529 and 1 524 -528 +530 and 1 514 529 +531 or 1 -513 530 +532 and 1 512 531 +533 input 1 f22 +534 add 6 213 516 +535 slice 4 534 15 0 +536 ite 4 513 535 167 +537 concat 6 536 205 +538 sra 6 537 207 +539 ulte 1 204 538 +540 eq 1 249 538 +541 ite 4 540 519 257 +542 concat 6 541 205 +543 sra 6 542 207 +544 eq 1 482 543 +545 ite 4 540 457 300 +546 concat 6 545 205 +547 sra 6 546 207 +548 eq 1 482 547 +549 or 1 544 548 +550 and 1 -539 549 +551 and 1 514 550 +552 or 1 -533 551 +553 and 1 532 552 +554 input 1 f23 +555 and 1 514 -533 +556 add 6 213 538 +557 slice 4 556 15 0 +558 ite 4 533 557 536 +559 concat 6 558 205 +560 sra 6 559 207 +561 eq 1 204 560 +562 concat 6 519 205 +563 sra 6 562 207 +564 eq 1 248 563 +565 and 1 561 564 +566 and 1 555 565 +567 or 1 -554 566 +568 and 1 553 567 +569 input 1 f24 +570 and 1 555 -554 +571 ite 4 554 107 558 +572 concat 6 571 205 +573 sra 6 572 207 +574 eq 1 204 573 +575 ite 4 554 480 519 +576 concat 6 575 205 +577 sra 6 576 207 +578 eq 1 248 577 +579 and 1 574 -578 +580 and 1 570 579 +581 or 1 -569 580 +582 and 1 568 581 +583 input 1 f25 +584 and 1 489 -488 +585 ite 4 554 253 480 +586 ite 4 569 253 585 +587 concat 6 586 205 +588 sra 6 587 207 +589 eq 1 248 588 +590 and 1 479 -589 +591 and 1 584 590 +592 or 1 -583 591 +593 and 1 582 592 +594 input 1 f26 +595 concat 6 257 205 +596 sra 6 595 207 +597 eq 1 248 596 +598 and 1 447 -597 +599 and 1 195 598 +600 or 1 -594 599 +601 and 1 593 600 +602 input 1 f27 +603 and 1 195 -594 +604 ite 4 594 253 300 +605 concat 6 604 205 +606 sra 6 605 207 +607 eq 1 248 606 +608 and 1 447 607 +609 ite 4 256 253 157 +610 concat 6 609 205 +611 sra 6 610 207 +612 eq 1 248 611 +613 and 1 608 612 +614 and 1 603 613 +615 or 1 -602 614 +616 and 1 601 615 +617 input 1 f28 +618 and 1 603 -602 +619 and 1 447 618 +620 or 1 -617 619 +621 and 1 616 620 +622 input 1 f29 +623 or 1 197 594 +624 or 1 623 602 +625 or 1 624 617 +626 ite 4 602 107 609 +627 concat 6 626 205 +628 sra 6 627 207 +629 eq 1 248 628 +630 and 1 479 629 +631 and 1 625 630 +632 or 1 -622 631 +633 and 1 621 632 +634 input 1 f30 +635 and 1 625 -622 +636 and 1 479 -629 +637 concat 6 491 507 +638 add 6 213 637 +639 slice 3 638 7 0 +640 ite 3 533 639 507 +641 concat 6 491 640 +642 add 6 213 641 +643 slice 3 642 7 0 +644 ite 3 554 643 640 +645 concat 6 491 644 +646 add 6 213 645 +647 slice 3 646 7 0 +648 ite 3 569 647 644 +649 concat 6 491 648 +650 add 6 213 649 +651 slice 3 650 7 0 +652 ite 3 583 651 648 +653 concat 6 491 652 +654 add 6 213 653 +655 slice 3 654 7 0 +656 ite 3 594 655 652 +657 concat 6 491 656 +658 add 6 213 657 +659 slice 3 658 7 0 +660 ite 3 602 659 656 +661 concat 6 491 660 +662 add 6 213 661 +663 slice 3 662 7 0 +664 ite 3 617 663 660 +665 concat 6 491 664 +666 add 6 213 665 +667 slice 3 666 7 0 +668 ite 3 622 667 664 +669 eq 1 442 668 +670 and 1 636 669 +671 and 1 635 670 +672 or 1 -634 671 +673 and 1 633 672 +674 input 1 f31 +675 or 1 199 634 +676 concat 6 169 205 +677 sra 6 676 207 +678 ulte 1 204 677 +679 eq 1 249 677 +680 ite 4 594 300 257 +681 ite 4 679 575 680 +682 concat 6 681 205 +683 sra 6 682 207 +684 eq 1 628 683 +685 and 1 -678 -684 +686 ite 4 569 585 457 +687 ite 4 679 686 604 +688 concat 6 687 205 +689 sra 6 688 207 +690 eq 1 628 689 +691 and 1 685 -690 +692 and 1 675 691 +693 or 1 -674 692 +694 and 1 673 693 +695 input 1 f32 +696 add 6 213 677 +697 slice 4 696 15 0 +698 ite 4 674 697 169 +699 concat 6 698 205 +700 sra 6 699 207 +701 ulte 1 204 700 +702 eq 1 249 700 +703 ite 4 702 575 680 +704 concat 6 703 205 +705 sra 6 704 207 +706 eq 1 628 705 +707 ite 4 702 686 604 +708 concat 6 707 205 +709 sra 6 708 207 +710 eq 1 628 709 +711 or 1 706 710 +712 and 1 -701 711 +713 and 1 675 712 +714 or 1 -695 713 +715 and 1 694 714 +716 input 1 f33 +717 and 1 675 -695 +718 add 6 213 700 +719 slice 4 718 15 0 +720 ite 4 695 719 698 +721 concat 6 720 205 +722 sra 6 721 207 +723 eq 1 204 722 +724 concat 6 680 205 +725 sra 6 724 207 +726 eq 1 248 725 +727 and 1 723 726 +728 and 1 717 727 +729 or 1 -716 728 +730 and 1 715 729 +731 input 1 f34 +732 and 1 717 -716 +733 ite 4 716 107 720 +734 concat 6 733 205 +735 sra 6 734 207 +736 eq 1 204 735 +737 ite 4 716 626 680 +738 concat 6 737 205 +739 sra 6 738 207 +740 eq 1 248 739 +741 and 1 736 -740 +742 and 1 732 741 +743 or 1 -731 742 +744 and 1 730 743 +745 input 1 f35 +746 and 1 635 -634 +747 ite 4 716 253 626 +748 ite 4 731 253 747 +749 concat 6 748 205 +750 sra 6 749 207 +751 eq 1 248 750 +752 and 1 479 -751 +753 and 1 746 752 +754 or 1 -745 753 +755 and 1 744 754 +756 or 1 203 212 +757 or 1 223 756 +758 or 1 232 757 +759 or 1 242 758 +760 or 1 266 759 +761 or 1 282 760 +762 or 1 292 761 +763 or 1 309 762 +764 or 1 325 763 +765 or 1 335 764 +766 or 1 343 765 +767 or 1 394 766 +768 or 1 409 767 +769 or 1 419 768 +770 or 1 428 769 +771 or 1 441 770 +772 or 1 455 771 +773 or 1 470 772 +774 or 1 475 773 +775 or 1 488 774 +776 or 1 513 775 +777 or 1 533 776 +778 or 1 554 777 +779 or 1 569 778 +780 or 1 583 779 +781 or 1 594 780 +782 or 1 602 781 +783 or 1 617 782 +784 or 1 622 783 +785 or 1 634 784 +786 or 1 674 785 +787 or 1 695 786 +788 or 1 716 787 +789 or 1 731 788 +790 or 1 745 789 +791 and 1 755 790 +792 and 1 171 173 +793 or 1 171 173 +794 and 1 175 793 +795 or 1 792 794 +796 or 1 175 793 +797 and 1 177 796 +798 or 1 795 797 +799 or 1 177 796 +800 and 1 179 799 +801 or 1 798 800 +802 or 1 179 799 +803 and 1 181 802 +804 or 1 801 803 +805 or 1 181 802 +806 and 1 183 805 +807 or 1 804 806 +808 or 1 183 805 +809 and 1 185 808 +810 or 1 807 809 +811 or 1 185 808 +812 and 1 187 811 +813 or 1 810 812 +814 or 1 187 811 +815 and 1 -813 814 +816 and 1 189 191 +817 or 1 189 191 +818 and 1 193 817 +819 or 1 816 818 +820 and 1 815 -819 +821 or 1 193 817 +822 and 1 820 821 +823 and 1 195 197 +824 or 1 195 197 +825 and 1 199 824 +826 or 1 823 825 +827 and 1 822 -826 +828 or 1 199 824 +829 and 1 827 828 +830 and 1 791 829 +831 and 1 171 -212 +832 and 1 224 -232 +833 or 1 832 428 +834 and 1 831 833 +835 and 1 243 -282 +836 or 1 831 833 +837 and 1 835 836 +838 or 1 834 837 +839 and 1 293 -325 +840 or 1 835 836 +841 and 1 839 840 +842 or 1 838 841 +843 or 1 839 840 +844 and 1 179 843 +845 or 1 842 844 +846 and 1 336 -335 +847 or 1 179 843 +848 and 1 846 847 +849 or 1 845 848 +850 and 1 344 -409 +851 or 1 846 847 +852 and 1 850 851 +853 or 1 849 852 +854 and 1 420 -428 +855 or 1 850 851 +856 and 1 854 855 +857 or 1 853 856 +858 or 1 854 855 +859 and 1 187 858 +860 or 1 857 859 +861 or 1 187 858 +862 and 1 -860 861 +863 and 1 471 -470 +864 or 1 863 475 +865 or 1 864 533 +866 or 1 865 554 +867 or 1 866 569 +868 or 1 867 583 +869 and 1 584 -583 +870 and 1 868 869 +871 and 1 570 -569 +872 or 1 868 869 +873 and 1 871 872 +874 or 1 870 873 +875 and 1 862 -874 +876 or 1 871 872 +877 and 1 875 876 +878 and 1 618 -617 +879 or 1 878 622 +880 or 1 879 695 +881 or 1 880 716 +882 or 1 881 731 +883 or 1 882 745 +884 and 1 746 -745 +885 and 1 883 884 +886 and 1 732 -731 +887 or 1 883 884 +888 and 1 886 887 +889 or 1 885 888 +890 and 1 877 -889 +891 or 1 886 887 +892 and 1 890 891 +893 and 1 830 892 +894 add 6 213 349 +895 eq 1 249 894 +896 ite 3 895 372 387 +897 concat 6 491 896 +898 add 6 347 897 +899 eq 1 249 898 +900 and 1 343 899 +901 ite 3 900 94 135 +902 ite 3 455 358 901 +903 eq 1 902 8 +904 and 1 893 903 +905 eq 1 213 898 +906 and 1 343 905 +907 ite 3 906 94 137 +908 ite 3 602 358 907 +909 eq 1 908 10 +910 and 1 904 909 +911 ite 3 900 94 139 +912 eq 1 911 12 +913 and 1 910 912 +914 ite 3 906 94 141 +915 eq 1 914 14 +916 and 1 913 915 +917 eq 1 249 596 +918 add 6 213 596 +919 eq 1 249 918 +920 or 1 917 919 +921 and 1 594 920 +922 eq 1 249 449 +923 add 6 213 449 +924 eq 1 249 923 +925 or 1 922 924 +926 and 1 441 925 +927 ite 3 926 94 372 +928 ite 3 921 94 927 +929 eq 1 928 16 +930 and 1 916 929 +931 eq 1 213 596 +932 eq 1 213 918 +933 or 1 931 932 +934 and 1 594 933 +935 eq 1 213 449 +936 eq 1 213 923 +937 or 1 935 936 +938 and 1 441 937 +939 ite 3 938 94 387 +940 ite 3 934 94 939 +941 eq 1 940 18 +942 and 1 930 941 +943 eq 1 575 21 +944 and 1 942 943 +945 eq 1 737 23 +946 and 1 944 945 +947 eq 1 686 25 +948 and 1 946 947 +949 ite 4 731 747 604 +950 eq 1 949 27 +951 and 1 948 950 +952 eq 1 586 29 +953 and 1 951 952 +954 eq 1 748 31 +955 and 1 953 954 +956 eq 1 159 33 +957 and 1 955 956 +958 eq 1 446 35 +959 and 1 957 958 +960 concat 6 491 668 +961 add 6 213 960 +962 slice 3 961 7 0 +963 ite 3 695 962 668 +964 concat 6 491 963 +965 add 6 213 964 +966 slice 3 965 7 0 +967 ite 3 716 966 963 +968 concat 6 491 967 +969 add 6 213 968 +970 slice 3 969 7 0 +971 ite 3 731 970 967 +972 concat 6 491 971 +973 add 6 213 972 +974 slice 3 973 7 0 +975 ite 3 745 974 971 +976 eq 1 975 37 +977 and 1 959 976 +978 ite 4 428 107 431 +979 eq 1 978 39 +980 and 1 977 979 +981 ite 4 569 107 571 +982 eq 1 981 41 +983 and 1 980 982 +984 ite 4 731 107 733 +985 eq 1 984 43 +986 and 1 983 985 +987 eq 1 831 46 +988 and 1 986 987 +989 eq 1 833 48 +990 and 1 988 989 +991 eq 1 835 50 +992 and 1 990 991 +993 eq 1 839 52 +994 and 1 992 993 +995 eq 1 179 54 +996 and 1 994 995 +997 eq 1 846 56 +998 and 1 996 997 +999 eq 1 850 58 +1000 and 1 998 999 +1001 eq 1 854 60 +1002 and 1 1000 1001 +1003 eq 1 187 62 +1004 and 1 1002 1003 +1005 eq 1 868 64 +1006 and 1 1004 1005 +1007 eq 1 869 66 +1008 and 1 1006 1007 +1009 eq 1 871 68 +1010 and 1 1008 1009 +1011 eq 1 883 70 +1012 and 1 1010 1011 +1013 eq 1 884 72 +1014 and 1 1012 1013 +1015 eq 1 886 74 +1016 and 1 1014 1015 +1017 and 1 1016 78 +1018 concat 6 147 205 +1019 sra 6 1018 207 +1020 concat 6 149 205 +1021 sra 6 1020 207 +1022 eq 1 1019 1021 +1023 concat 6 153 205 +1024 sra 6 1023 207 +1025 eq 1 1019 1024 +1026 or 1 1022 1025 +1027 ite 1 76 1017 1026 +1028 next 1 78 1027 +; End + + diff --git a/subprojects/xcfa/c2xcfa/src/test/resources/count2.c b/subprojects/xcfa/c2xcfa/src/test/resources/count2.c new file mode 100644 index 0000000000..01a7cafca9 --- /dev/null +++ b/subprojects/xcfa/c2xcfa/src/test/resources/count2.c @@ -0,0 +1,50 @@ +// This C program is converted from Btor2 by Btor2C version sha1:36c1ad5 +// with arguments: { architecture=64, modulo_mode=LAZY, use_memmove=false, unroll_inner_loops=false, shortest_type=true, diff_type=true, decimal_constant=true, zero_init=false, sra_extend_sign=true } +// Comments from the original Btor2 file: +// ; source: https://github.com/Boolector/btor2tools/tree/b8456dda4780789e882f5791eb486f295ade4da4/examples/btorsim +extern unsigned char __VERIFIER_nondet_uchar(); +extern unsigned short __VERIFIER_nondet_ushort(); +extern unsigned int __VERIFIER_nondet_uint(); +extern unsigned long __VERIFIER_nondet_ulong(); +extern void abort(void); +extern void __assert_fail(const char *, const char *, unsigned int, const char *); +void reach_error() { __assert_fail("0", "count2.c", 0, "reach_error"); } +void __VERIFIER_assert(int cond) { if (!(cond)) { ERROR: { reach_error(); abort(); } } } +void assume_abort_if_not(int cond) { if (!cond) { abort(); } } +int main() { + // Defining sorts ... + typedef unsigned char SORT_1; // BV with 3 bits + const SORT_1 mask_SORT_1 = (SORT_1)-1 >> (sizeof(SORT_1) * 8 - 3); + const SORT_1 msb_SORT_1 = (SORT_1)1 << (3 - 1); + typedef unsigned char SORT_9; // BV with 1 bits + const SORT_9 mask_SORT_9 = (SORT_9)-1 >> (sizeof(SORT_9) * 8 - 1); + const SORT_9 msb_SORT_9 = (SORT_9)1 << (1 - 1); + // Initializing constants ... + const SORT_1 var_2 = 0; + const SORT_1 var_5 = 1; + const SORT_1 var_8 = mask_SORT_1; + // Collecting state declarations ... + SORT_1 state_3 = __VERIFIER_nondet_uchar() & mask_SORT_1; + // Initializing states ... + SORT_1 init_4_arg_1 = var_2; + state_3 = init_4_arg_1; + for (;;) { + // Getting external input values ... + // Assuming invariants ... + // Asserting properties ... + SORT_1 var_10_arg_0 = state_3; + SORT_1 var_10_arg_1 = var_8; + SORT_9 var_10 = var_10_arg_0 == var_10_arg_1; + SORT_9 bad_11_arg_0 = var_10; + __VERIFIER_assert(!(bad_11_arg_0)); + // Computing next states ... + SORT_1 var_6_arg_0 = state_3; + SORT_1 var_6_arg_1 = var_5; + SORT_1 var_6 = var_6_arg_0 + var_6_arg_1; + var_6 = var_6 & mask_SORT_1; + SORT_1 next_7_arg_1 = var_6; + // Assigning next states ... + state_3 = next_7_arg_1; + } + return 0; +} diff --git a/subprojects/xcfa/c2xcfa/src/test/resources/driving_phils.1.prop1-back-serstep.c b/subprojects/xcfa/c2xcfa/src/test/resources/driving_phils.1.prop1-back-serstep.c new file mode 100644 index 0000000000..915fa4df74 --- /dev/null +++ b/subprojects/xcfa/c2xcfa/src/test/resources/driving_phils.1.prop1-back-serstep.c @@ -0,0 +1,3175 @@ +// This C program is converted from Btor2 by Btor2C version sha1:7cf65f0 +// with arguments: { architecture=64, modulo_mode=LAZY, use_memmove=false, use_int128=false, unroll_inner_loops=5000, shortest_type=true, diff_type=true, decimal_constant=true, zero_init=false, sra_extend_sign=true, alap_scheduling=true, ite_conditional_write=true } +// Comments from the original Btor2 file: +// ; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +// ; Model in BTOR format generated by stepout.py 0.41 +extern unsigned char __VERIFIER_nondet_uchar(); +extern unsigned short __VERIFIER_nondet_ushort(); +extern unsigned int __VERIFIER_nondet_uint(); +extern unsigned long __VERIFIER_nondet_ulong(); +extern void abort(void); +extern void __assert_fail(const char *, const char *, unsigned int, const char *); +void reach_error() { __assert_fail("0", "driving_phils.1.prop1-back-serstep.c", 0, "reach_error"); } +void __VERIFIER_assert(int cond) { if (!(cond)) { ERROR: { reach_error(); abort(); } } } +void assume_abort_if_not(int cond) { if (!cond) { abort(); } } +int main() { + // Defining sorts ... + typedef unsigned char SORT_1; // BV with 1 bits + const SORT_1 mask_SORT_1 = (SORT_1)-1 >> (sizeof(SORT_1) * 8 - 1); + const SORT_1 msb_SORT_1 = (SORT_1)1 << (1 - 1); + typedef unsigned char SORT_2; // BV with 5 bits + const SORT_2 mask_SORT_2 = (SORT_2)-1 >> (sizeof(SORT_2) * 8 - 5); + const SORT_2 msb_SORT_2 = (SORT_2)1 << (5 - 1); + typedef unsigned char SORT_3; // BV with 8 bits + const SORT_3 mask_SORT_3 = (SORT_3)-1 >> (sizeof(SORT_3) * 8 - 8); + const SORT_3 msb_SORT_3 = (SORT_3)1 << (8 - 1); + typedef unsigned short SORT_4; // BV with 16 bits + const SORT_4 mask_SORT_4 = (SORT_4)-1 >> (sizeof(SORT_4) * 8 - 16); + const SORT_4 msb_SORT_4 = (SORT_4)1 << (16 - 1); + typedef unsigned int SORT_5; // BV with 24 bits + const SORT_5 mask_SORT_5 = (SORT_5)-1 >> (sizeof(SORT_5) * 8 - 24); + const SORT_5 msb_SORT_5 = (SORT_5)1 << (24 - 1); + typedef unsigned int SORT_6; // BV with 32 bits + const SORT_6 mask_SORT_6 = (SORT_6)-1 >> (sizeof(SORT_6) * 8 - 32); + const SORT_6 msb_SORT_6 = (SORT_6)1 << (32 - 1); + // Initializing constants ... + const SORT_3 var_7 = 0; + const SORT_4 var_20 = 0; + const SORT_1 var_45 = 0; + const SORT_3 var_94 = 0U; + const SORT_4 var_107 = 0U; + const SORT_4 var_120 = 1U; + const SORT_1 var_201 = 1U; + const SORT_6 var_204 = 2U; + const SORT_4 var_205 = 0U; + const SORT_6 var_207 = 16U; + const SORT_6 var_213 = 1U; + const SORT_6 var_248 = 4294967295U; + const SORT_6 var_249 = 0U; + const SORT_4 var_253 = 65535U; + const SORT_3 var_337 = 2U; + const SORT_3 var_442 = 1U; + const SORT_5 var_491 = 0U; + // Collecting state declarations ... + SORT_3 state_8 = __VERIFIER_nondet_uchar() & mask_SORT_3; + SORT_3 state_10 = __VERIFIER_nondet_uchar() & mask_SORT_3; + SORT_3 state_12 = __VERIFIER_nondet_uchar() & mask_SORT_3; + SORT_3 state_14 = __VERIFIER_nondet_uchar() & mask_SORT_3; + SORT_3 state_16 = __VERIFIER_nondet_uchar() & mask_SORT_3; + SORT_3 state_18 = __VERIFIER_nondet_uchar() & mask_SORT_3; + SORT_4 state_21 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_4 state_23 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_4 state_25 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_4 state_27 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_4 state_29 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_4 state_31 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_4 state_33 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_3 state_35 = __VERIFIER_nondet_uchar() & mask_SORT_3; + SORT_3 state_37 = __VERIFIER_nondet_uchar() & mask_SORT_3; + SORT_4 state_39 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_4 state_41 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_4 state_43 = __VERIFIER_nondet_ushort() & mask_SORT_4; + SORT_1 state_46 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_48 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_50 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_52 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_54 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_56 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_58 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_60 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_62 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_64 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_66 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_68 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_70 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_72 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_74 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_76 = __VERIFIER_nondet_uchar() & mask_SORT_1; + SORT_1 state_78 = __VERIFIER_nondet_uchar() & mask_SORT_1; + // Initializing states ... + SORT_3 state_8_init_arg = var_7; + state_8 = state_8_init_arg; + SORT_3 state_10_init_arg = var_7; + state_10 = state_10_init_arg; + SORT_3 state_12_init_arg = var_7; + state_12 = state_12_init_arg; + SORT_3 state_14_init_arg = var_7; + state_14 = state_14_init_arg; + SORT_3 state_16_init_arg = var_7; + state_16 = state_16_init_arg; + SORT_3 state_18_init_arg = var_7; + state_18 = state_18_init_arg; + SORT_4 state_21_init_arg = var_20; + state_21 = state_21_init_arg; + SORT_4 state_23_init_arg = var_20; + state_23 = state_23_init_arg; + SORT_4 state_25_init_arg = var_20; + state_25 = state_25_init_arg; + SORT_4 state_27_init_arg = var_20; + state_27 = state_27_init_arg; + SORT_4 state_29_init_arg = var_20; + state_29 = state_29_init_arg; + SORT_4 state_31_init_arg = var_20; + state_31 = state_31_init_arg; + SORT_4 state_33_init_arg = var_20; + state_33 = state_33_init_arg; + SORT_3 state_35_init_arg = var_7; + state_35 = state_35_init_arg; + SORT_3 state_37_init_arg = var_7; + state_37 = state_37_init_arg; + SORT_4 state_39_init_arg = var_20; + state_39 = state_39_init_arg; + SORT_4 state_41_init_arg = var_20; + state_41 = state_41_init_arg; + SORT_4 state_43_init_arg = var_20; + state_43 = state_43_init_arg; + SORT_1 state_46_init_arg = var_45; + state_46 = state_46_init_arg; + state_46 = state_46 & mask_SORT_1; + SORT_1 state_48_init_arg = var_45; + state_48 = state_48_init_arg; + state_48 = state_48 & mask_SORT_1; + SORT_1 state_50_init_arg = var_45; + state_50 = state_50_init_arg; + state_50 = state_50 & mask_SORT_1; + SORT_1 state_52_init_arg = var_45; + state_52 = state_52_init_arg; + state_52 = state_52 & mask_SORT_1; + SORT_1 state_54_init_arg = var_45; + state_54 = state_54_init_arg; + state_54 = state_54 & mask_SORT_1; + SORT_1 state_56_init_arg = var_45; + state_56 = state_56_init_arg; + state_56 = state_56 & mask_SORT_1; + SORT_1 state_58_init_arg = var_45; + state_58 = state_58_init_arg; + state_58 = state_58 & mask_SORT_1; + SORT_1 state_60_init_arg = var_45; + state_60 = state_60_init_arg; + state_60 = state_60 & mask_SORT_1; + SORT_1 state_62_init_arg = var_45; + state_62 = state_62_init_arg; + state_62 = state_62 & mask_SORT_1; + SORT_1 state_64_init_arg = var_45; + state_64 = state_64_init_arg; + state_64 = state_64 & mask_SORT_1; + SORT_1 state_66_init_arg = var_45; + state_66 = state_66_init_arg; + state_66 = state_66 & mask_SORT_1; + SORT_1 state_68_init_arg = var_45; + state_68 = state_68_init_arg; + state_68 = state_68 & mask_SORT_1; + SORT_1 state_70_init_arg = var_45; + state_70 = state_70_init_arg; + state_70 = state_70 & mask_SORT_1; + SORT_1 state_72_init_arg = var_45; + state_72 = state_72_init_arg; + state_72 = state_72 & mask_SORT_1; + SORT_1 state_74_init_arg = var_45; + state_74 = state_74_init_arg; + state_74 = state_74 & mask_SORT_1; + SORT_1 state_76_init_arg = var_45; + state_76 = state_76_init_arg; + state_76 = state_76 & mask_SORT_1; + SORT_1 state_78_init_arg = var_45; + state_78 = state_78_init_arg; + state_78 = state_78 & mask_SORT_1; + for (;;) { + // Getting external input values ... + SORT_3 input_135 = __VERIFIER_nondet_uchar(); + SORT_3 input_137 = __VERIFIER_nondet_uchar(); + SORT_3 input_139 = __VERIFIER_nondet_uchar(); + SORT_3 input_141 = __VERIFIER_nondet_uchar(); + SORT_3 input_143 = __VERIFIER_nondet_uchar(); + SORT_3 input_145 = __VERIFIER_nondet_uchar(); + SORT_4 input_147 = __VERIFIER_nondet_ushort(); + SORT_4 input_149 = __VERIFIER_nondet_ushort(); + SORT_4 input_151 = __VERIFIER_nondet_ushort(); + SORT_4 input_153 = __VERIFIER_nondet_ushort(); + SORT_4 input_155 = __VERIFIER_nondet_ushort(); + SORT_4 input_157 = __VERIFIER_nondet_ushort(); + SORT_4 input_159 = __VERIFIER_nondet_ushort(); + SORT_3 input_161 = __VERIFIER_nondet_uchar(); + SORT_3 input_163 = __VERIFIER_nondet_uchar(); + SORT_4 input_165 = __VERIFIER_nondet_ushort(); + SORT_4 input_167 = __VERIFIER_nondet_ushort(); + SORT_4 input_169 = __VERIFIER_nondet_ushort(); + SORT_1 input_171 = __VERIFIER_nondet_uchar(); + input_171 = input_171 & mask_SORT_1; + SORT_1 input_173 = __VERIFIER_nondet_uchar(); + input_173 = input_173 & mask_SORT_1; + SORT_1 input_175 = __VERIFIER_nondet_uchar(); + input_175 = input_175 & mask_SORT_1; + SORT_1 input_177 = __VERIFIER_nondet_uchar(); + input_177 = input_177 & mask_SORT_1; + SORT_1 input_179 = __VERIFIER_nondet_uchar(); + input_179 = input_179 & mask_SORT_1; + SORT_1 input_181 = __VERIFIER_nondet_uchar(); + input_181 = input_181 & mask_SORT_1; + SORT_1 input_183 = __VERIFIER_nondet_uchar(); + input_183 = input_183 & mask_SORT_1; + SORT_1 input_185 = __VERIFIER_nondet_uchar(); + input_185 = input_185 & mask_SORT_1; + SORT_1 input_187 = __VERIFIER_nondet_uchar(); + input_187 = input_187 & mask_SORT_1; + SORT_1 input_189 = __VERIFIER_nondet_uchar(); + input_189 = input_189 & mask_SORT_1; + SORT_1 input_191 = __VERIFIER_nondet_uchar(); + input_191 = input_191 & mask_SORT_1; + SORT_1 input_193 = __VERIFIER_nondet_uchar(); + input_193 = input_193 & mask_SORT_1; + SORT_1 input_195 = __VERIFIER_nondet_uchar(); + input_195 = input_195 & mask_SORT_1; + SORT_1 input_197 = __VERIFIER_nondet_uchar(); + input_197 = input_197 & mask_SORT_1; + SORT_1 input_199 = __VERIFIER_nondet_uchar(); + input_199 = input_199 & mask_SORT_1; + SORT_1 input_203 = __VERIFIER_nondet_uchar(); + input_203 = input_203 & mask_SORT_1; + SORT_1 input_212 = __VERIFIER_nondet_uchar(); + input_212 = input_212 & mask_SORT_1; + SORT_1 input_223 = __VERIFIER_nondet_uchar(); + input_223 = input_223 & mask_SORT_1; + SORT_1 input_232 = __VERIFIER_nondet_uchar(); + input_232 = input_232 & mask_SORT_1; + SORT_1 input_242 = __VERIFIER_nondet_uchar(); + input_242 = input_242 & mask_SORT_1; + SORT_1 input_266 = __VERIFIER_nondet_uchar(); + input_266 = input_266 & mask_SORT_1; + SORT_1 input_282 = __VERIFIER_nondet_uchar(); + input_282 = input_282 & mask_SORT_1; + SORT_1 input_292 = __VERIFIER_nondet_uchar(); + input_292 = input_292 & mask_SORT_1; + SORT_1 input_309 = __VERIFIER_nondet_uchar(); + input_309 = input_309 & mask_SORT_1; + SORT_1 input_325 = __VERIFIER_nondet_uchar(); + input_325 = input_325 & mask_SORT_1; + SORT_1 input_335 = __VERIFIER_nondet_uchar(); + input_335 = input_335 & mask_SORT_1; + SORT_1 input_343 = __VERIFIER_nondet_uchar(); + input_343 = input_343 & mask_SORT_1; + SORT_1 input_394 = __VERIFIER_nondet_uchar(); + input_394 = input_394 & mask_SORT_1; + SORT_1 input_409 = __VERIFIER_nondet_uchar(); + input_409 = input_409 & mask_SORT_1; + SORT_1 input_419 = __VERIFIER_nondet_uchar(); + input_419 = input_419 & mask_SORT_1; + SORT_1 input_428 = __VERIFIER_nondet_uchar(); + input_428 = input_428 & mask_SORT_1; + SORT_1 input_441 = __VERIFIER_nondet_uchar(); + input_441 = input_441 & mask_SORT_1; + SORT_1 input_455 = __VERIFIER_nondet_uchar(); + input_455 = input_455 & mask_SORT_1; + SORT_1 input_470 = __VERIFIER_nondet_uchar(); + input_470 = input_470 & mask_SORT_1; + SORT_1 input_475 = __VERIFIER_nondet_uchar(); + input_475 = input_475 & mask_SORT_1; + SORT_1 input_488 = __VERIFIER_nondet_uchar(); + SORT_1 input_513 = __VERIFIER_nondet_uchar(); + input_513 = input_513 & mask_SORT_1; + SORT_1 input_533 = __VERIFIER_nondet_uchar(); + input_533 = input_533 & mask_SORT_1; + SORT_1 input_554 = __VERIFIER_nondet_uchar(); + input_554 = input_554 & mask_SORT_1; + SORT_1 input_569 = __VERIFIER_nondet_uchar(); + input_569 = input_569 & mask_SORT_1; + SORT_1 input_583 = __VERIFIER_nondet_uchar(); + input_583 = input_583 & mask_SORT_1; + SORT_1 input_594 = __VERIFIER_nondet_uchar(); + input_594 = input_594 & mask_SORT_1; + SORT_1 input_602 = __VERIFIER_nondet_uchar(); + input_602 = input_602 & mask_SORT_1; + SORT_1 input_617 = __VERIFIER_nondet_uchar(); + input_617 = input_617 & mask_SORT_1; + SORT_1 input_622 = __VERIFIER_nondet_uchar(); + input_622 = input_622 & mask_SORT_1; + SORT_1 input_634 = __VERIFIER_nondet_uchar(); + SORT_1 input_674 = __VERIFIER_nondet_uchar(); + input_674 = input_674 & mask_SORT_1; + SORT_1 input_695 = __VERIFIER_nondet_uchar(); + input_695 = input_695 & mask_SORT_1; + SORT_1 input_716 = __VERIFIER_nondet_uchar(); + input_716 = input_716 & mask_SORT_1; + SORT_1 input_731 = __VERIFIER_nondet_uchar(); + input_731 = input_731 & mask_SORT_1; + SORT_1 input_745 = __VERIFIER_nondet_uchar(); + input_745 = input_745 & mask_SORT_1; + // Creating intermediate signals ... + SORT_1 var_756_arg_0 = input_203; + SORT_1 var_756_arg_1 = input_212; + SORT_1 var_756 = var_756_arg_0 | var_756_arg_1; + SORT_1 var_757_arg_0 = input_223; + SORT_1 var_757_arg_1 = var_756; + SORT_1 var_757 = var_757_arg_0 | var_757_arg_1; + SORT_1 var_758_arg_0 = input_232; + SORT_1 var_758_arg_1 = var_757; + SORT_1 var_758 = var_758_arg_0 | var_758_arg_1; + SORT_1 var_759_arg_0 = input_242; + SORT_1 var_759_arg_1 = var_758; + SORT_1 var_759 = var_759_arg_0 | var_759_arg_1; + SORT_1 var_760_arg_0 = input_266; + SORT_1 var_760_arg_1 = var_759; + SORT_1 var_760 = var_760_arg_0 | var_760_arg_1; + SORT_1 var_761_arg_0 = input_282; + SORT_1 var_761_arg_1 = var_760; + SORT_1 var_761 = var_761_arg_0 | var_761_arg_1; + SORT_1 var_762_arg_0 = input_292; + SORT_1 var_762_arg_1 = var_761; + SORT_1 var_762 = var_762_arg_0 | var_762_arg_1; + SORT_1 var_763_arg_0 = input_309; + SORT_1 var_763_arg_1 = var_762; + SORT_1 var_763 = var_763_arg_0 | var_763_arg_1; + SORT_1 var_764_arg_0 = input_325; + SORT_1 var_764_arg_1 = var_763; + SORT_1 var_764 = var_764_arg_0 | var_764_arg_1; + SORT_1 var_765_arg_0 = input_335; + SORT_1 var_765_arg_1 = var_764; + SORT_1 var_765 = var_765_arg_0 | var_765_arg_1; + SORT_1 var_766_arg_0 = input_343; + SORT_1 var_766_arg_1 = var_765; + SORT_1 var_766 = var_766_arg_0 | var_766_arg_1; + SORT_1 var_767_arg_0 = input_394; + SORT_1 var_767_arg_1 = var_766; + SORT_1 var_767 = var_767_arg_0 | var_767_arg_1; + SORT_1 var_768_arg_0 = input_409; + SORT_1 var_768_arg_1 = var_767; + SORT_1 var_768 = var_768_arg_0 | var_768_arg_1; + SORT_1 var_769_arg_0 = input_419; + SORT_1 var_769_arg_1 = var_768; + SORT_1 var_769 = var_769_arg_0 | var_769_arg_1; + SORT_1 var_770_arg_0 = input_428; + SORT_1 var_770_arg_1 = var_769; + SORT_1 var_770 = var_770_arg_0 | var_770_arg_1; + SORT_1 var_771_arg_0 = input_441; + SORT_1 var_771_arg_1 = var_770; + SORT_1 var_771 = var_771_arg_0 | var_771_arg_1; + SORT_1 var_772_arg_0 = input_455; + SORT_1 var_772_arg_1 = var_771; + SORT_1 var_772 = var_772_arg_0 | var_772_arg_1; + SORT_1 var_773_arg_0 = input_470; + SORT_1 var_773_arg_1 = var_772; + SORT_1 var_773 = var_773_arg_0 | var_773_arg_1; + SORT_1 var_774_arg_0 = input_475; + SORT_1 var_774_arg_1 = var_773; + SORT_1 var_774 = var_774_arg_0 | var_774_arg_1; + SORT_1 var_775_arg_0 = input_488; + SORT_1 var_775_arg_1 = var_774; + SORT_1 var_775 = var_775_arg_0 | var_775_arg_1; + SORT_1 var_776_arg_0 = input_513; + SORT_1 var_776_arg_1 = var_775; + SORT_1 var_776 = var_776_arg_0 | var_776_arg_1; + SORT_1 var_777_arg_0 = input_533; + SORT_1 var_777_arg_1 = var_776; + SORT_1 var_777 = var_777_arg_0 | var_777_arg_1; + SORT_1 var_778_arg_0 = input_554; + SORT_1 var_778_arg_1 = var_777; + SORT_1 var_778 = var_778_arg_0 | var_778_arg_1; + SORT_1 var_779_arg_0 = input_569; + SORT_1 var_779_arg_1 = var_778; + SORT_1 var_779 = var_779_arg_0 | var_779_arg_1; + SORT_1 var_780_arg_0 = input_583; + SORT_1 var_780_arg_1 = var_779; + SORT_1 var_780 = var_780_arg_0 | var_780_arg_1; + SORT_1 var_781_arg_0 = input_594; + SORT_1 var_781_arg_1 = var_780; + SORT_1 var_781 = var_781_arg_0 | var_781_arg_1; + SORT_1 var_782_arg_0 = input_602; + SORT_1 var_782_arg_1 = var_781; + SORT_1 var_782 = var_782_arg_0 | var_782_arg_1; + SORT_1 var_783_arg_0 = input_617; + SORT_1 var_783_arg_1 = var_782; + SORT_1 var_783 = var_783_arg_0 | var_783_arg_1; + SORT_1 var_784_arg_0 = input_622; + SORT_1 var_784_arg_1 = var_783; + SORT_1 var_784 = var_784_arg_0 | var_784_arg_1; + SORT_1 var_785_arg_0 = input_634; + SORT_1 var_785_arg_1 = var_784; + SORT_1 var_785 = var_785_arg_0 | var_785_arg_1; + SORT_1 var_786_arg_0 = input_674; + SORT_1 var_786_arg_1 = var_785; + SORT_1 var_786 = var_786_arg_0 | var_786_arg_1; + SORT_1 var_787_arg_0 = input_695; + SORT_1 var_787_arg_1 = var_786; + SORT_1 var_787 = var_787_arg_0 | var_787_arg_1; + SORT_1 var_788_arg_0 = input_716; + SORT_1 var_788_arg_1 = var_787; + SORT_1 var_788 = var_788_arg_0 | var_788_arg_1; + SORT_1 var_789_arg_0 = input_731; + SORT_1 var_789_arg_1 = var_788; + SORT_1 var_789 = var_789_arg_0 | var_789_arg_1; + SORT_1 var_790_arg_0 = input_745; + SORT_1 var_790_arg_1 = var_789; + SORT_1 var_790 = var_790_arg_0 | var_790_arg_1; + SORT_1 var_675_arg_0 = input_199; + SORT_1 var_675_arg_1 = input_634; + SORT_1 var_675 = var_675_arg_0 | var_675_arg_1; + SORT_1 var_717_arg_0 = var_675; + SORT_1 var_717_arg_1 = ~input_695; + var_717_arg_1 = var_717_arg_1 & mask_SORT_1; + SORT_1 var_717 = var_717_arg_0 & var_717_arg_1; + SORT_1 var_732_arg_0 = var_717; + SORT_1 var_732_arg_1 = ~input_716; + var_732_arg_1 = var_732_arg_1 & mask_SORT_1; + SORT_1 var_732 = var_732_arg_0 & var_732_arg_1; + SORT_1 var_886_arg_0 = var_732; + SORT_1 var_886_arg_1 = ~input_731; + var_886_arg_1 = var_886_arg_1 & mask_SORT_1; + SORT_1 var_886 = var_886_arg_0 & var_886_arg_1; + var_886 = var_886 & mask_SORT_1; + SORT_1 var_623_arg_0 = input_197; + SORT_1 var_623_arg_1 = input_594; + SORT_1 var_623 = var_623_arg_0 | var_623_arg_1; + SORT_1 var_624_arg_0 = var_623; + SORT_1 var_624_arg_1 = input_602; + SORT_1 var_624 = var_624_arg_0 | var_624_arg_1; + SORT_1 var_625_arg_0 = var_624; + SORT_1 var_625_arg_1 = input_617; + SORT_1 var_625 = var_625_arg_0 | var_625_arg_1; + SORT_1 var_635_arg_0 = var_625; + SORT_1 var_635_arg_1 = ~input_622; + var_635_arg_1 = var_635_arg_1 & mask_SORT_1; + SORT_1 var_635 = var_635_arg_0 & var_635_arg_1; + SORT_1 var_746_arg_0 = var_635; + SORT_1 var_746_arg_1 = ~input_634; + var_746_arg_1 = var_746_arg_1 & mask_SORT_1; + SORT_1 var_746 = var_746_arg_0 & var_746_arg_1; + SORT_1 var_884_arg_0 = var_746; + SORT_1 var_884_arg_1 = ~input_745; + var_884_arg_1 = var_884_arg_1 & mask_SORT_1; + SORT_1 var_884 = var_884_arg_0 & var_884_arg_1; + var_884 = var_884 & mask_SORT_1; + SORT_1 var_824_arg_0 = input_195; + SORT_1 var_824_arg_1 = input_197; + SORT_1 var_824 = var_824_arg_0 | var_824_arg_1; + SORT_1 var_828_arg_0 = input_199; + SORT_1 var_828_arg_1 = var_824; + SORT_1 var_828 = var_828_arg_0 | var_828_arg_1; + SORT_1 var_825_arg_0 = input_199; + SORT_1 var_825_arg_1 = var_824; + SORT_1 var_825 = var_825_arg_0 & var_825_arg_1; + SORT_1 var_823_arg_0 = input_195; + SORT_1 var_823_arg_1 = input_197; + SORT_1 var_823 = var_823_arg_0 & var_823_arg_1; + SORT_1 var_826_arg_0 = var_823; + SORT_1 var_826_arg_1 = var_825; + SORT_1 var_826 = var_826_arg_0 | var_826_arg_1; + SORT_1 var_603_arg_0 = input_195; + SORT_1 var_603_arg_1 = ~input_594; + var_603_arg_1 = var_603_arg_1 & mask_SORT_1; + SORT_1 var_603 = var_603_arg_0 & var_603_arg_1; + SORT_1 var_618_arg_0 = var_603; + SORT_1 var_618_arg_1 = ~input_602; + var_618_arg_1 = var_618_arg_1 & mask_SORT_1; + SORT_1 var_618 = var_618_arg_0 & var_618_arg_1; + SORT_1 var_878_arg_0 = var_618; + SORT_1 var_878_arg_1 = ~input_617; + var_878_arg_1 = var_878_arg_1 & mask_SORT_1; + SORT_1 var_878 = var_878_arg_0 & var_878_arg_1; + SORT_1 var_879_arg_0 = var_878; + SORT_1 var_879_arg_1 = input_622; + SORT_1 var_879 = var_879_arg_0 | var_879_arg_1; + SORT_1 var_880_arg_0 = var_879; + SORT_1 var_880_arg_1 = input_695; + SORT_1 var_880 = var_880_arg_0 | var_880_arg_1; + SORT_1 var_881_arg_0 = var_880; + SORT_1 var_881_arg_1 = input_716; + SORT_1 var_881 = var_881_arg_0 | var_881_arg_1; + SORT_1 var_882_arg_0 = var_881; + SORT_1 var_882_arg_1 = input_731; + SORT_1 var_882 = var_882_arg_0 | var_882_arg_1; + SORT_1 var_883_arg_0 = var_882; + SORT_1 var_883_arg_1 = input_745; + SORT_1 var_883 = var_883_arg_0 | var_883_arg_1; + var_883 = var_883 & mask_SORT_1; + SORT_1 var_887_arg_0 = var_883; + SORT_1 var_887_arg_1 = var_884; + SORT_1 var_887 = var_887_arg_0 | var_887_arg_1; + SORT_1 var_891_arg_0 = var_886; + SORT_1 var_891_arg_1 = var_887; + SORT_1 var_891 = var_891_arg_0 | var_891_arg_1; + SORT_1 var_888_arg_0 = var_886; + SORT_1 var_888_arg_1 = var_887; + SORT_1 var_888 = var_888_arg_0 & var_888_arg_1; + SORT_1 var_885_arg_0 = var_883; + SORT_1 var_885_arg_1 = var_884; + SORT_1 var_885 = var_885_arg_0 & var_885_arg_1; + SORT_1 var_889_arg_0 = var_885; + SORT_1 var_889_arg_1 = var_888; + SORT_1 var_889 = var_889_arg_0 | var_889_arg_1; + SORT_1 var_514_arg_0 = input_193; + SORT_1 var_514_arg_1 = input_488; + SORT_1 var_514 = var_514_arg_0 | var_514_arg_1; + SORT_1 var_555_arg_0 = var_514; + SORT_1 var_555_arg_1 = ~input_533; + var_555_arg_1 = var_555_arg_1 & mask_SORT_1; + SORT_1 var_555 = var_555_arg_0 & var_555_arg_1; + SORT_1 var_570_arg_0 = var_555; + SORT_1 var_570_arg_1 = ~input_554; + var_570_arg_1 = var_570_arg_1 & mask_SORT_1; + SORT_1 var_570 = var_570_arg_0 & var_570_arg_1; + SORT_1 var_871_arg_0 = var_570; + SORT_1 var_871_arg_1 = ~input_569; + var_871_arg_1 = var_871_arg_1 & mask_SORT_1; + SORT_1 var_871 = var_871_arg_0 & var_871_arg_1; + var_871 = var_871 & mask_SORT_1; + SORT_1 var_476_arg_0 = input_191; + SORT_1 var_476_arg_1 = input_441; + SORT_1 var_476 = var_476_arg_0 | var_476_arg_1; + SORT_1 var_477_arg_0 = var_476; + SORT_1 var_477_arg_1 = input_455; + SORT_1 var_477 = var_477_arg_0 | var_477_arg_1; + SORT_1 var_478_arg_0 = var_477; + SORT_1 var_478_arg_1 = input_470; + SORT_1 var_478 = var_478_arg_0 | var_478_arg_1; + SORT_1 var_489_arg_0 = var_478; + SORT_1 var_489_arg_1 = ~input_475; + var_489_arg_1 = var_489_arg_1 & mask_SORT_1; + SORT_1 var_489 = var_489_arg_0 & var_489_arg_1; + SORT_1 var_584_arg_0 = var_489; + SORT_1 var_584_arg_1 = ~input_488; + var_584_arg_1 = var_584_arg_1 & mask_SORT_1; + SORT_1 var_584 = var_584_arg_0 & var_584_arg_1; + SORT_1 var_869_arg_0 = var_584; + SORT_1 var_869_arg_1 = ~input_583; + var_869_arg_1 = var_869_arg_1 & mask_SORT_1; + SORT_1 var_869 = var_869_arg_0 & var_869_arg_1; + var_869 = var_869 & mask_SORT_1; + SORT_1 var_817_arg_0 = input_189; + SORT_1 var_817_arg_1 = input_191; + SORT_1 var_817 = var_817_arg_0 | var_817_arg_1; + SORT_1 var_821_arg_0 = input_193; + SORT_1 var_821_arg_1 = var_817; + SORT_1 var_821 = var_821_arg_0 | var_821_arg_1; + SORT_1 var_818_arg_0 = input_193; + SORT_1 var_818_arg_1 = var_817; + SORT_1 var_818 = var_818_arg_0 & var_818_arg_1; + SORT_1 var_816_arg_0 = input_189; + SORT_1 var_816_arg_1 = input_191; + SORT_1 var_816 = var_816_arg_0 & var_816_arg_1; + SORT_1 var_819_arg_0 = var_816; + SORT_1 var_819_arg_1 = var_818; + SORT_1 var_819 = var_819_arg_0 | var_819_arg_1; + SORT_1 var_456_arg_0 = input_189; + SORT_1 var_456_arg_1 = ~input_441; + var_456_arg_1 = var_456_arg_1 & mask_SORT_1; + SORT_1 var_456 = var_456_arg_0 & var_456_arg_1; + SORT_1 var_471_arg_0 = var_456; + SORT_1 var_471_arg_1 = ~input_455; + var_471_arg_1 = var_471_arg_1 & mask_SORT_1; + SORT_1 var_471 = var_471_arg_0 & var_471_arg_1; + SORT_1 var_863_arg_0 = var_471; + SORT_1 var_863_arg_1 = ~input_470; + var_863_arg_1 = var_863_arg_1 & mask_SORT_1; + SORT_1 var_863 = var_863_arg_0 & var_863_arg_1; + SORT_1 var_864_arg_0 = var_863; + SORT_1 var_864_arg_1 = input_475; + SORT_1 var_864 = var_864_arg_0 | var_864_arg_1; + SORT_1 var_865_arg_0 = var_864; + SORT_1 var_865_arg_1 = input_533; + SORT_1 var_865 = var_865_arg_0 | var_865_arg_1; + SORT_1 var_866_arg_0 = var_865; + SORT_1 var_866_arg_1 = input_554; + SORT_1 var_866 = var_866_arg_0 | var_866_arg_1; + SORT_1 var_867_arg_0 = var_866; + SORT_1 var_867_arg_1 = input_569; + SORT_1 var_867 = var_867_arg_0 | var_867_arg_1; + SORT_1 var_868_arg_0 = var_867; + SORT_1 var_868_arg_1 = input_583; + SORT_1 var_868 = var_868_arg_0 | var_868_arg_1; + var_868 = var_868 & mask_SORT_1; + SORT_1 var_872_arg_0 = var_868; + SORT_1 var_872_arg_1 = var_869; + SORT_1 var_872 = var_872_arg_0 | var_872_arg_1; + SORT_1 var_876_arg_0 = var_871; + SORT_1 var_876_arg_1 = var_872; + SORT_1 var_876 = var_876_arg_0 | var_876_arg_1; + SORT_1 var_873_arg_0 = var_871; + SORT_1 var_873_arg_1 = var_872; + SORT_1 var_873 = var_873_arg_0 & var_873_arg_1; + SORT_1 var_870_arg_0 = var_868; + SORT_1 var_870_arg_1 = var_869; + SORT_1 var_870 = var_870_arg_0 & var_870_arg_1; + SORT_1 var_874_arg_0 = var_870; + SORT_1 var_874_arg_1 = var_873; + SORT_1 var_874 = var_874_arg_0 | var_874_arg_1; + SORT_1 var_420_arg_0 = input_185; + SORT_1 var_420_arg_1 = input_409; + SORT_1 var_420 = var_420_arg_0 | var_420_arg_1; + SORT_1 var_854_arg_0 = var_420; + SORT_1 var_854_arg_1 = ~input_428; + var_854_arg_1 = var_854_arg_1 & mask_SORT_1; + SORT_1 var_854 = var_854_arg_0 & var_854_arg_1; + var_854 = var_854 & mask_SORT_1; + SORT_1 var_344_arg_0 = input_183; + SORT_1 var_344_arg_1 = input_335; + SORT_1 var_344 = var_344_arg_0 | var_344_arg_1; + SORT_1 var_850_arg_0 = var_344; + SORT_1 var_850_arg_1 = ~input_409; + var_850_arg_1 = var_850_arg_1 & mask_SORT_1; + SORT_1 var_850 = var_850_arg_0 & var_850_arg_1; + var_850 = var_850 & mask_SORT_1; + SORT_1 var_336_arg_0 = input_181; + SORT_1 var_336_arg_1 = input_325; + SORT_1 var_336 = var_336_arg_0 | var_336_arg_1; + SORT_1 var_846_arg_0 = var_336; + SORT_1 var_846_arg_1 = ~input_335; + var_846_arg_1 = var_846_arg_1 & mask_SORT_1; + SORT_1 var_846 = var_846_arg_0 & var_846_arg_1; + var_846 = var_846 & mask_SORT_1; + SORT_1 var_293_arg_0 = input_177; + SORT_1 var_293_arg_1 = input_282; + SORT_1 var_293 = var_293_arg_0 | var_293_arg_1; + SORT_1 var_839_arg_0 = var_293; + SORT_1 var_839_arg_1 = ~input_325; + var_839_arg_1 = var_839_arg_1 & mask_SORT_1; + SORT_1 var_839 = var_839_arg_0 & var_839_arg_1; + var_839 = var_839 & mask_SORT_1; + SORT_1 var_243_arg_0 = input_175; + SORT_1 var_243_arg_1 = input_232; + SORT_1 var_243 = var_243_arg_0 | var_243_arg_1; + SORT_1 var_835_arg_0 = var_243; + SORT_1 var_835_arg_1 = ~input_282; + var_835_arg_1 = var_835_arg_1 & mask_SORT_1; + SORT_1 var_835 = var_835_arg_0 & var_835_arg_1; + var_835 = var_835 & mask_SORT_1; + SORT_1 var_224_arg_0 = input_173; + SORT_1 var_224_arg_1 = input_212; + SORT_1 var_224 = var_224_arg_0 | var_224_arg_1; + SORT_1 var_832_arg_0 = var_224; + SORT_1 var_832_arg_1 = ~input_232; + var_832_arg_1 = var_832_arg_1 & mask_SORT_1; + SORT_1 var_832 = var_832_arg_0 & var_832_arg_1; + SORT_1 var_833_arg_0 = var_832; + SORT_1 var_833_arg_1 = input_428; + SORT_1 var_833 = var_833_arg_0 | var_833_arg_1; + var_833 = var_833 & mask_SORT_1; + SORT_1 var_831_arg_0 = input_171; + SORT_1 var_831_arg_1 = ~input_212; + var_831_arg_1 = var_831_arg_1 & mask_SORT_1; + SORT_1 var_831 = var_831_arg_0 & var_831_arg_1; + var_831 = var_831 & mask_SORT_1; + SORT_1 var_836_arg_0 = var_831; + SORT_1 var_836_arg_1 = var_833; + SORT_1 var_836 = var_836_arg_0 | var_836_arg_1; + SORT_1 var_840_arg_0 = var_835; + SORT_1 var_840_arg_1 = var_836; + SORT_1 var_840 = var_840_arg_0 | var_840_arg_1; + SORT_1 var_843_arg_0 = var_839; + SORT_1 var_843_arg_1 = var_840; + SORT_1 var_843 = var_843_arg_0 | var_843_arg_1; + SORT_1 var_847_arg_0 = input_179; + SORT_1 var_847_arg_1 = var_843; + SORT_1 var_847 = var_847_arg_0 | var_847_arg_1; + SORT_1 var_851_arg_0 = var_846; + SORT_1 var_851_arg_1 = var_847; + SORT_1 var_851 = var_851_arg_0 | var_851_arg_1; + SORT_1 var_855_arg_0 = var_850; + SORT_1 var_855_arg_1 = var_851; + SORT_1 var_855 = var_855_arg_0 | var_855_arg_1; + SORT_1 var_858_arg_0 = var_854; + SORT_1 var_858_arg_1 = var_855; + SORT_1 var_858 = var_858_arg_0 | var_858_arg_1; + SORT_1 var_861_arg_0 = input_187; + SORT_1 var_861_arg_1 = var_858; + SORT_1 var_861 = var_861_arg_0 | var_861_arg_1; + SORT_1 var_859_arg_0 = input_187; + SORT_1 var_859_arg_1 = var_858; + SORT_1 var_859 = var_859_arg_0 & var_859_arg_1; + SORT_1 var_856_arg_0 = var_854; + SORT_1 var_856_arg_1 = var_855; + SORT_1 var_856 = var_856_arg_0 & var_856_arg_1; + SORT_1 var_852_arg_0 = var_850; + SORT_1 var_852_arg_1 = var_851; + SORT_1 var_852 = var_852_arg_0 & var_852_arg_1; + SORT_1 var_848_arg_0 = var_846; + SORT_1 var_848_arg_1 = var_847; + SORT_1 var_848 = var_848_arg_0 & var_848_arg_1; + SORT_1 var_844_arg_0 = input_179; + SORT_1 var_844_arg_1 = var_843; + SORT_1 var_844 = var_844_arg_0 & var_844_arg_1; + SORT_1 var_841_arg_0 = var_839; + SORT_1 var_841_arg_1 = var_840; + SORT_1 var_841 = var_841_arg_0 & var_841_arg_1; + SORT_1 var_837_arg_0 = var_835; + SORT_1 var_837_arg_1 = var_836; + SORT_1 var_837 = var_837_arg_0 & var_837_arg_1; + SORT_1 var_834_arg_0 = var_831; + SORT_1 var_834_arg_1 = var_833; + SORT_1 var_834 = var_834_arg_0 & var_834_arg_1; + SORT_1 var_838_arg_0 = var_834; + SORT_1 var_838_arg_1 = var_837; + SORT_1 var_838 = var_838_arg_0 | var_838_arg_1; + SORT_1 var_842_arg_0 = var_838; + SORT_1 var_842_arg_1 = var_841; + SORT_1 var_842 = var_842_arg_0 | var_842_arg_1; + SORT_1 var_845_arg_0 = var_842; + SORT_1 var_845_arg_1 = var_844; + SORT_1 var_845 = var_845_arg_0 | var_845_arg_1; + SORT_1 var_849_arg_0 = var_845; + SORT_1 var_849_arg_1 = var_848; + SORT_1 var_849 = var_849_arg_0 | var_849_arg_1; + SORT_1 var_853_arg_0 = var_849; + SORT_1 var_853_arg_1 = var_852; + SORT_1 var_853 = var_853_arg_0 | var_853_arg_1; + SORT_1 var_857_arg_0 = var_853; + SORT_1 var_857_arg_1 = var_856; + SORT_1 var_857 = var_857_arg_0 | var_857_arg_1; + SORT_1 var_860_arg_0 = var_857; + SORT_1 var_860_arg_1 = var_859; + SORT_1 var_860 = var_860_arg_0 | var_860_arg_1; + SORT_1 var_862_arg_0 = ~var_860; + var_862_arg_0 = var_862_arg_0 & mask_SORT_1; + SORT_1 var_862_arg_1 = var_861; + SORT_1 var_862 = var_862_arg_0 & var_862_arg_1; + SORT_1 var_875_arg_0 = var_862; + SORT_1 var_875_arg_1 = ~var_874; + var_875_arg_1 = var_875_arg_1 & mask_SORT_1; + SORT_1 var_875 = var_875_arg_0 & var_875_arg_1; + SORT_1 var_877_arg_0 = var_875; + SORT_1 var_877_arg_1 = var_876; + SORT_1 var_877 = var_877_arg_0 & var_877_arg_1; + SORT_1 var_890_arg_0 = var_877; + SORT_1 var_890_arg_1 = ~var_889; + var_890_arg_1 = var_890_arg_1 & mask_SORT_1; + SORT_1 var_890 = var_890_arg_0 & var_890_arg_1; + SORT_1 var_892_arg_0 = var_890; + SORT_1 var_892_arg_1 = var_891; + SORT_1 var_892 = var_892_arg_0 & var_892_arg_1; + SORT_1 var_793_arg_0 = input_171; + SORT_1 var_793_arg_1 = input_173; + SORT_1 var_793 = var_793_arg_0 | var_793_arg_1; + SORT_1 var_796_arg_0 = input_175; + SORT_1 var_796_arg_1 = var_793; + SORT_1 var_796 = var_796_arg_0 | var_796_arg_1; + SORT_1 var_799_arg_0 = input_177; + SORT_1 var_799_arg_1 = var_796; + SORT_1 var_799 = var_799_arg_0 | var_799_arg_1; + SORT_1 var_802_arg_0 = input_179; + SORT_1 var_802_arg_1 = var_799; + SORT_1 var_802 = var_802_arg_0 | var_802_arg_1; + SORT_1 var_805_arg_0 = input_181; + SORT_1 var_805_arg_1 = var_802; + SORT_1 var_805 = var_805_arg_0 | var_805_arg_1; + SORT_1 var_808_arg_0 = input_183; + SORT_1 var_808_arg_1 = var_805; + SORT_1 var_808 = var_808_arg_0 | var_808_arg_1; + SORT_1 var_811_arg_0 = input_185; + SORT_1 var_811_arg_1 = var_808; + SORT_1 var_811 = var_811_arg_0 | var_811_arg_1; + SORT_1 var_814_arg_0 = input_187; + SORT_1 var_814_arg_1 = var_811; + SORT_1 var_814 = var_814_arg_0 | var_814_arg_1; + SORT_1 var_812_arg_0 = input_187; + SORT_1 var_812_arg_1 = var_811; + SORT_1 var_812 = var_812_arg_0 & var_812_arg_1; + SORT_1 var_809_arg_0 = input_185; + SORT_1 var_809_arg_1 = var_808; + SORT_1 var_809 = var_809_arg_0 & var_809_arg_1; + SORT_1 var_806_arg_0 = input_183; + SORT_1 var_806_arg_1 = var_805; + SORT_1 var_806 = var_806_arg_0 & var_806_arg_1; + SORT_1 var_803_arg_0 = input_181; + SORT_1 var_803_arg_1 = var_802; + SORT_1 var_803 = var_803_arg_0 & var_803_arg_1; + SORT_1 var_800_arg_0 = input_179; + SORT_1 var_800_arg_1 = var_799; + SORT_1 var_800 = var_800_arg_0 & var_800_arg_1; + SORT_1 var_797_arg_0 = input_177; + SORT_1 var_797_arg_1 = var_796; + SORT_1 var_797 = var_797_arg_0 & var_797_arg_1; + SORT_1 var_794_arg_0 = input_175; + SORT_1 var_794_arg_1 = var_793; + SORT_1 var_794 = var_794_arg_0 & var_794_arg_1; + SORT_1 var_792_arg_0 = input_171; + SORT_1 var_792_arg_1 = input_173; + SORT_1 var_792 = var_792_arg_0 & var_792_arg_1; + SORT_1 var_795_arg_0 = var_792; + SORT_1 var_795_arg_1 = var_794; + SORT_1 var_795 = var_795_arg_0 | var_795_arg_1; + SORT_1 var_798_arg_0 = var_795; + SORT_1 var_798_arg_1 = var_797; + SORT_1 var_798 = var_798_arg_0 | var_798_arg_1; + SORT_1 var_801_arg_0 = var_798; + SORT_1 var_801_arg_1 = var_800; + SORT_1 var_801 = var_801_arg_0 | var_801_arg_1; + SORT_1 var_804_arg_0 = var_801; + SORT_1 var_804_arg_1 = var_803; + SORT_1 var_804 = var_804_arg_0 | var_804_arg_1; + SORT_1 var_807_arg_0 = var_804; + SORT_1 var_807_arg_1 = var_806; + SORT_1 var_807 = var_807_arg_0 | var_807_arg_1; + SORT_1 var_810_arg_0 = var_807; + SORT_1 var_810_arg_1 = var_809; + SORT_1 var_810 = var_810_arg_0 | var_810_arg_1; + SORT_1 var_813_arg_0 = var_810; + SORT_1 var_813_arg_1 = var_812; + SORT_1 var_813 = var_813_arg_0 | var_813_arg_1; + SORT_1 var_815_arg_0 = ~var_813; + var_815_arg_0 = var_815_arg_0 & mask_SORT_1; + SORT_1 var_815_arg_1 = var_814; + SORT_1 var_815 = var_815_arg_0 & var_815_arg_1; + SORT_1 var_820_arg_0 = var_815; + SORT_1 var_820_arg_1 = ~var_819; + var_820_arg_1 = var_820_arg_1 & mask_SORT_1; + SORT_1 var_820 = var_820_arg_0 & var_820_arg_1; + SORT_1 var_822_arg_0 = var_820; + SORT_1 var_822_arg_1 = var_821; + SORT_1 var_822 = var_822_arg_0 & var_822_arg_1; + SORT_1 var_827_arg_0 = var_822; + SORT_1 var_827_arg_1 = ~var_826; + var_827_arg_1 = var_827_arg_1 & mask_SORT_1; + SORT_1 var_827 = var_827_arg_0 & var_827_arg_1; + SORT_1 var_829_arg_0 = var_827; + SORT_1 var_829_arg_1 = var_828; + SORT_1 var_829 = var_829_arg_0 & var_829_arg_1; + SORT_4 var_676_arg_0 = input_169; + SORT_4 var_676_arg_1 = var_205; + SORT_6 var_676 = ((SORT_6)var_676_arg_0 << 16) | var_676_arg_1; + SORT_6 var_677_arg_0 = var_676; + var_677_arg_0 = (var_677_arg_0 & msb_SORT_6) ? (var_677_arg_0 | ~mask_SORT_6) : (var_677_arg_0 & mask_SORT_6); + SORT_6 var_677_arg_1 = var_207; + SORT_6 var_677 = (int)var_677_arg_0 >> var_677_arg_1; + var_677 = (var_677_arg_0 & msb_SORT_6) ? (var_677 | ~(mask_SORT_6 >> var_677_arg_1)) : var_677; + SORT_6 var_696_arg_0 = var_213; + SORT_6 var_696_arg_1 = var_677; + SORT_6 var_696 = var_696_arg_0 + var_696_arg_1; + SORT_6 var_697_arg_0 = var_696; + SORT_4 var_697 = var_697_arg_0 >> 0; + SORT_1 var_698_arg_0 = input_674; + SORT_4 var_698_arg_1 = var_697; + SORT_4 var_698_arg_2 = input_169; + SORT_4 var_698 = var_698_arg_0 ? var_698_arg_1 : var_698_arg_2; + SORT_4 var_699_arg_0 = var_698; + SORT_4 var_699_arg_1 = var_205; + SORT_6 var_699 = ((SORT_6)var_699_arg_0 << 16) | var_699_arg_1; + SORT_6 var_700_arg_0 = var_699; + var_700_arg_0 = (var_700_arg_0 & msb_SORT_6) ? (var_700_arg_0 | ~mask_SORT_6) : (var_700_arg_0 & mask_SORT_6); + SORT_6 var_700_arg_1 = var_207; + SORT_6 var_700 = (int)var_700_arg_0 >> var_700_arg_1; + var_700 = (var_700_arg_0 & msb_SORT_6) ? (var_700 | ~(mask_SORT_6 >> var_700_arg_1)) : var_700; + SORT_6 var_718_arg_0 = var_213; + SORT_6 var_718_arg_1 = var_700; + SORT_6 var_718 = var_718_arg_0 + var_718_arg_1; + SORT_6 var_719_arg_0 = var_718; + SORT_4 var_719 = var_719_arg_0 >> 0; + SORT_1 var_720_arg_0 = input_695; + SORT_4 var_720_arg_1 = var_719; + SORT_4 var_720_arg_2 = var_698; + SORT_4 var_720 = var_720_arg_0 ? var_720_arg_1 : var_720_arg_2; + SORT_4 var_721_arg_0 = var_720; + SORT_4 var_721_arg_1 = var_205; + SORT_6 var_721 = ((SORT_6)var_721_arg_0 << 16) | var_721_arg_1; + SORT_6 var_722_arg_0 = var_721; + var_722_arg_0 = (var_722_arg_0 & msb_SORT_6) ? (var_722_arg_0 | ~mask_SORT_6) : (var_722_arg_0 & mask_SORT_6); + SORT_6 var_722_arg_1 = var_207; + SORT_6 var_722 = (int)var_722_arg_0 >> var_722_arg_1; + var_722 = (var_722_arg_0 & msb_SORT_6) ? (var_722 | ~(mask_SORT_6 >> var_722_arg_1)) : var_722; + SORT_6 var_723_arg_0 = var_204; + SORT_6 var_723_arg_1 = var_722; + SORT_1 var_723 = var_723_arg_0 == var_723_arg_1; + SORT_6 var_702_arg_0 = var_249; + SORT_6 var_702_arg_1 = var_700; + SORT_1 var_702 = var_702_arg_0 == var_702_arg_1; + SORT_6 var_701_arg_0 = var_204; + SORT_6 var_701_arg_1 = var_700; + SORT_1 var_701 = var_701_arg_0 <= var_701_arg_1; + SORT_6 var_679_arg_0 = var_249; + SORT_6 var_679_arg_1 = var_677; + SORT_1 var_679 = var_679_arg_0 == var_679_arg_1; + SORT_6 var_678_arg_0 = var_204; + SORT_6 var_678_arg_1 = var_677; + SORT_1 var_678 = var_678_arg_0 <= var_678_arg_1; + SORT_4 var_515_arg_0 = input_167; + SORT_4 var_515_arg_1 = var_205; + SORT_6 var_515 = ((SORT_6)var_515_arg_0 << 16) | var_515_arg_1; + SORT_6 var_516_arg_0 = var_515; + var_516_arg_0 = (var_516_arg_0 & msb_SORT_6) ? (var_516_arg_0 | ~mask_SORT_6) : (var_516_arg_0 & mask_SORT_6); + SORT_6 var_516_arg_1 = var_207; + SORT_6 var_516 = (int)var_516_arg_0 >> var_516_arg_1; + var_516 = (var_516_arg_0 & msb_SORT_6) ? (var_516 | ~(mask_SORT_6 >> var_516_arg_1)) : var_516; + SORT_6 var_534_arg_0 = var_213; + SORT_6 var_534_arg_1 = var_516; + SORT_6 var_534 = var_534_arg_0 + var_534_arg_1; + SORT_6 var_535_arg_0 = var_534; + SORT_4 var_535 = var_535_arg_0 >> 0; + SORT_1 var_536_arg_0 = input_513; + SORT_4 var_536_arg_1 = var_535; + SORT_4 var_536_arg_2 = input_167; + SORT_4 var_536 = var_536_arg_0 ? var_536_arg_1 : var_536_arg_2; + SORT_4 var_537_arg_0 = var_536; + SORT_4 var_537_arg_1 = var_205; + SORT_6 var_537 = ((SORT_6)var_537_arg_0 << 16) | var_537_arg_1; + SORT_6 var_538_arg_0 = var_537; + var_538_arg_0 = (var_538_arg_0 & msb_SORT_6) ? (var_538_arg_0 | ~mask_SORT_6) : (var_538_arg_0 & mask_SORT_6); + SORT_6 var_538_arg_1 = var_207; + SORT_6 var_538 = (int)var_538_arg_0 >> var_538_arg_1; + var_538 = (var_538_arg_0 & msb_SORT_6) ? (var_538 | ~(mask_SORT_6 >> var_538_arg_1)) : var_538; + SORT_6 var_556_arg_0 = var_213; + SORT_6 var_556_arg_1 = var_538; + SORT_6 var_556 = var_556_arg_0 + var_556_arg_1; + SORT_6 var_557_arg_0 = var_556; + SORT_4 var_557 = var_557_arg_0 >> 0; + SORT_1 var_558_arg_0 = input_533; + SORT_4 var_558_arg_1 = var_557; + SORT_4 var_558_arg_2 = var_536; + SORT_4 var_558 = var_558_arg_0 ? var_558_arg_1 : var_558_arg_2; + SORT_4 var_559_arg_0 = var_558; + SORT_4 var_559_arg_1 = var_205; + SORT_6 var_559 = ((SORT_6)var_559_arg_0 << 16) | var_559_arg_1; + SORT_6 var_560_arg_0 = var_559; + var_560_arg_0 = (var_560_arg_0 & msb_SORT_6) ? (var_560_arg_0 | ~mask_SORT_6) : (var_560_arg_0 & mask_SORT_6); + SORT_6 var_560_arg_1 = var_207; + SORT_6 var_560 = (int)var_560_arg_0 >> var_560_arg_1; + var_560 = (var_560_arg_0 & msb_SORT_6) ? (var_560 | ~(mask_SORT_6 >> var_560_arg_1)) : var_560; + SORT_6 var_561_arg_0 = var_204; + SORT_6 var_561_arg_1 = var_560; + SORT_1 var_561 = var_561_arg_0 == var_561_arg_1; + SORT_6 var_540_arg_0 = var_249; + SORT_6 var_540_arg_1 = var_538; + SORT_1 var_540 = var_540_arg_0 == var_540_arg_1; + SORT_6 var_539_arg_0 = var_204; + SORT_6 var_539_arg_1 = var_538; + SORT_1 var_539 = var_539_arg_0 <= var_539_arg_1; + SORT_6 var_518_arg_0 = var_249; + SORT_6 var_518_arg_1 = var_516; + SORT_1 var_518 = var_518_arg_0 == var_518_arg_1; + SORT_6 var_517_arg_0 = var_204; + SORT_6 var_517_arg_1 = var_516; + SORT_1 var_517 = var_517_arg_0 <= var_517_arg_1; + SORT_4 var_206_arg_0 = input_165; + SORT_4 var_206_arg_1 = var_205; + SORT_6 var_206 = ((SORT_6)var_206_arg_0 << 16) | var_206_arg_1; + SORT_6 var_208_arg_0 = var_206; + var_208_arg_0 = (var_208_arg_0 & msb_SORT_6) ? (var_208_arg_0 | ~mask_SORT_6) : (var_208_arg_0 & mask_SORT_6); + SORT_6 var_208_arg_1 = var_207; + SORT_6 var_208 = (int)var_208_arg_0 >> var_208_arg_1; + var_208 = (var_208_arg_0 & msb_SORT_6) ? (var_208 | ~(mask_SORT_6 >> var_208_arg_1)) : var_208; + SORT_6 var_255_arg_0 = var_213; + SORT_6 var_255_arg_1 = var_208; + SORT_1 var_255 = var_255_arg_0 == var_255_arg_1; + SORT_1 var_256_arg_0 = input_203; + SORT_1 var_256_arg_1 = var_255; + SORT_1 var_256 = var_256_arg_0 & var_256_arg_1; + var_256 = var_256 & mask_SORT_1; + SORT_6 var_251_arg_0 = var_249; + SORT_6 var_251_arg_1 = var_208; + SORT_1 var_251 = var_251_arg_0 == var_251_arg_1; + SORT_1 var_252_arg_0 = input_203; + SORT_1 var_252_arg_1 = var_251; + SORT_1 var_252 = var_252_arg_0 & var_252_arg_1; + var_252 = var_252 & mask_SORT_1; + SORT_6 var_214_arg_0 = var_213; + SORT_6 var_214_arg_1 = var_208; + SORT_6 var_214 = var_214_arg_0 + var_214_arg_1; + SORT_6 var_215_arg_0 = var_214; + SORT_4 var_215 = var_215_arg_0 >> 0; + SORT_1 var_216_arg_0 = input_203; + SORT_4 var_216_arg_1 = var_215; + SORT_4 var_216_arg_2 = input_165; + SORT_4 var_216 = var_216_arg_0 ? var_216_arg_1 : var_216_arg_2; + SORT_4 var_217_arg_0 = var_216; + SORT_4 var_217_arg_1 = var_205; + SORT_6 var_217 = ((SORT_6)var_217_arg_0 << 16) | var_217_arg_1; + SORT_6 var_218_arg_0 = var_217; + var_218_arg_0 = (var_218_arg_0 & msb_SORT_6) ? (var_218_arg_0 | ~mask_SORT_6) : (var_218_arg_0 & mask_SORT_6); + SORT_6 var_218_arg_1 = var_207; + SORT_6 var_218 = (int)var_218_arg_0 >> var_218_arg_1; + var_218 = (var_218_arg_0 & msb_SORT_6) ? (var_218 | ~(mask_SORT_6 >> var_218_arg_1)) : var_218; + SORT_6 var_219_arg_0 = var_204; + SORT_6 var_219_arg_1 = var_218; + SORT_1 var_219 = var_219_arg_0 == var_219_arg_1; + SORT_1 var_220_arg_0 = input_171; + SORT_1 var_220_arg_1 = var_219; + SORT_1 var_220 = var_220_arg_0 & var_220_arg_1; + SORT_1 var_221_arg_0 = ~input_212; + var_221_arg_0 = var_221_arg_0 & mask_SORT_1; + SORT_1 var_221_arg_1 = var_220; + SORT_1 var_221 = var_221_arg_0 | var_221_arg_1; + SORT_6 var_209_arg_0 = var_204; + SORT_6 var_209_arg_1 = var_208; + SORT_1 var_209 = var_209_arg_0 <= var_209_arg_1; + SORT_1 var_210_arg_0 = input_171; + SORT_1 var_210_arg_1 = ~var_209; + var_210_arg_1 = var_210_arg_1 & mask_SORT_1; + SORT_1 var_210 = var_210_arg_0 & var_210_arg_1; + SORT_1 var_211_arg_0 = ~input_203; + var_211_arg_0 = var_211_arg_0 & mask_SORT_1; + SORT_1 var_211_arg_1 = var_210; + SORT_1 var_211 = var_211_arg_0 | var_211_arg_1; + SORT_1 var_222_arg_0 = var_211; + SORT_1 var_222_arg_1 = var_221; + SORT_1 var_222 = var_222_arg_0 & var_222_arg_1; + SORT_4 var_358_arg_0 = input_159; + SORT_3 var_358 = var_358_arg_0 >> 0; + SORT_1 var_609_arg_0 = var_256; + SORT_4 var_609_arg_1 = var_253; + SORT_4 var_609_arg_2 = input_157; + SORT_4 var_609 = var_609_arg_0 ? var_609_arg_1 : var_609_arg_2; + SORT_4 var_610_arg_0 = var_609; + SORT_4 var_610_arg_1 = var_205; + SORT_6 var_610 = ((SORT_6)var_610_arg_0 << 16) | var_610_arg_1; + SORT_6 var_611_arg_0 = var_610; + var_611_arg_0 = (var_611_arg_0 & msb_SORT_6) ? (var_611_arg_0 | ~mask_SORT_6) : (var_611_arg_0 & mask_SORT_6); + SORT_6 var_611_arg_1 = var_207; + SORT_6 var_611 = (int)var_611_arg_0 >> var_611_arg_1; + var_611 = (var_611_arg_0 & msb_SORT_6) ? (var_611 | ~(mask_SORT_6 >> var_611_arg_1)) : var_611; + SORT_6 var_612_arg_0 = var_248; + SORT_6 var_612_arg_1 = var_611; + SORT_1 var_612 = var_612_arg_0 == var_612_arg_1; + SORT_1 var_462_arg_0 = var_252; + SORT_4 var_462_arg_1 = var_253; + SORT_4 var_462_arg_2 = input_155; + SORT_4 var_462 = var_462_arg_0 ? var_462_arg_1 : var_462_arg_2; + SORT_4 var_463_arg_0 = var_462; + SORT_4 var_463_arg_1 = var_205; + SORT_6 var_463 = ((SORT_6)var_463_arg_0 << 16) | var_463_arg_1; + SORT_6 var_464_arg_0 = var_463; + var_464_arg_0 = (var_464_arg_0 & msb_SORT_6) ? (var_464_arg_0 | ~mask_SORT_6) : (var_464_arg_0 & mask_SORT_6); + SORT_6 var_464_arg_1 = var_207; + SORT_6 var_464 = (int)var_464_arg_0 >> var_464_arg_1; + var_464 = (var_464_arg_0 & msb_SORT_6) ? (var_464 | ~(mask_SORT_6 >> var_464_arg_1)) : var_464; + SORT_6 var_465_arg_0 = var_248; + SORT_6 var_465_arg_1 = var_464; + SORT_1 var_465 = var_465_arg_0 == var_465_arg_1; + SORT_4 var_1023_arg_0 = input_153; + SORT_4 var_1023_arg_1 = var_205; + SORT_6 var_1023 = ((SORT_6)var_1023_arg_0 << 16) | var_1023_arg_1; + SORT_6 var_1024_arg_0 = var_1023; + var_1024_arg_0 = (var_1024_arg_0 & msb_SORT_6) ? (var_1024_arg_0 | ~mask_SORT_6) : (var_1024_arg_0 & mask_SORT_6); + SORT_6 var_1024_arg_1 = var_207; + SORT_6 var_1024 = (int)var_1024_arg_0 >> var_1024_arg_1; + var_1024 = (var_1024_arg_0 & msb_SORT_6) ? (var_1024 | ~(mask_SORT_6 >> var_1024_arg_1)) : var_1024; + SORT_1 var_300_arg_0 = var_256; + SORT_4 var_300_arg_1 = var_253; + SORT_4 var_300_arg_2 = input_153; + SORT_4 var_300 = var_300_arg_0 ? var_300_arg_1 : var_300_arg_2; + SORT_1 var_604_arg_0 = input_594; + SORT_4 var_604_arg_1 = var_253; + SORT_4 var_604_arg_2 = var_300; + SORT_4 var_604 = var_604_arg_0 ? var_604_arg_1 : var_604_arg_2; + SORT_4 var_605_arg_0 = var_604; + SORT_4 var_605_arg_1 = var_205; + SORT_6 var_605 = ((SORT_6)var_605_arg_0 << 16) | var_605_arg_1; + SORT_6 var_606_arg_0 = var_605; + var_606_arg_0 = (var_606_arg_0 & msb_SORT_6) ? (var_606_arg_0 | ~mask_SORT_6) : (var_606_arg_0 & mask_SORT_6); + SORT_6 var_606_arg_1 = var_207; + SORT_6 var_606 = (int)var_606_arg_0 >> var_606_arg_1; + var_606 = (var_606_arg_0 & msb_SORT_6) ? (var_606 | ~(mask_SORT_6 >> var_606_arg_1)) : var_606; + SORT_6 var_607_arg_0 = var_248; + SORT_6 var_607_arg_1 = var_606; + SORT_1 var_607 = var_607_arg_0 == var_607_arg_1; + SORT_1 var_299_arg_0 = var_252; + SORT_4 var_299_arg_1 = var_253; + SORT_4 var_299_arg_2 = input_151; + SORT_4 var_299 = var_299_arg_0 ? var_299_arg_1 : var_299_arg_2; + SORT_1 var_457_arg_0 = input_441; + SORT_4 var_457_arg_1 = var_253; + SORT_4 var_457_arg_2 = var_299; + SORT_4 var_457 = var_457_arg_0 ? var_457_arg_1 : var_457_arg_2; + SORT_1 var_545_arg_0 = var_540; + SORT_4 var_545_arg_1 = var_457; + SORT_4 var_545_arg_2 = var_300; + SORT_4 var_545 = var_545_arg_0 ? var_545_arg_1 : var_545_arg_2; + SORT_4 var_546_arg_0 = var_545; + SORT_4 var_546_arg_1 = var_205; + SORT_6 var_546 = ((SORT_6)var_546_arg_0 << 16) | var_546_arg_1; + SORT_6 var_547_arg_0 = var_546; + var_547_arg_0 = (var_547_arg_0 & msb_SORT_6) ? (var_547_arg_0 | ~mask_SORT_6) : (var_547_arg_0 & mask_SORT_6); + SORT_6 var_547_arg_1 = var_207; + SORT_6 var_547 = (int)var_547_arg_0 >> var_547_arg_1; + var_547 = (var_547_arg_0 & msb_SORT_6) ? (var_547 | ~(mask_SORT_6 >> var_547_arg_1)) : var_547; + SORT_1 var_525_arg_0 = var_518; + SORT_4 var_525_arg_1 = var_457; + SORT_4 var_525_arg_2 = var_300; + SORT_4 var_525 = var_525_arg_0 ? var_525_arg_1 : var_525_arg_2; + SORT_4 var_526_arg_0 = var_525; + SORT_4 var_526_arg_1 = var_205; + SORT_6 var_526 = ((SORT_6)var_526_arg_0 << 16) | var_526_arg_1; + SORT_6 var_527_arg_0 = var_526; + var_527_arg_0 = (var_527_arg_0 & msb_SORT_6) ? (var_527_arg_0 | ~mask_SORT_6) : (var_527_arg_0 & mask_SORT_6); + SORT_6 var_527_arg_1 = var_207; + SORT_6 var_527 = (int)var_527_arg_0 >> var_527_arg_1; + var_527 = (var_527_arg_0 & msb_SORT_6) ? (var_527 | ~(mask_SORT_6 >> var_527_arg_1)) : var_527; + SORT_4 var_458_arg_0 = var_457; + SORT_4 var_458_arg_1 = var_205; + SORT_6 var_458 = ((SORT_6)var_458_arg_0 << 16) | var_458_arg_1; + SORT_6 var_459_arg_0 = var_458; + var_459_arg_0 = (var_459_arg_0 & msb_SORT_6) ? (var_459_arg_0 | ~mask_SORT_6) : (var_459_arg_0 & mask_SORT_6); + SORT_6 var_459_arg_1 = var_207; + SORT_6 var_459 = (int)var_459_arg_0 >> var_459_arg_1; + var_459 = (var_459_arg_0 & msb_SORT_6) ? (var_459 | ~(mask_SORT_6 >> var_459_arg_1)) : var_459; + SORT_6 var_460_arg_0 = var_248; + SORT_6 var_460_arg_1 = var_459; + SORT_1 var_460 = var_460_arg_0 == var_460_arg_1; + SORT_4 var_1020_arg_0 = input_149; + SORT_4 var_1020_arg_1 = var_205; + SORT_6 var_1020 = ((SORT_6)var_1020_arg_0 << 16) | var_1020_arg_1; + SORT_6 var_1021_arg_0 = var_1020; + var_1021_arg_0 = (var_1021_arg_0 & msb_SORT_6) ? (var_1021_arg_0 | ~mask_SORT_6) : (var_1021_arg_0 & mask_SORT_6); + SORT_6 var_1021_arg_1 = var_207; + SORT_6 var_1021 = (int)var_1021_arg_0 >> var_1021_arg_1; + var_1021 = (var_1021_arg_0 & msb_SORT_6) ? (var_1021 | ~(mask_SORT_6 >> var_1021_arg_1)) : var_1021; + SORT_1 var_257_arg_0 = var_256; + SORT_4 var_257_arg_1 = var_253; + SORT_4 var_257_arg_2 = input_149; + SORT_4 var_257 = var_257_arg_0 ? var_257_arg_1 : var_257_arg_2; + SORT_1 var_680_arg_0 = input_594; + SORT_4 var_680_arg_1 = var_300; + SORT_4 var_680_arg_2 = var_257; + SORT_4 var_680 = var_680_arg_0 ? var_680_arg_1 : var_680_arg_2; + SORT_4 var_724_arg_0 = var_680; + SORT_4 var_724_arg_1 = var_205; + SORT_6 var_724 = ((SORT_6)var_724_arg_0 << 16) | var_724_arg_1; + SORT_6 var_725_arg_0 = var_724; + var_725_arg_0 = (var_725_arg_0 & msb_SORT_6) ? (var_725_arg_0 | ~mask_SORT_6) : (var_725_arg_0 & mask_SORT_6); + SORT_6 var_725_arg_1 = var_207; + SORT_6 var_725 = (int)var_725_arg_0 >> var_725_arg_1; + var_725 = (var_725_arg_0 & msb_SORT_6) ? (var_725 | ~(mask_SORT_6 >> var_725_arg_1)) : var_725; + SORT_6 var_726_arg_0 = var_248; + SORT_6 var_726_arg_1 = var_725; + SORT_1 var_726 = var_726_arg_0 == var_726_arg_1; + SORT_1 var_727_arg_0 = var_723; + SORT_1 var_727_arg_1 = var_726; + SORT_1 var_727 = var_727_arg_0 & var_727_arg_1; + SORT_1 var_728_arg_0 = var_717; + SORT_1 var_728_arg_1 = var_727; + SORT_1 var_728 = var_728_arg_0 & var_728_arg_1; + SORT_1 var_729_arg_0 = ~input_716; + var_729_arg_0 = var_729_arg_0 & mask_SORT_1; + SORT_1 var_729_arg_1 = var_728; + SORT_1 var_729 = var_729_arg_0 | var_729_arg_1; + SORT_4 var_595_arg_0 = var_257; + SORT_4 var_595_arg_1 = var_205; + SORT_6 var_595 = ((SORT_6)var_595_arg_0 << 16) | var_595_arg_1; + SORT_6 var_596_arg_0 = var_595; + var_596_arg_0 = (var_596_arg_0 & msb_SORT_6) ? (var_596_arg_0 | ~mask_SORT_6) : (var_596_arg_0 & mask_SORT_6); + SORT_6 var_596_arg_1 = var_207; + SORT_6 var_596 = (int)var_596_arg_0 >> var_596_arg_1; + var_596 = (var_596_arg_0 & msb_SORT_6) ? (var_596 | ~(mask_SORT_6 >> var_596_arg_1)) : var_596; + SORT_6 var_931_arg_0 = var_213; + SORT_6 var_931_arg_1 = var_596; + SORT_1 var_931 = var_931_arg_0 == var_931_arg_1; + SORT_6 var_918_arg_0 = var_213; + SORT_6 var_918_arg_1 = var_596; + SORT_6 var_918 = var_918_arg_0 + var_918_arg_1; + SORT_6 var_932_arg_0 = var_213; + SORT_6 var_932_arg_1 = var_918; + SORT_1 var_932 = var_932_arg_0 == var_932_arg_1; + SORT_1 var_933_arg_0 = var_931; + SORT_1 var_933_arg_1 = var_932; + SORT_1 var_933 = var_933_arg_0 | var_933_arg_1; + SORT_1 var_934_arg_0 = input_594; + SORT_1 var_934_arg_1 = var_933; + SORT_1 var_934 = var_934_arg_0 & var_934_arg_1; + var_934 = var_934 & mask_SORT_1; + SORT_6 var_919_arg_0 = var_249; + SORT_6 var_919_arg_1 = var_918; + SORT_1 var_919 = var_919_arg_0 == var_919_arg_1; + SORT_6 var_917_arg_0 = var_249; + SORT_6 var_917_arg_1 = var_596; + SORT_1 var_917 = var_917_arg_0 == var_917_arg_1; + SORT_1 var_920_arg_0 = var_917; + SORT_1 var_920_arg_1 = var_919; + SORT_1 var_920 = var_920_arg_0 | var_920_arg_1; + SORT_1 var_921_arg_0 = input_594; + SORT_1 var_921_arg_1 = var_920; + SORT_1 var_921 = var_921_arg_0 & var_921_arg_1; + var_921 = var_921 & mask_SORT_1; + SORT_6 var_597_arg_0 = var_248; + SORT_6 var_597_arg_1 = var_596; + SORT_1 var_597 = var_597_arg_0 == var_597_arg_1; + SORT_4 var_1018_arg_0 = input_147; + SORT_4 var_1018_arg_1 = var_205; + SORT_6 var_1018 = ((SORT_6)var_1018_arg_0 << 16) | var_1018_arg_1; + SORT_6 var_1019_arg_0 = var_1018; + var_1019_arg_0 = (var_1019_arg_0 & msb_SORT_6) ? (var_1019_arg_0 | ~mask_SORT_6) : (var_1019_arg_0 & mask_SORT_6); + SORT_6 var_1019_arg_1 = var_207; + SORT_6 var_1019 = (int)var_1019_arg_0 >> var_1019_arg_1; + var_1019 = (var_1019_arg_0 & msb_SORT_6) ? (var_1019 | ~(mask_SORT_6 >> var_1019_arg_1)) : var_1019; + SORT_6 var_1025_arg_0 = var_1019; + SORT_6 var_1025_arg_1 = var_1024; + SORT_1 var_1025 = var_1025_arg_0 == var_1025_arg_1; + SORT_6 var_1022_arg_0 = var_1019; + SORT_6 var_1022_arg_1 = var_1021; + SORT_1 var_1022 = var_1022_arg_0 == var_1022_arg_1; + SORT_1 var_1026_arg_0 = var_1022; + SORT_1 var_1026_arg_1 = var_1025; + SORT_1 var_1026 = var_1026_arg_0 | var_1026_arg_1; + SORT_1 var_254_arg_0 = var_252; + SORT_4 var_254_arg_1 = var_253; + SORT_4 var_254_arg_2 = input_147; + SORT_4 var_254 = var_254_arg_0 ? var_254_arg_1 : var_254_arg_2; + SORT_1 var_519_arg_0 = input_441; + SORT_4 var_519_arg_1 = var_299; + SORT_4 var_519_arg_2 = var_254; + SORT_4 var_519 = var_519_arg_0 ? var_519_arg_1 : var_519_arg_2; + SORT_4 var_562_arg_0 = var_519; + SORT_4 var_562_arg_1 = var_205; + SORT_6 var_562 = ((SORT_6)var_562_arg_0 << 16) | var_562_arg_1; + SORT_6 var_563_arg_0 = var_562; + var_563_arg_0 = (var_563_arg_0 & msb_SORT_6) ? (var_563_arg_0 | ~mask_SORT_6) : (var_563_arg_0 & mask_SORT_6); + SORT_6 var_563_arg_1 = var_207; + SORT_6 var_563 = (int)var_563_arg_0 >> var_563_arg_1; + var_563 = (var_563_arg_0 & msb_SORT_6) ? (var_563 | ~(mask_SORT_6 >> var_563_arg_1)) : var_563; + SORT_6 var_564_arg_0 = var_248; + SORT_6 var_564_arg_1 = var_563; + SORT_1 var_564 = var_564_arg_0 == var_564_arg_1; + SORT_1 var_565_arg_0 = var_561; + SORT_1 var_565_arg_1 = var_564; + SORT_1 var_565 = var_565_arg_0 & var_565_arg_1; + SORT_1 var_566_arg_0 = var_555; + SORT_1 var_566_arg_1 = var_565; + SORT_1 var_566 = var_566_arg_0 & var_566_arg_1; + SORT_1 var_567_arg_0 = ~input_554; + var_567_arg_0 = var_567_arg_0 & mask_SORT_1; + SORT_1 var_567_arg_1 = var_566; + SORT_1 var_567 = var_567_arg_0 | var_567_arg_1; + SORT_1 var_541_arg_0 = var_540; + SORT_4 var_541_arg_1 = var_519; + SORT_4 var_541_arg_2 = var_257; + SORT_4 var_541 = var_541_arg_0 ? var_541_arg_1 : var_541_arg_2; + SORT_4 var_542_arg_0 = var_541; + SORT_4 var_542_arg_1 = var_205; + SORT_6 var_542 = ((SORT_6)var_542_arg_0 << 16) | var_542_arg_1; + SORT_6 var_543_arg_0 = var_542; + var_543_arg_0 = (var_543_arg_0 & msb_SORT_6) ? (var_543_arg_0 | ~mask_SORT_6) : (var_543_arg_0 & mask_SORT_6); + SORT_6 var_543_arg_1 = var_207; + SORT_6 var_543 = (int)var_543_arg_0 >> var_543_arg_1; + var_543 = (var_543_arg_0 & msb_SORT_6) ? (var_543 | ~(mask_SORT_6 >> var_543_arg_1)) : var_543; + SORT_1 var_520_arg_0 = var_518; + SORT_4 var_520_arg_1 = var_519; + SORT_4 var_520_arg_2 = var_257; + SORT_4 var_520 = var_520_arg_0 ? var_520_arg_1 : var_520_arg_2; + SORT_4 var_521_arg_0 = var_520; + SORT_4 var_521_arg_1 = var_205; + SORT_6 var_521 = ((SORT_6)var_521_arg_0 << 16) | var_521_arg_1; + SORT_6 var_522_arg_0 = var_521; + var_522_arg_0 = (var_522_arg_0 & msb_SORT_6) ? (var_522_arg_0 | ~mask_SORT_6) : (var_522_arg_0 & mask_SORT_6); + SORT_6 var_522_arg_1 = var_207; + SORT_6 var_522 = (int)var_522_arg_0 >> var_522_arg_1; + var_522 = (var_522_arg_0 & msb_SORT_6) ? (var_522 | ~(mask_SORT_6 >> var_522_arg_1)) : var_522; + SORT_4 var_448_arg_0 = var_254; + SORT_4 var_448_arg_1 = var_205; + SORT_6 var_448 = ((SORT_6)var_448_arg_0 << 16) | var_448_arg_1; + SORT_6 var_449_arg_0 = var_448; + var_449_arg_0 = (var_449_arg_0 & msb_SORT_6) ? (var_449_arg_0 | ~mask_SORT_6) : (var_449_arg_0 & mask_SORT_6); + SORT_6 var_449_arg_1 = var_207; + SORT_6 var_449 = (int)var_449_arg_0 >> var_449_arg_1; + var_449 = (var_449_arg_0 & msb_SORT_6) ? (var_449 | ~(mask_SORT_6 >> var_449_arg_1)) : var_449; + SORT_6 var_935_arg_0 = var_213; + SORT_6 var_935_arg_1 = var_449; + SORT_1 var_935 = var_935_arg_0 == var_935_arg_1; + SORT_6 var_923_arg_0 = var_213; + SORT_6 var_923_arg_1 = var_449; + SORT_6 var_923 = var_923_arg_0 + var_923_arg_1; + SORT_6 var_936_arg_0 = var_213; + SORT_6 var_936_arg_1 = var_923; + SORT_1 var_936 = var_936_arg_0 == var_936_arg_1; + SORT_1 var_937_arg_0 = var_935; + SORT_1 var_937_arg_1 = var_936; + SORT_1 var_937 = var_937_arg_0 | var_937_arg_1; + SORT_1 var_938_arg_0 = input_441; + SORT_1 var_938_arg_1 = var_937; + SORT_1 var_938 = var_938_arg_0 & var_938_arg_1; + var_938 = var_938 & mask_SORT_1; + SORT_6 var_924_arg_0 = var_249; + SORT_6 var_924_arg_1 = var_923; + SORT_1 var_924 = var_924_arg_0 == var_924_arg_1; + SORT_6 var_922_arg_0 = var_249; + SORT_6 var_922_arg_1 = var_449; + SORT_1 var_922 = var_922_arg_0 == var_922_arg_1; + SORT_1 var_925_arg_0 = var_922; + SORT_1 var_925_arg_1 = var_924; + SORT_1 var_925 = var_925_arg_0 | var_925_arg_1; + SORT_1 var_926_arg_0 = input_441; + SORT_1 var_926_arg_1 = var_925; + SORT_1 var_926 = var_926_arg_0 & var_926_arg_1; + var_926 = var_926 & mask_SORT_1; + SORT_6 var_450_arg_0 = var_248; + SORT_6 var_450_arg_1 = var_449; + SORT_1 var_450 = var_450_arg_0 == var_450_arg_1; + SORT_1 var_733_arg_0 = input_716; + SORT_4 var_733_arg_1 = var_107; + SORT_4 var_733_arg_2 = var_720; + SORT_4 var_733 = var_733_arg_0 ? var_733_arg_1 : var_733_arg_2; + SORT_1 var_984_arg_0 = input_731; + SORT_4 var_984_arg_1 = var_107; + SORT_4 var_984_arg_2 = var_733; + SORT_4 var_984 = var_984_arg_0 ? var_984_arg_1 : var_984_arg_2; + SORT_4 var_734_arg_0 = var_733; + SORT_4 var_734_arg_1 = var_205; + SORT_6 var_734 = ((SORT_6)var_734_arg_0 << 16) | var_734_arg_1; + SORT_6 var_735_arg_0 = var_734; + var_735_arg_0 = (var_735_arg_0 & msb_SORT_6) ? (var_735_arg_0 | ~mask_SORT_6) : (var_735_arg_0 & mask_SORT_6); + SORT_6 var_735_arg_1 = var_207; + SORT_6 var_735 = (int)var_735_arg_0 >> var_735_arg_1; + var_735 = (var_735_arg_0 & msb_SORT_6) ? (var_735 | ~(mask_SORT_6 >> var_735_arg_1)) : var_735; + SORT_6 var_736_arg_0 = var_204; + SORT_6 var_736_arg_1 = var_735; + SORT_1 var_736 = var_736_arg_0 == var_736_arg_1; + SORT_1 var_626_arg_0 = input_602; + SORT_4 var_626_arg_1 = var_107; + SORT_4 var_626_arg_2 = var_609; + SORT_4 var_626 = var_626_arg_0 ? var_626_arg_1 : var_626_arg_2; + SORT_1 var_747_arg_0 = input_716; + SORT_4 var_747_arg_1 = var_253; + SORT_4 var_747_arg_2 = var_626; + SORT_4 var_747 = var_747_arg_0 ? var_747_arg_1 : var_747_arg_2; + SORT_1 var_949_arg_0 = input_731; + SORT_4 var_949_arg_1 = var_747; + SORT_4 var_949_arg_2 = var_604; + SORT_4 var_949 = var_949_arg_0 ? var_949_arg_1 : var_949_arg_2; + SORT_1 var_748_arg_0 = input_731; + SORT_4 var_748_arg_1 = var_253; + SORT_4 var_748_arg_2 = var_747; + SORT_4 var_748 = var_748_arg_0 ? var_748_arg_1 : var_748_arg_2; + SORT_4 var_749_arg_0 = var_748; + SORT_4 var_749_arg_1 = var_205; + SORT_6 var_749 = ((SORT_6)var_749_arg_0 << 16) | var_749_arg_1; + SORT_6 var_750_arg_0 = var_749; + var_750_arg_0 = (var_750_arg_0 & msb_SORT_6) ? (var_750_arg_0 | ~mask_SORT_6) : (var_750_arg_0 & mask_SORT_6); + SORT_6 var_750_arg_1 = var_207; + SORT_6 var_750 = (int)var_750_arg_0 >> var_750_arg_1; + var_750 = (var_750_arg_0 & msb_SORT_6) ? (var_750 | ~(mask_SORT_6 >> var_750_arg_1)) : var_750; + SORT_6 var_751_arg_0 = var_248; + SORT_6 var_751_arg_1 = var_750; + SORT_1 var_751 = var_751_arg_0 == var_751_arg_1; + SORT_1 var_737_arg_0 = input_716; + SORT_4 var_737_arg_1 = var_626; + SORT_4 var_737_arg_2 = var_680; + SORT_4 var_737 = var_737_arg_0 ? var_737_arg_1 : var_737_arg_2; + SORT_4 var_738_arg_0 = var_737; + SORT_4 var_738_arg_1 = var_205; + SORT_6 var_738 = ((SORT_6)var_738_arg_0 << 16) | var_738_arg_1; + SORT_6 var_739_arg_0 = var_738; + var_739_arg_0 = (var_739_arg_0 & msb_SORT_6) ? (var_739_arg_0 | ~mask_SORT_6) : (var_739_arg_0 & mask_SORT_6); + SORT_6 var_739_arg_1 = var_207; + SORT_6 var_739 = (int)var_739_arg_0 >> var_739_arg_1; + var_739 = (var_739_arg_0 & msb_SORT_6) ? (var_739 | ~(mask_SORT_6 >> var_739_arg_1)) : var_739; + SORT_6 var_740_arg_0 = var_248; + SORT_6 var_740_arg_1 = var_739; + SORT_1 var_740 = var_740_arg_0 == var_740_arg_1; + SORT_1 var_741_arg_0 = var_736; + SORT_1 var_741_arg_1 = ~var_740; + var_741_arg_1 = var_741_arg_1 & mask_SORT_1; + SORT_1 var_741 = var_741_arg_0 & var_741_arg_1; + SORT_1 var_742_arg_0 = var_732; + SORT_1 var_742_arg_1 = var_741; + SORT_1 var_742 = var_742_arg_0 & var_742_arg_1; + SORT_1 var_743_arg_0 = ~input_731; + var_743_arg_0 = var_743_arg_0 & mask_SORT_1; + SORT_1 var_743_arg_1 = var_742; + SORT_1 var_743 = var_743_arg_0 | var_743_arg_1; + SORT_4 var_627_arg_0 = var_626; + SORT_4 var_627_arg_1 = var_205; + SORT_6 var_627 = ((SORT_6)var_627_arg_0 << 16) | var_627_arg_1; + SORT_6 var_628_arg_0 = var_627; + var_628_arg_0 = (var_628_arg_0 & msb_SORT_6) ? (var_628_arg_0 | ~mask_SORT_6) : (var_628_arg_0 & mask_SORT_6); + SORT_6 var_628_arg_1 = var_207; + SORT_6 var_628 = (int)var_628_arg_0 >> var_628_arg_1; + var_628 = (var_628_arg_0 & msb_SORT_6) ? (var_628 | ~(mask_SORT_6 >> var_628_arg_1)) : var_628; + SORT_6 var_629_arg_0 = var_248; + SORT_6 var_629_arg_1 = var_628; + SORT_1 var_629 = var_629_arg_0 == var_629_arg_1; + SORT_1 var_571_arg_0 = input_554; + SORT_4 var_571_arg_1 = var_107; + SORT_4 var_571_arg_2 = var_558; + SORT_4 var_571 = var_571_arg_0 ? var_571_arg_1 : var_571_arg_2; + SORT_1 var_981_arg_0 = input_569; + SORT_4 var_981_arg_1 = var_107; + SORT_4 var_981_arg_2 = var_571; + SORT_4 var_981 = var_981_arg_0 ? var_981_arg_1 : var_981_arg_2; + SORT_4 var_572_arg_0 = var_571; + SORT_4 var_572_arg_1 = var_205; + SORT_6 var_572 = ((SORT_6)var_572_arg_0 << 16) | var_572_arg_1; + SORT_6 var_573_arg_0 = var_572; + var_573_arg_0 = (var_573_arg_0 & msb_SORT_6) ? (var_573_arg_0 | ~mask_SORT_6) : (var_573_arg_0 & mask_SORT_6); + SORT_6 var_573_arg_1 = var_207; + SORT_6 var_573 = (int)var_573_arg_0 >> var_573_arg_1; + var_573 = (var_573_arg_0 & msb_SORT_6) ? (var_573 | ~(mask_SORT_6 >> var_573_arg_1)) : var_573; + SORT_6 var_574_arg_0 = var_204; + SORT_6 var_574_arg_1 = var_573; + SORT_1 var_574 = var_574_arg_0 == var_574_arg_1; + SORT_1 var_480_arg_0 = input_455; + SORT_4 var_480_arg_1 = var_107; + SORT_4 var_480_arg_2 = var_462; + SORT_4 var_480 = var_480_arg_0 ? var_480_arg_1 : var_480_arg_2; + SORT_1 var_585_arg_0 = input_554; + SORT_4 var_585_arg_1 = var_253; + SORT_4 var_585_arg_2 = var_480; + SORT_4 var_585 = var_585_arg_0 ? var_585_arg_1 : var_585_arg_2; + SORT_1 var_686_arg_0 = input_569; + SORT_4 var_686_arg_1 = var_585; + SORT_4 var_686_arg_2 = var_457; + SORT_4 var_686 = var_686_arg_0 ? var_686_arg_1 : var_686_arg_2; + SORT_1 var_707_arg_0 = var_702; + SORT_4 var_707_arg_1 = var_686; + SORT_4 var_707_arg_2 = var_604; + SORT_4 var_707 = var_707_arg_0 ? var_707_arg_1 : var_707_arg_2; + SORT_4 var_708_arg_0 = var_707; + SORT_4 var_708_arg_1 = var_205; + SORT_6 var_708 = ((SORT_6)var_708_arg_0 << 16) | var_708_arg_1; + SORT_6 var_709_arg_0 = var_708; + var_709_arg_0 = (var_709_arg_0 & msb_SORT_6) ? (var_709_arg_0 | ~mask_SORT_6) : (var_709_arg_0 & mask_SORT_6); + SORT_6 var_709_arg_1 = var_207; + SORT_6 var_709 = (int)var_709_arg_0 >> var_709_arg_1; + var_709 = (var_709_arg_0 & msb_SORT_6) ? (var_709 | ~(mask_SORT_6 >> var_709_arg_1)) : var_709; + SORT_6 var_710_arg_0 = var_628; + SORT_6 var_710_arg_1 = var_709; + SORT_1 var_710 = var_710_arg_0 == var_710_arg_1; + SORT_1 var_687_arg_0 = var_679; + SORT_4 var_687_arg_1 = var_686; + SORT_4 var_687_arg_2 = var_604; + SORT_4 var_687 = var_687_arg_0 ? var_687_arg_1 : var_687_arg_2; + SORT_4 var_688_arg_0 = var_687; + SORT_4 var_688_arg_1 = var_205; + SORT_6 var_688 = ((SORT_6)var_688_arg_0 << 16) | var_688_arg_1; + SORT_6 var_689_arg_0 = var_688; + var_689_arg_0 = (var_689_arg_0 & msb_SORT_6) ? (var_689_arg_0 | ~mask_SORT_6) : (var_689_arg_0 & mask_SORT_6); + SORT_6 var_689_arg_1 = var_207; + SORT_6 var_689 = (int)var_689_arg_0 >> var_689_arg_1; + var_689 = (var_689_arg_0 & msb_SORT_6) ? (var_689 | ~(mask_SORT_6 >> var_689_arg_1)) : var_689; + SORT_6 var_690_arg_0 = var_628; + SORT_6 var_690_arg_1 = var_689; + SORT_1 var_690 = var_690_arg_0 == var_690_arg_1; + SORT_1 var_586_arg_0 = input_569; + SORT_4 var_586_arg_1 = var_253; + SORT_4 var_586_arg_2 = var_585; + SORT_4 var_586 = var_586_arg_0 ? var_586_arg_1 : var_586_arg_2; + SORT_4 var_587_arg_0 = var_586; + SORT_4 var_587_arg_1 = var_205; + SORT_6 var_587 = ((SORT_6)var_587_arg_0 << 16) | var_587_arg_1; + SORT_6 var_588_arg_0 = var_587; + var_588_arg_0 = (var_588_arg_0 & msb_SORT_6) ? (var_588_arg_0 | ~mask_SORT_6) : (var_588_arg_0 & mask_SORT_6); + SORT_6 var_588_arg_1 = var_207; + SORT_6 var_588 = (int)var_588_arg_0 >> var_588_arg_1; + var_588 = (var_588_arg_0 & msb_SORT_6) ? (var_588 | ~(mask_SORT_6 >> var_588_arg_1)) : var_588; + SORT_6 var_589_arg_0 = var_248; + SORT_6 var_589_arg_1 = var_588; + SORT_1 var_589 = var_589_arg_0 == var_589_arg_1; + SORT_1 var_575_arg_0 = input_554; + SORT_4 var_575_arg_1 = var_480; + SORT_4 var_575_arg_2 = var_519; + SORT_4 var_575 = var_575_arg_0 ? var_575_arg_1 : var_575_arg_2; + SORT_1 var_703_arg_0 = var_702; + SORT_4 var_703_arg_1 = var_575; + SORT_4 var_703_arg_2 = var_680; + SORT_4 var_703 = var_703_arg_0 ? var_703_arg_1 : var_703_arg_2; + SORT_4 var_704_arg_0 = var_703; + SORT_4 var_704_arg_1 = var_205; + SORT_6 var_704 = ((SORT_6)var_704_arg_0 << 16) | var_704_arg_1; + SORT_6 var_705_arg_0 = var_704; + var_705_arg_0 = (var_705_arg_0 & msb_SORT_6) ? (var_705_arg_0 | ~mask_SORT_6) : (var_705_arg_0 & mask_SORT_6); + SORT_6 var_705_arg_1 = var_207; + SORT_6 var_705 = (int)var_705_arg_0 >> var_705_arg_1; + var_705 = (var_705_arg_0 & msb_SORT_6) ? (var_705 | ~(mask_SORT_6 >> var_705_arg_1)) : var_705; + SORT_6 var_706_arg_0 = var_628; + SORT_6 var_706_arg_1 = var_705; + SORT_1 var_706 = var_706_arg_0 == var_706_arg_1; + SORT_1 var_711_arg_0 = var_706; + SORT_1 var_711_arg_1 = var_710; + SORT_1 var_711 = var_711_arg_0 | var_711_arg_1; + SORT_1 var_712_arg_0 = ~var_701; + var_712_arg_0 = var_712_arg_0 & mask_SORT_1; + SORT_1 var_712_arg_1 = var_711; + SORT_1 var_712 = var_712_arg_0 & var_712_arg_1; + SORT_1 var_713_arg_0 = var_675; + SORT_1 var_713_arg_1 = var_712; + SORT_1 var_713 = var_713_arg_0 & var_713_arg_1; + SORT_1 var_714_arg_0 = ~input_695; + var_714_arg_0 = var_714_arg_0 & mask_SORT_1; + SORT_1 var_714_arg_1 = var_713; + SORT_1 var_714 = var_714_arg_0 | var_714_arg_1; + SORT_1 var_681_arg_0 = var_679; + SORT_4 var_681_arg_1 = var_575; + SORT_4 var_681_arg_2 = var_680; + SORT_4 var_681 = var_681_arg_0 ? var_681_arg_1 : var_681_arg_2; + SORT_4 var_682_arg_0 = var_681; + SORT_4 var_682_arg_1 = var_205; + SORT_6 var_682 = ((SORT_6)var_682_arg_0 << 16) | var_682_arg_1; + SORT_6 var_683_arg_0 = var_682; + var_683_arg_0 = (var_683_arg_0 & msb_SORT_6) ? (var_683_arg_0 | ~mask_SORT_6) : (var_683_arg_0 & mask_SORT_6); + SORT_6 var_683_arg_1 = var_207; + SORT_6 var_683 = (int)var_683_arg_0 >> var_683_arg_1; + var_683 = (var_683_arg_0 & msb_SORT_6) ? (var_683 | ~(mask_SORT_6 >> var_683_arg_1)) : var_683; + SORT_6 var_684_arg_0 = var_628; + SORT_6 var_684_arg_1 = var_683; + SORT_1 var_684 = var_684_arg_0 == var_684_arg_1; + SORT_1 var_685_arg_0 = ~var_678; + var_685_arg_0 = var_685_arg_0 & mask_SORT_1; + SORT_1 var_685_arg_1 = ~var_684; + var_685_arg_1 = var_685_arg_1 & mask_SORT_1; + SORT_1 var_685 = var_685_arg_0 & var_685_arg_1; + SORT_1 var_691_arg_0 = var_685; + SORT_1 var_691_arg_1 = ~var_690; + var_691_arg_1 = var_691_arg_1 & mask_SORT_1; + SORT_1 var_691 = var_691_arg_0 & var_691_arg_1; + SORT_1 var_692_arg_0 = var_675; + SORT_1 var_692_arg_1 = var_691; + SORT_1 var_692 = var_692_arg_0 & var_692_arg_1; + SORT_1 var_693_arg_0 = ~input_674; + var_693_arg_0 = var_693_arg_0 & mask_SORT_1; + SORT_1 var_693_arg_1 = var_692; + SORT_1 var_693 = var_693_arg_0 | var_693_arg_1; + SORT_4 var_576_arg_0 = var_575; + SORT_4 var_576_arg_1 = var_205; + SORT_6 var_576 = ((SORT_6)var_576_arg_0 << 16) | var_576_arg_1; + SORT_6 var_577_arg_0 = var_576; + var_577_arg_0 = (var_577_arg_0 & msb_SORT_6) ? (var_577_arg_0 | ~mask_SORT_6) : (var_577_arg_0 & mask_SORT_6); + SORT_6 var_577_arg_1 = var_207; + SORT_6 var_577 = (int)var_577_arg_0 >> var_577_arg_1; + var_577 = (var_577_arg_0 & msb_SORT_6) ? (var_577 | ~(mask_SORT_6 >> var_577_arg_1)) : var_577; + SORT_6 var_578_arg_0 = var_248; + SORT_6 var_578_arg_1 = var_577; + SORT_1 var_578 = var_578_arg_0 == var_578_arg_1; + SORT_1 var_579_arg_0 = var_574; + SORT_1 var_579_arg_1 = ~var_578; + var_579_arg_1 = var_579_arg_1 & mask_SORT_1; + SORT_1 var_579 = var_579_arg_0 & var_579_arg_1; + SORT_1 var_580_arg_0 = var_570; + SORT_1 var_580_arg_1 = var_579; + SORT_1 var_580 = var_580_arg_0 & var_580_arg_1; + SORT_1 var_581_arg_0 = ~input_569; + var_581_arg_0 = var_581_arg_0 & mask_SORT_1; + SORT_1 var_581_arg_1 = var_580; + SORT_1 var_581 = var_581_arg_0 | var_581_arg_1; + SORT_4 var_481_arg_0 = var_480; + SORT_4 var_481_arg_1 = var_205; + SORT_6 var_481 = ((SORT_6)var_481_arg_0 << 16) | var_481_arg_1; + SORT_6 var_482_arg_0 = var_481; + var_482_arg_0 = (var_482_arg_0 & msb_SORT_6) ? (var_482_arg_0 | ~mask_SORT_6) : (var_482_arg_0 & mask_SORT_6); + SORT_6 var_482_arg_1 = var_207; + SORT_6 var_482 = (int)var_482_arg_0 >> var_482_arg_1; + var_482 = (var_482_arg_0 & msb_SORT_6) ? (var_482 | ~(mask_SORT_6 >> var_482_arg_1)) : var_482; + SORT_6 var_548_arg_0 = var_482; + SORT_6 var_548_arg_1 = var_547; + SORT_1 var_548 = var_548_arg_0 == var_548_arg_1; + SORT_6 var_544_arg_0 = var_482; + SORT_6 var_544_arg_1 = var_543; + SORT_1 var_544 = var_544_arg_0 == var_544_arg_1; + SORT_1 var_549_arg_0 = var_544; + SORT_1 var_549_arg_1 = var_548; + SORT_1 var_549 = var_549_arg_0 | var_549_arg_1; + SORT_1 var_550_arg_0 = ~var_539; + var_550_arg_0 = var_550_arg_0 & mask_SORT_1; + SORT_1 var_550_arg_1 = var_549; + SORT_1 var_550 = var_550_arg_0 & var_550_arg_1; + SORT_1 var_551_arg_0 = var_514; + SORT_1 var_551_arg_1 = var_550; + SORT_1 var_551 = var_551_arg_0 & var_551_arg_1; + SORT_1 var_552_arg_0 = ~input_533; + var_552_arg_0 = var_552_arg_0 & mask_SORT_1; + SORT_1 var_552_arg_1 = var_551; + SORT_1 var_552 = var_552_arg_0 | var_552_arg_1; + SORT_6 var_528_arg_0 = var_482; + SORT_6 var_528_arg_1 = var_527; + SORT_1 var_528 = var_528_arg_0 == var_528_arg_1; + SORT_6 var_523_arg_0 = var_482; + SORT_6 var_523_arg_1 = var_522; + SORT_1 var_523 = var_523_arg_0 == var_523_arg_1; + SORT_1 var_524_arg_0 = ~var_517; + var_524_arg_0 = var_524_arg_0 & mask_SORT_1; + SORT_1 var_524_arg_1 = ~var_523; + var_524_arg_1 = var_524_arg_1 & mask_SORT_1; + SORT_1 var_524 = var_524_arg_0 & var_524_arg_1; + SORT_1 var_529_arg_0 = var_524; + SORT_1 var_529_arg_1 = ~var_528; + var_529_arg_1 = var_529_arg_1 & mask_SORT_1; + SORT_1 var_529 = var_529_arg_0 & var_529_arg_1; + SORT_1 var_530_arg_0 = var_514; + SORT_1 var_530_arg_1 = var_529; + SORT_1 var_530 = var_530_arg_0 & var_530_arg_1; + SORT_1 var_531_arg_0 = ~input_513; + var_531_arg_0 = var_531_arg_0 & mask_SORT_1; + SORT_1 var_531_arg_1 = var_530; + SORT_1 var_531 = var_531_arg_0 | var_531_arg_1; + SORT_6 var_483_arg_0 = var_248; + SORT_6 var_483_arg_1 = var_482; + SORT_1 var_483 = var_483_arg_0 == var_483_arg_1; + SORT_1 var_225_arg_0 = input_212; + SORT_4 var_225_arg_1 = var_107; + SORT_4 var_225_arg_2 = var_216; + SORT_4 var_225 = var_225_arg_0 ? var_225_arg_1 : var_225_arg_2; + SORT_4 var_226_arg_0 = var_225; + SORT_4 var_226_arg_1 = var_205; + SORT_6 var_226 = ((SORT_6)var_226_arg_0 << 16) | var_226_arg_1; + SORT_6 var_227_arg_0 = var_226; + var_227_arg_0 = (var_227_arg_0 & msb_SORT_6) ? (var_227_arg_0 | ~mask_SORT_6) : (var_227_arg_0 & mask_SORT_6); + SORT_6 var_227_arg_1 = var_207; + SORT_6 var_227 = (int)var_227_arg_0 >> var_227_arg_1; + var_227 = (var_227_arg_0 & msb_SORT_6) ? (var_227 | ~(mask_SORT_6 >> var_227_arg_1)) : var_227; + SORT_6 var_383_arg_0 = var_213; + SORT_6 var_383_arg_1 = var_227; + SORT_1 var_383 = var_383_arg_0 == var_383_arg_1; + SORT_1 var_384_arg_0 = input_223; + SORT_1 var_384_arg_1 = var_383; + SORT_1 var_384 = var_384_arg_0 & var_384_arg_1; + var_384 = var_384 & mask_SORT_1; + SORT_6 var_368_arg_0 = var_249; + SORT_6 var_368_arg_1 = var_227; + SORT_1 var_368 = var_368_arg_0 == var_368_arg_1; + SORT_1 var_369_arg_0 = input_223; + SORT_1 var_369_arg_1 = var_368; + SORT_1 var_369 = var_369_arg_0 & var_369_arg_1; + var_369 = var_369 & mask_SORT_1; + SORT_6 var_233_arg_0 = var_213; + SORT_6 var_233_arg_1 = var_227; + SORT_6 var_233 = var_233_arg_0 + var_233_arg_1; + SORT_6 var_234_arg_0 = var_233; + SORT_4 var_234 = var_234_arg_0 >> 0; + SORT_1 var_235_arg_0 = input_223; + SORT_4 var_235_arg_1 = var_234; + SORT_4 var_235_arg_2 = var_225; + SORT_4 var_235 = var_235_arg_0 ? var_235_arg_1 : var_235_arg_2; + SORT_1 var_244_arg_0 = input_232; + SORT_4 var_244_arg_1 = var_107; + SORT_4 var_244_arg_2 = var_235; + SORT_4 var_244 = var_244_arg_0 ? var_244_arg_1 : var_244_arg_2; + SORT_4 var_366_arg_0 = var_244; + SORT_3 var_366 = var_366_arg_0 >> 0; + SORT_4 var_245_arg_0 = var_244; + SORT_4 var_245_arg_1 = var_205; + SORT_6 var_245 = ((SORT_6)var_245_arg_0 << 16) | var_245_arg_1; + SORT_6 var_246_arg_0 = var_245; + var_246_arg_0 = (var_246_arg_0 & msb_SORT_6) ? (var_246_arg_0 | ~mask_SORT_6) : (var_246_arg_0 & mask_SORT_6); + SORT_6 var_246_arg_1 = var_207; + SORT_6 var_246 = (int)var_246_arg_0 >> var_246_arg_1; + var_246 = (var_246_arg_0 & msb_SORT_6) ? (var_246 | ~(mask_SORT_6 >> var_246_arg_1)) : var_246; + SORT_6 var_267_arg_0 = var_213; + SORT_6 var_267_arg_1 = var_246; + SORT_6 var_267 = var_267_arg_0 + var_267_arg_1; + SORT_6 var_268_arg_0 = var_267; + SORT_4 var_268 = var_268_arg_0 >> 0; + SORT_1 var_269_arg_0 = input_242; + SORT_4 var_269_arg_1 = var_268; + SORT_4 var_269_arg_2 = var_244; + SORT_4 var_269 = var_269_arg_0 ? var_269_arg_1 : var_269_arg_2; + SORT_4 var_270_arg_0 = var_269; + SORT_4 var_270_arg_1 = var_205; + SORT_6 var_270 = ((SORT_6)var_270_arg_0 << 16) | var_270_arg_1; + SORT_6 var_271_arg_0 = var_270; + var_271_arg_0 = (var_271_arg_0 & msb_SORT_6) ? (var_271_arg_0 | ~mask_SORT_6) : (var_271_arg_0 & mask_SORT_6); + SORT_6 var_271_arg_1 = var_207; + SORT_6 var_271 = (int)var_271_arg_0 >> var_271_arg_1; + var_271 = (var_271_arg_0 & msb_SORT_6) ? (var_271 | ~(mask_SORT_6 >> var_271_arg_1)) : var_271; + SORT_6 var_283_arg_0 = var_213; + SORT_6 var_283_arg_1 = var_271; + SORT_6 var_283 = var_283_arg_0 + var_283_arg_1; + SORT_6 var_284_arg_0 = var_283; + SORT_4 var_284 = var_284_arg_0 >> 0; + SORT_1 var_285_arg_0 = input_266; + SORT_4 var_285_arg_1 = var_284; + SORT_4 var_285_arg_2 = var_269; + SORT_4 var_285 = var_285_arg_0 ? var_285_arg_1 : var_285_arg_2; + SORT_1 var_294_arg_0 = input_282; + SORT_4 var_294_arg_1 = var_107; + SORT_4 var_294_arg_2 = var_285; + SORT_4 var_294 = var_294_arg_0 ? var_294_arg_1 : var_294_arg_2; + SORT_4 var_357_arg_0 = var_294; + SORT_3 var_357 = var_357_arg_0 >> 0; + SORT_4 var_295_arg_0 = var_294; + SORT_4 var_295_arg_1 = var_205; + SORT_6 var_295 = ((SORT_6)var_295_arg_0 << 16) | var_295_arg_1; + SORT_6 var_296_arg_0 = var_295; + var_296_arg_0 = (var_296_arg_0 & msb_SORT_6) ? (var_296_arg_0 | ~mask_SORT_6) : (var_296_arg_0 & mask_SORT_6); + SORT_6 var_296_arg_1 = var_207; + SORT_6 var_296 = (int)var_296_arg_0 >> var_296_arg_1; + var_296 = (var_296_arg_0 & msb_SORT_6) ? (var_296 | ~(mask_SORT_6 >> var_296_arg_1)) : var_296; + SORT_6 var_310_arg_0 = var_213; + SORT_6 var_310_arg_1 = var_296; + SORT_6 var_310 = var_310_arg_0 + var_310_arg_1; + SORT_6 var_311_arg_0 = var_310; + SORT_4 var_311 = var_311_arg_0 >> 0; + SORT_1 var_312_arg_0 = input_292; + SORT_4 var_312_arg_1 = var_311; + SORT_4 var_312_arg_2 = var_294; + SORT_4 var_312 = var_312_arg_0 ? var_312_arg_1 : var_312_arg_2; + SORT_4 var_313_arg_0 = var_312; + SORT_4 var_313_arg_1 = var_205; + SORT_6 var_313 = ((SORT_6)var_313_arg_0 << 16) | var_313_arg_1; + SORT_6 var_314_arg_0 = var_313; + var_314_arg_0 = (var_314_arg_0 & msb_SORT_6) ? (var_314_arg_0 | ~mask_SORT_6) : (var_314_arg_0 & mask_SORT_6); + SORT_6 var_314_arg_1 = var_207; + SORT_6 var_314 = (int)var_314_arg_0 >> var_314_arg_1; + var_314 = (var_314_arg_0 & msb_SORT_6) ? (var_314 | ~(mask_SORT_6 >> var_314_arg_1)) : var_314; + SORT_6 var_326_arg_0 = var_213; + SORT_6 var_326_arg_1 = var_314; + SORT_6 var_326 = var_326_arg_0 + var_326_arg_1; + SORT_6 var_327_arg_0 = var_326; + SORT_4 var_327 = var_327_arg_0 >> 0; + SORT_1 var_328_arg_0 = input_309; + SORT_4 var_328_arg_1 = var_327; + SORT_4 var_328_arg_2 = var_312; + SORT_4 var_328 = var_328_arg_0 ? var_328_arg_1 : var_328_arg_2; + SORT_1 var_345_arg_0 = input_325; + SORT_4 var_345_arg_1 = var_107; + SORT_4 var_345_arg_2 = var_328; + SORT_4 var_345 = var_345_arg_0 ? var_345_arg_1 : var_345_arg_2; + SORT_4 var_346_arg_0 = var_345; + SORT_4 var_346_arg_1 = var_205; + SORT_6 var_346 = ((SORT_6)var_346_arg_0 << 16) | var_346_arg_1; + SORT_6 var_347_arg_0 = var_346; + var_347_arg_0 = (var_347_arg_0 & msb_SORT_6) ? (var_347_arg_0 | ~mask_SORT_6) : (var_347_arg_0 & mask_SORT_6); + SORT_6 var_347_arg_1 = var_207; + SORT_6 var_347 = (int)var_347_arg_0 >> var_347_arg_1; + var_347 = (var_347_arg_0 & msb_SORT_6) ? (var_347 | ~(mask_SORT_6 >> var_347_arg_1)) : var_347; + SORT_6 var_395_arg_0 = var_213; + SORT_6 var_395_arg_1 = var_347; + SORT_6 var_395 = var_395_arg_0 + var_395_arg_1; + SORT_6 var_396_arg_0 = var_395; + SORT_4 var_396 = var_396_arg_0 >> 0; + SORT_1 var_397_arg_0 = input_343; + SORT_4 var_397_arg_1 = var_396; + SORT_4 var_397_arg_2 = var_345; + SORT_4 var_397 = var_397_arg_0 ? var_397_arg_1 : var_397_arg_2; + SORT_4 var_398_arg_0 = var_397; + SORT_4 var_398_arg_1 = var_205; + SORT_6 var_398 = ((SORT_6)var_398_arg_0 << 16) | var_398_arg_1; + SORT_6 var_399_arg_0 = var_398; + var_399_arg_0 = (var_399_arg_0 & msb_SORT_6) ? (var_399_arg_0 | ~mask_SORT_6) : (var_399_arg_0 & mask_SORT_6); + SORT_6 var_399_arg_1 = var_207; + SORT_6 var_399 = (int)var_399_arg_0 >> var_399_arg_1; + var_399 = (var_399_arg_0 & msb_SORT_6) ? (var_399 | ~(mask_SORT_6 >> var_399_arg_1)) : var_399; + SORT_6 var_410_arg_0 = var_213; + SORT_6 var_410_arg_1 = var_399; + SORT_6 var_410 = var_410_arg_0 + var_410_arg_1; + SORT_6 var_411_arg_0 = var_410; + SORT_4 var_411 = var_411_arg_0 >> 0; + SORT_1 var_412_arg_0 = input_394; + SORT_4 var_412_arg_1 = var_411; + SORT_4 var_412_arg_2 = var_397; + SORT_4 var_412 = var_412_arg_0 ? var_412_arg_1 : var_412_arg_2; + SORT_1 var_421_arg_0 = input_409; + SORT_4 var_421_arg_1 = var_107; + SORT_4 var_421_arg_2 = var_412; + SORT_4 var_421 = var_421_arg_0 ? var_421_arg_1 : var_421_arg_2; + SORT_4 var_422_arg_0 = var_421; + SORT_4 var_422_arg_1 = var_205; + SORT_6 var_422 = ((SORT_6)var_422_arg_0 << 16) | var_422_arg_1; + SORT_6 var_423_arg_0 = var_422; + var_423_arg_0 = (var_423_arg_0 & msb_SORT_6) ? (var_423_arg_0 | ~mask_SORT_6) : (var_423_arg_0 & mask_SORT_6); + SORT_6 var_423_arg_1 = var_207; + SORT_6 var_423 = (int)var_423_arg_0 >> var_423_arg_1; + var_423 = (var_423_arg_0 & msb_SORT_6) ? (var_423 | ~(mask_SORT_6 >> var_423_arg_1)) : var_423; + SORT_6 var_429_arg_0 = var_213; + SORT_6 var_429_arg_1 = var_423; + SORT_6 var_429 = var_429_arg_0 + var_429_arg_1; + SORT_6 var_430_arg_0 = var_429; + SORT_4 var_430 = var_430_arg_0 >> 0; + SORT_1 var_431_arg_0 = input_419; + SORT_4 var_431_arg_1 = var_430; + SORT_4 var_431_arg_2 = var_421; + SORT_4 var_431 = var_431_arg_0 ? var_431_arg_1 : var_431_arg_2; + SORT_1 var_978_arg_0 = input_428; + SORT_4 var_978_arg_1 = var_107; + SORT_4 var_978_arg_2 = var_431; + SORT_4 var_978 = var_978_arg_0 ? var_978_arg_1 : var_978_arg_2; + SORT_4 var_432_arg_0 = var_431; + SORT_4 var_432_arg_1 = var_205; + SORT_6 var_432 = ((SORT_6)var_432_arg_0 << 16) | var_432_arg_1; + SORT_6 var_433_arg_0 = var_432; + var_433_arg_0 = (var_433_arg_0 & msb_SORT_6) ? (var_433_arg_0 | ~mask_SORT_6) : (var_433_arg_0 & mask_SORT_6); + SORT_6 var_433_arg_1 = var_207; + SORT_6 var_433 = (int)var_433_arg_0 >> var_433_arg_1; + var_433 = (var_433_arg_0 & msb_SORT_6) ? (var_433 | ~(mask_SORT_6 >> var_433_arg_1)) : var_433; + SORT_6 var_434_arg_0 = var_204; + SORT_6 var_434_arg_1 = var_433; + SORT_1 var_434 = var_434_arg_0 == var_434_arg_1; + SORT_6 var_424_arg_0 = var_204; + SORT_6 var_424_arg_1 = var_423; + SORT_1 var_424 = var_424_arg_0 <= var_424_arg_1; + SORT_1 var_425_arg_0 = var_420; + SORT_1 var_425_arg_1 = ~var_424; + var_425_arg_1 = var_425_arg_1 & mask_SORT_1; + SORT_1 var_425 = var_425_arg_0 & var_425_arg_1; + SORT_1 var_426_arg_0 = ~input_419; + var_426_arg_0 = var_426_arg_0 & mask_SORT_1; + SORT_1 var_426_arg_1 = var_425; + SORT_1 var_426 = var_426_arg_0 | var_426_arg_1; + SORT_4 var_413_arg_0 = var_412; + SORT_4 var_413_arg_1 = var_205; + SORT_6 var_413 = ((SORT_6)var_413_arg_0 << 16) | var_413_arg_1; + SORT_6 var_414_arg_0 = var_413; + var_414_arg_0 = (var_414_arg_0 & msb_SORT_6) ? (var_414_arg_0 | ~mask_SORT_6) : (var_414_arg_0 & mask_SORT_6); + SORT_6 var_414_arg_1 = var_207; + SORT_6 var_414 = (int)var_414_arg_0 >> var_414_arg_1; + var_414 = (var_414_arg_0 & msb_SORT_6) ? (var_414 | ~(mask_SORT_6 >> var_414_arg_1)) : var_414; + SORT_6 var_415_arg_0 = var_213; + SORT_6 var_415_arg_1 = var_414; + SORT_1 var_415 = var_415_arg_0 == var_415_arg_1; + SORT_1 var_416_arg_0 = var_344; + SORT_1 var_416_arg_1 = var_415; + SORT_1 var_416 = var_416_arg_0 & var_416_arg_1; + SORT_1 var_417_arg_0 = ~input_409; + var_417_arg_0 = var_417_arg_0 & mask_SORT_1; + SORT_1 var_417_arg_1 = var_416; + SORT_1 var_417 = var_417_arg_0 | var_417_arg_1; + SORT_6 var_401_arg_0 = var_204; + SORT_6 var_401_arg_1 = var_399; + SORT_6 var_401 = var_401_arg_0 * var_401_arg_1; + SORT_6 var_402_arg_0 = var_249; + SORT_6 var_402_arg_1 = var_401; + SORT_1 var_402 = var_402_arg_0 == var_402_arg_1; + SORT_6 var_400_arg_0 = var_213; + SORT_6 var_400_arg_1 = var_399; + SORT_1 var_400 = var_400_arg_0 <= var_400_arg_1; + SORT_6 var_349_arg_0 = var_204; + SORT_6 var_349_arg_1 = var_347; + SORT_6 var_349 = var_349_arg_0 * var_349_arg_1; + SORT_6 var_894_arg_0 = var_213; + SORT_6 var_894_arg_1 = var_349; + SORT_6 var_894 = var_894_arg_0 + var_894_arg_1; + SORT_6 var_895_arg_0 = var_249; + SORT_6 var_895_arg_1 = var_894; + SORT_1 var_895 = var_895_arg_0 == var_895_arg_1; + SORT_6 var_350_arg_0 = var_249; + SORT_6 var_350_arg_1 = var_349; + SORT_1 var_350 = var_350_arg_0 == var_350_arg_1; + SORT_6 var_348_arg_0 = var_213; + SORT_6 var_348_arg_1 = var_347; + SORT_1 var_348 = var_348_arg_0 <= var_348_arg_1; + SORT_4 var_329_arg_0 = var_328; + SORT_4 var_329_arg_1 = var_205; + SORT_6 var_329 = ((SORT_6)var_329_arg_0 << 16) | var_329_arg_1; + SORT_6 var_330_arg_0 = var_329; + var_330_arg_0 = (var_330_arg_0 & msb_SORT_6) ? (var_330_arg_0 | ~mask_SORT_6) : (var_330_arg_0 & mask_SORT_6); + SORT_6 var_330_arg_1 = var_207; + SORT_6 var_330 = (int)var_330_arg_0 >> var_330_arg_1; + var_330 = (var_330_arg_0 & msb_SORT_6) ? (var_330 | ~(mask_SORT_6 >> var_330_arg_1)) : var_330; + SORT_6 var_331_arg_0 = var_204; + SORT_6 var_331_arg_1 = var_330; + SORT_1 var_331 = var_331_arg_0 == var_331_arg_1; + SORT_1 var_332_arg_0 = var_293; + SORT_1 var_332_arg_1 = var_331; + SORT_1 var_332 = var_332_arg_0 & var_332_arg_1; + SORT_1 var_333_arg_0 = ~input_325; + var_333_arg_0 = var_333_arg_0 & mask_SORT_1; + SORT_1 var_333_arg_1 = var_332; + SORT_1 var_333 = var_333_arg_0 | var_333_arg_1; + SORT_6 var_316_arg_0 = var_249; + SORT_6 var_316_arg_1 = var_314; + SORT_1 var_316 = var_316_arg_0 == var_316_arg_1; + SORT_1 var_317_arg_0 = var_316; + SORT_4 var_317_arg_1 = var_299; + SORT_4 var_317_arg_2 = var_300; + SORT_4 var_317 = var_317_arg_0 ? var_317_arg_1 : var_317_arg_2; + SORT_4 var_318_arg_0 = var_317; + SORT_4 var_318_arg_1 = var_205; + SORT_6 var_318 = ((SORT_6)var_318_arg_0 << 16) | var_318_arg_1; + SORT_6 var_319_arg_0 = var_318; + var_319_arg_0 = (var_319_arg_0 & msb_SORT_6) ? (var_319_arg_0 | ~mask_SORT_6) : (var_319_arg_0 & mask_SORT_6); + SORT_6 var_319_arg_1 = var_207; + SORT_6 var_319 = (int)var_319_arg_0 >> var_319_arg_1; + var_319 = (var_319_arg_0 & msb_SORT_6) ? (var_319 | ~(mask_SORT_6 >> var_319_arg_1)) : var_319; + SORT_6 var_320_arg_0 = var_248; + SORT_6 var_320_arg_1 = var_319; + SORT_1 var_320 = var_320_arg_0 == var_320_arg_1; + SORT_6 var_315_arg_0 = var_204; + SORT_6 var_315_arg_1 = var_314; + SORT_1 var_315 = var_315_arg_0 <= var_315_arg_1; + SORT_1 var_321_arg_0 = ~var_315; + var_321_arg_0 = var_321_arg_0 & mask_SORT_1; + SORT_1 var_321_arg_1 = var_320; + SORT_1 var_321 = var_321_arg_0 & var_321_arg_1; + SORT_1 var_322_arg_0 = var_293; + SORT_1 var_322_arg_1 = var_321; + SORT_1 var_322 = var_322_arg_0 & var_322_arg_1; + SORT_1 var_323_arg_0 = ~input_309; + var_323_arg_0 = var_323_arg_0 & mask_SORT_1; + SORT_1 var_323_arg_1 = var_322; + SORT_1 var_323 = var_323_arg_0 | var_323_arg_1; + SORT_6 var_298_arg_0 = var_249; + SORT_6 var_298_arg_1 = var_296; + SORT_1 var_298 = var_298_arg_0 == var_298_arg_1; + SORT_1 var_301_arg_0 = var_298; + SORT_4 var_301_arg_1 = var_299; + SORT_4 var_301_arg_2 = var_300; + SORT_4 var_301 = var_301_arg_0 ? var_301_arg_1 : var_301_arg_2; + SORT_4 var_302_arg_0 = var_301; + SORT_4 var_302_arg_1 = var_205; + SORT_6 var_302 = ((SORT_6)var_302_arg_0 << 16) | var_302_arg_1; + SORT_6 var_303_arg_0 = var_302; + var_303_arg_0 = (var_303_arg_0 & msb_SORT_6) ? (var_303_arg_0 | ~mask_SORT_6) : (var_303_arg_0 & mask_SORT_6); + SORT_6 var_303_arg_1 = var_207; + SORT_6 var_303 = (int)var_303_arg_0 >> var_303_arg_1; + var_303 = (var_303_arg_0 & msb_SORT_6) ? (var_303 | ~(mask_SORT_6 >> var_303_arg_1)) : var_303; + SORT_6 var_351_arg_0 = var_204; + SORT_6 var_351_arg_1 = var_303; + SORT_6 var_351 = var_351_arg_0 * var_351_arg_1; + SORT_6 var_373_arg_0 = var_213; + SORT_6 var_373_arg_1 = var_351; + SORT_1 var_373 = var_373_arg_0 == var_373_arg_1; + SORT_6 var_353_arg_0 = var_213; + SORT_6 var_353_arg_1 = var_351; + SORT_6 var_353 = var_353_arg_0 + var_353_arg_1; + SORT_6 var_374_arg_0 = var_213; + SORT_6 var_374_arg_1 = var_353; + SORT_1 var_374 = var_374_arg_0 == var_374_arg_1; + SORT_1 var_377_arg_0 = var_374; + SORT_3 var_377_arg_1 = var_357; + SORT_3 var_377_arg_2 = var_358; + SORT_3 var_377 = var_377_arg_0 ? var_377_arg_1 : var_377_arg_2; + SORT_1 var_375_arg_0 = var_373; + SORT_1 var_375_arg_1 = var_374; + SORT_1 var_375 = var_375_arg_0 | var_375_arg_1; + SORT_1 var_376_arg_0 = input_292; + SORT_1 var_376_arg_1 = var_375; + SORT_1 var_376 = var_376_arg_0 & var_376_arg_1; + var_376 = var_376 & mask_SORT_1; + SORT_6 var_354_arg_0 = var_249; + SORT_6 var_354_arg_1 = var_353; + SORT_1 var_354 = var_354_arg_0 == var_354_arg_1; + SORT_1 var_359_arg_0 = var_354; + SORT_3 var_359_arg_1 = var_357; + SORT_3 var_359_arg_2 = var_358; + SORT_3 var_359 = var_359_arg_0 ? var_359_arg_1 : var_359_arg_2; + SORT_6 var_352_arg_0 = var_249; + SORT_6 var_352_arg_1 = var_351; + SORT_1 var_352 = var_352_arg_0 == var_352_arg_1; + SORT_1 var_355_arg_0 = var_352; + SORT_1 var_355_arg_1 = var_354; + SORT_1 var_355 = var_355_arg_0 | var_355_arg_1; + SORT_1 var_356_arg_0 = input_292; + SORT_1 var_356_arg_1 = var_355; + SORT_1 var_356 = var_356_arg_0 & var_356_arg_1; + var_356 = var_356 & mask_SORT_1; + SORT_6 var_304_arg_0 = var_248; + SORT_6 var_304_arg_1 = var_303; + SORT_1 var_304 = var_304_arg_0 == var_304_arg_1; + SORT_6 var_297_arg_0 = var_204; + SORT_6 var_297_arg_1 = var_296; + SORT_1 var_297 = var_297_arg_0 <= var_297_arg_1; + SORT_1 var_305_arg_0 = ~var_297; + var_305_arg_0 = var_305_arg_0 & mask_SORT_1; + SORT_1 var_305_arg_1 = ~var_304; + var_305_arg_1 = var_305_arg_1 & mask_SORT_1; + SORT_1 var_305 = var_305_arg_0 & var_305_arg_1; + SORT_1 var_306_arg_0 = var_293; + SORT_1 var_306_arg_1 = var_305; + SORT_1 var_306 = var_306_arg_0 & var_306_arg_1; + SORT_1 var_307_arg_0 = ~input_292; + var_307_arg_0 = var_307_arg_0 & mask_SORT_1; + SORT_1 var_307_arg_1 = var_306; + SORT_1 var_307 = var_307_arg_0 | var_307_arg_1; + SORT_4 var_286_arg_0 = var_285; + SORT_4 var_286_arg_1 = var_205; + SORT_6 var_286 = ((SORT_6)var_286_arg_0 << 16) | var_286_arg_1; + SORT_6 var_287_arg_0 = var_286; + var_287_arg_0 = (var_287_arg_0 & msb_SORT_6) ? (var_287_arg_0 | ~mask_SORT_6) : (var_287_arg_0 & mask_SORT_6); + SORT_6 var_287_arg_1 = var_207; + SORT_6 var_287 = (int)var_287_arg_0 >> var_287_arg_1; + var_287 = (var_287_arg_0 & msb_SORT_6) ? (var_287 | ~(mask_SORT_6 >> var_287_arg_1)) : var_287; + SORT_6 var_288_arg_0 = var_204; + SORT_6 var_288_arg_1 = var_287; + SORT_1 var_288 = var_288_arg_0 == var_288_arg_1; + SORT_1 var_289_arg_0 = var_243; + SORT_1 var_289_arg_1 = var_288; + SORT_1 var_289 = var_289_arg_0 & var_289_arg_1; + SORT_1 var_290_arg_0 = ~input_282; + var_290_arg_0 = var_290_arg_0 & mask_SORT_1; + SORT_1 var_290_arg_1 = var_289; + SORT_1 var_290 = var_290_arg_0 | var_290_arg_1; + SORT_6 var_273_arg_0 = var_249; + SORT_6 var_273_arg_1 = var_271; + SORT_1 var_273 = var_273_arg_0 == var_273_arg_1; + SORT_1 var_274_arg_0 = var_273; + SORT_4 var_274_arg_1 = var_254; + SORT_4 var_274_arg_2 = var_257; + SORT_4 var_274 = var_274_arg_0 ? var_274_arg_1 : var_274_arg_2; + SORT_4 var_275_arg_0 = var_274; + SORT_4 var_275_arg_1 = var_205; + SORT_6 var_275 = ((SORT_6)var_275_arg_0 << 16) | var_275_arg_1; + SORT_6 var_276_arg_0 = var_275; + var_276_arg_0 = (var_276_arg_0 & msb_SORT_6) ? (var_276_arg_0 | ~mask_SORT_6) : (var_276_arg_0 & mask_SORT_6); + SORT_6 var_276_arg_1 = var_207; + SORT_6 var_276 = (int)var_276_arg_0 >> var_276_arg_1; + var_276 = (var_276_arg_0 & msb_SORT_6) ? (var_276 | ~(mask_SORT_6 >> var_276_arg_1)) : var_276; + SORT_6 var_277_arg_0 = var_248; + SORT_6 var_277_arg_1 = var_276; + SORT_1 var_277 = var_277_arg_0 == var_277_arg_1; + SORT_6 var_272_arg_0 = var_204; + SORT_6 var_272_arg_1 = var_271; + SORT_1 var_272 = var_272_arg_0 <= var_272_arg_1; + SORT_1 var_278_arg_0 = ~var_272; + var_278_arg_0 = var_278_arg_0 & mask_SORT_1; + SORT_1 var_278_arg_1 = var_277; + SORT_1 var_278 = var_278_arg_0 & var_278_arg_1; + SORT_1 var_279_arg_0 = var_243; + SORT_1 var_279_arg_1 = var_278; + SORT_1 var_279 = var_279_arg_0 & var_279_arg_1; + SORT_1 var_280_arg_0 = ~input_266; + var_280_arg_0 = var_280_arg_0 & mask_SORT_1; + SORT_1 var_280_arg_1 = var_279; + SORT_1 var_280 = var_280_arg_0 | var_280_arg_1; + SORT_6 var_250_arg_0 = var_249; + SORT_6 var_250_arg_1 = var_246; + SORT_1 var_250 = var_250_arg_0 == var_250_arg_1; + SORT_1 var_258_arg_0 = var_250; + SORT_4 var_258_arg_1 = var_254; + SORT_4 var_258_arg_2 = var_257; + SORT_4 var_258 = var_258_arg_0 ? var_258_arg_1 : var_258_arg_2; + SORT_4 var_259_arg_0 = var_258; + SORT_4 var_259_arg_1 = var_205; + SORT_6 var_259 = ((SORT_6)var_259_arg_0 << 16) | var_259_arg_1; + SORT_6 var_260_arg_0 = var_259; + var_260_arg_0 = (var_260_arg_0 & msb_SORT_6) ? (var_260_arg_0 | ~mask_SORT_6) : (var_260_arg_0 & mask_SORT_6); + SORT_6 var_260_arg_1 = var_207; + SORT_6 var_260 = (int)var_260_arg_0 >> var_260_arg_1; + var_260 = (var_260_arg_0 & msb_SORT_6) ? (var_260 | ~(mask_SORT_6 >> var_260_arg_1)) : var_260; + SORT_6 var_360_arg_0 = var_204; + SORT_6 var_360_arg_1 = var_260; + SORT_6 var_360 = var_360_arg_0 * var_360_arg_1; + SORT_6 var_378_arg_0 = var_213; + SORT_6 var_378_arg_1 = var_360; + SORT_1 var_378 = var_378_arg_0 == var_378_arg_1; + SORT_6 var_362_arg_0 = var_213; + SORT_6 var_362_arg_1 = var_360; + SORT_6 var_362 = var_362_arg_0 + var_362_arg_1; + SORT_6 var_379_arg_0 = var_213; + SORT_6 var_379_arg_1 = var_362; + SORT_1 var_379 = var_379_arg_0 == var_379_arg_1; + SORT_1 var_382_arg_0 = var_379; + SORT_3 var_382_arg_1 = var_366; + SORT_3 var_382_arg_2 = var_358; + SORT_3 var_382 = var_382_arg_0 ? var_382_arg_1 : var_382_arg_2; + SORT_1 var_380_arg_0 = var_378; + SORT_1 var_380_arg_1 = var_379; + SORT_1 var_380 = var_380_arg_0 | var_380_arg_1; + SORT_1 var_381_arg_0 = input_242; + SORT_1 var_381_arg_1 = var_380; + SORT_1 var_381 = var_381_arg_0 & var_381_arg_1; + var_381 = var_381 & mask_SORT_1; + SORT_6 var_363_arg_0 = var_249; + SORT_6 var_363_arg_1 = var_362; + SORT_1 var_363 = var_363_arg_0 == var_363_arg_1; + SORT_1 var_367_arg_0 = var_363; + SORT_3 var_367_arg_1 = var_366; + SORT_3 var_367_arg_2 = var_358; + SORT_3 var_367 = var_367_arg_0 ? var_367_arg_1 : var_367_arg_2; + SORT_6 var_361_arg_0 = var_249; + SORT_6 var_361_arg_1 = var_360; + SORT_1 var_361 = var_361_arg_0 == var_361_arg_1; + SORT_1 var_364_arg_0 = var_361; + SORT_1 var_364_arg_1 = var_363; + SORT_1 var_364 = var_364_arg_0 | var_364_arg_1; + SORT_1 var_365_arg_0 = input_242; + SORT_1 var_365_arg_1 = var_364; + SORT_1 var_365 = var_365_arg_0 & var_365_arg_1; + var_365 = var_365 & mask_SORT_1; + SORT_6 var_261_arg_0 = var_248; + SORT_6 var_261_arg_1 = var_260; + SORT_1 var_261 = var_261_arg_0 == var_261_arg_1; + SORT_6 var_247_arg_0 = var_204; + SORT_6 var_247_arg_1 = var_246; + SORT_1 var_247 = var_247_arg_0 <= var_247_arg_1; + SORT_1 var_262_arg_0 = ~var_247; + var_262_arg_0 = var_262_arg_0 & mask_SORT_1; + SORT_1 var_262_arg_1 = ~var_261; + var_262_arg_1 = var_262_arg_1 & mask_SORT_1; + SORT_1 var_262 = var_262_arg_0 & var_262_arg_1; + SORT_1 var_263_arg_0 = var_243; + SORT_1 var_263_arg_1 = var_262; + SORT_1 var_263 = var_263_arg_0 & var_263_arg_1; + SORT_1 var_264_arg_0 = ~input_242; + var_264_arg_0 = var_264_arg_0 & mask_SORT_1; + SORT_1 var_264_arg_1 = var_263; + SORT_1 var_264 = var_264_arg_0 | var_264_arg_1; + SORT_4 var_236_arg_0 = var_235; + SORT_4 var_236_arg_1 = var_205; + SORT_6 var_236 = ((SORT_6)var_236_arg_0 << 16) | var_236_arg_1; + SORT_6 var_237_arg_0 = var_236; + var_237_arg_0 = (var_237_arg_0 & msb_SORT_6) ? (var_237_arg_0 | ~mask_SORT_6) : (var_237_arg_0 & mask_SORT_6); + SORT_6 var_237_arg_1 = var_207; + SORT_6 var_237 = (int)var_237_arg_0 >> var_237_arg_1; + var_237 = (var_237_arg_0 & msb_SORT_6) ? (var_237 | ~(mask_SORT_6 >> var_237_arg_1)) : var_237; + SORT_6 var_238_arg_0 = var_204; + SORT_6 var_238_arg_1 = var_237; + SORT_1 var_238 = var_238_arg_0 == var_238_arg_1; + SORT_1 var_239_arg_0 = var_224; + SORT_1 var_239_arg_1 = var_238; + SORT_1 var_239 = var_239_arg_0 & var_239_arg_1; + SORT_1 var_240_arg_0 = ~input_232; + var_240_arg_0 = var_240_arg_0 & mask_SORT_1; + SORT_1 var_240_arg_1 = var_239; + SORT_1 var_240 = var_240_arg_0 | var_240_arg_1; + SORT_6 var_228_arg_0 = var_204; + SORT_6 var_228_arg_1 = var_227; + SORT_1 var_228 = var_228_arg_0 <= var_228_arg_1; + SORT_1 var_229_arg_0 = var_224; + SORT_1 var_229_arg_1 = ~var_228; + var_229_arg_1 = var_229_arg_1 & mask_SORT_1; + SORT_1 var_229 = var_229_arg_0 & var_229_arg_1; + SORT_1 var_230_arg_0 = ~input_223; + var_230_arg_0 = var_230_arg_0 & mask_SORT_1; + SORT_1 var_230_arg_1 = var_229; + SORT_1 var_230 = var_230_arg_0 | var_230_arg_1; + SORT_1 var_231_arg_0 = var_222; + SORT_1 var_231_arg_1 = var_230; + SORT_1 var_231 = var_231_arg_0 & var_231_arg_1; + SORT_1 var_241_arg_0 = var_231; + SORT_1 var_241_arg_1 = var_240; + SORT_1 var_241 = var_241_arg_0 & var_241_arg_1; + SORT_1 var_265_arg_0 = var_241; + SORT_1 var_265_arg_1 = var_264; + SORT_1 var_265 = var_265_arg_0 & var_265_arg_1; + SORT_1 var_281_arg_0 = var_265; + SORT_1 var_281_arg_1 = var_280; + SORT_1 var_281 = var_281_arg_0 & var_281_arg_1; + SORT_1 var_291_arg_0 = var_281; + SORT_1 var_291_arg_1 = var_290; + SORT_1 var_291 = var_291_arg_0 & var_291_arg_1; + SORT_1 var_308_arg_0 = var_291; + SORT_1 var_308_arg_1 = var_307; + SORT_1 var_308 = var_308_arg_0 & var_308_arg_1; + SORT_1 var_324_arg_0 = var_308; + SORT_1 var_324_arg_1 = var_323; + SORT_1 var_324 = var_324_arg_0 & var_324_arg_1; + SORT_1 var_334_arg_0 = var_324; + SORT_1 var_334_arg_1 = var_333; + SORT_1 var_334 = var_334_arg_0 & var_334_arg_1; + SORT_1 var_443_arg_0 = input_212; + SORT_3 var_443_arg_1 = var_94; + SORT_3 var_443_arg_2 = input_161; + SORT_3 var_443 = var_443_arg_0 ? var_443_arg_1 : var_443_arg_2; + SORT_1 var_444_arg_0 = input_325; + SORT_3 var_444_arg_1 = var_442; + SORT_3 var_444_arg_2 = var_443; + SORT_3 var_444 = var_444_arg_0 ? var_444_arg_1 : var_444_arg_2; + SORT_1 var_445_arg_0 = input_335; + SORT_3 var_445_arg_1 = var_337; + SORT_3 var_445_arg_2 = var_444; + SORT_3 var_445 = var_445_arg_0 ? var_445_arg_1 : var_445_arg_2; + SORT_1 var_446_arg_0 = input_428; + SORT_3 var_446_arg_1 = var_94; + SORT_3 var_446_arg_2 = var_445; + SORT_3 var_446 = var_446_arg_0 ? var_446_arg_1 : var_446_arg_2; + SORT_3 var_479_arg_0 = var_337; + SORT_3 var_479_arg_1 = var_446; + SORT_1 var_479 = var_479_arg_0 == var_479_arg_1; + SORT_1 var_752_arg_0 = var_479; + SORT_1 var_752_arg_1 = ~var_751; + var_752_arg_1 = var_752_arg_1 & mask_SORT_1; + SORT_1 var_752 = var_752_arg_0 & var_752_arg_1; + SORT_1 var_753_arg_0 = var_746; + SORT_1 var_753_arg_1 = var_752; + SORT_1 var_753 = var_753_arg_0 & var_753_arg_1; + SORT_1 var_754_arg_0 = ~input_745; + var_754_arg_0 = var_754_arg_0 & mask_SORT_1; + SORT_1 var_754_arg_1 = var_753; + SORT_1 var_754 = var_754_arg_0 | var_754_arg_1; + SORT_1 var_636_arg_0 = var_479; + SORT_1 var_636_arg_1 = ~var_629; + var_636_arg_1 = var_636_arg_1 & mask_SORT_1; + SORT_1 var_636 = var_636_arg_0 & var_636_arg_1; + SORT_1 var_630_arg_0 = var_479; + SORT_1 var_630_arg_1 = var_629; + SORT_1 var_630 = var_630_arg_0 & var_630_arg_1; + SORT_1 var_631_arg_0 = var_625; + SORT_1 var_631_arg_1 = var_630; + SORT_1 var_631 = var_631_arg_0 & var_631_arg_1; + SORT_1 var_632_arg_0 = ~input_622; + var_632_arg_0 = var_632_arg_0 & mask_SORT_1; + SORT_1 var_632_arg_1 = var_631; + SORT_1 var_632 = var_632_arg_0 | var_632_arg_1; + SORT_1 var_590_arg_0 = var_479; + SORT_1 var_590_arg_1 = ~var_589; + var_590_arg_1 = var_590_arg_1 & mask_SORT_1; + SORT_1 var_590 = var_590_arg_0 & var_590_arg_1; + SORT_1 var_591_arg_0 = var_584; + SORT_1 var_591_arg_1 = var_590; + SORT_1 var_591 = var_591_arg_0 & var_591_arg_1; + SORT_1 var_592_arg_0 = ~input_583; + var_592_arg_0 = var_592_arg_0 & mask_SORT_1; + SORT_1 var_592_arg_1 = var_591; + SORT_1 var_592 = var_592_arg_0 | var_592_arg_1; + SORT_1 var_490_arg_0 = var_479; + SORT_1 var_490_arg_1 = ~var_483; + var_490_arg_1 = var_490_arg_1 & mask_SORT_1; + SORT_1 var_490 = var_490_arg_0 & var_490_arg_1; + SORT_1 var_484_arg_0 = var_479; + SORT_1 var_484_arg_1 = var_483; + SORT_1 var_484 = var_484_arg_0 & var_484_arg_1; + SORT_1 var_485_arg_0 = var_478; + SORT_1 var_485_arg_1 = var_484; + SORT_1 var_485 = var_485_arg_0 & var_485_arg_1; + SORT_1 var_486_arg_0 = ~input_475; + var_486_arg_0 = var_486_arg_0 & mask_SORT_1; + SORT_1 var_486_arg_1 = var_485; + SORT_1 var_486 = var_486_arg_0 | var_486_arg_1; + SORT_3 var_447_arg_0 = var_442; + SORT_3 var_447_arg_1 = var_446; + SORT_1 var_447 = var_447_arg_0 == var_447_arg_1; + SORT_1 var_619_arg_0 = var_447; + SORT_1 var_619_arg_1 = var_618; + SORT_1 var_619 = var_619_arg_0 & var_619_arg_1; + SORT_1 var_620_arg_0 = ~input_617; + var_620_arg_0 = var_620_arg_0 & mask_SORT_1; + SORT_1 var_620_arg_1 = var_619; + SORT_1 var_620 = var_620_arg_0 | var_620_arg_1; + SORT_1 var_608_arg_0 = var_447; + SORT_1 var_608_arg_1 = var_607; + SORT_1 var_608 = var_608_arg_0 & var_608_arg_1; + SORT_1 var_613_arg_0 = var_608; + SORT_1 var_613_arg_1 = var_612; + SORT_1 var_613 = var_613_arg_0 & var_613_arg_1; + SORT_1 var_614_arg_0 = var_603; + SORT_1 var_614_arg_1 = var_613; + SORT_1 var_614 = var_614_arg_0 & var_614_arg_1; + SORT_1 var_615_arg_0 = ~input_602; + var_615_arg_0 = var_615_arg_0 & mask_SORT_1; + SORT_1 var_615_arg_1 = var_614; + SORT_1 var_615 = var_615_arg_0 | var_615_arg_1; + SORT_1 var_598_arg_0 = var_447; + SORT_1 var_598_arg_1 = ~var_597; + var_598_arg_1 = var_598_arg_1 & mask_SORT_1; + SORT_1 var_598 = var_598_arg_0 & var_598_arg_1; + SORT_1 var_599_arg_0 = input_195; + SORT_1 var_599_arg_1 = var_598; + SORT_1 var_599 = var_599_arg_0 & var_599_arg_1; + SORT_1 var_600_arg_0 = ~input_594; + var_600_arg_0 = var_600_arg_0 & mask_SORT_1; + SORT_1 var_600_arg_1 = var_599; + SORT_1 var_600 = var_600_arg_0 | var_600_arg_1; + SORT_1 var_472_arg_0 = var_447; + SORT_1 var_472_arg_1 = var_471; + SORT_1 var_472 = var_472_arg_0 & var_472_arg_1; + SORT_1 var_473_arg_0 = ~input_470; + var_473_arg_0 = var_473_arg_0 & mask_SORT_1; + SORT_1 var_473_arg_1 = var_472; + SORT_1 var_473 = var_473_arg_0 | var_473_arg_1; + SORT_1 var_461_arg_0 = var_447; + SORT_1 var_461_arg_1 = var_460; + SORT_1 var_461 = var_461_arg_0 & var_461_arg_1; + SORT_1 var_466_arg_0 = var_461; + SORT_1 var_466_arg_1 = var_465; + SORT_1 var_466 = var_466_arg_0 & var_466_arg_1; + SORT_1 var_467_arg_0 = var_456; + SORT_1 var_467_arg_1 = var_466; + SORT_1 var_467 = var_467_arg_0 & var_467_arg_1; + SORT_1 var_468_arg_0 = ~input_455; + var_468_arg_0 = var_468_arg_0 & mask_SORT_1; + SORT_1 var_468_arg_1 = var_467; + SORT_1 var_468 = var_468_arg_0 | var_468_arg_1; + SORT_1 var_451_arg_0 = var_447; + SORT_1 var_451_arg_1 = ~var_450; + var_451_arg_1 = var_451_arg_1 & mask_SORT_1; + SORT_1 var_451 = var_451_arg_0 & var_451_arg_1; + SORT_1 var_452_arg_0 = input_189; + SORT_1 var_452_arg_1 = var_451; + SORT_1 var_452 = var_452_arg_0 & var_452_arg_1; + SORT_1 var_453_arg_0 = ~input_441; + var_453_arg_0 = var_453_arg_0 & mask_SORT_1; + SORT_1 var_453_arg_1 = var_452; + SORT_1 var_453 = var_453_arg_0 | var_453_arg_1; + SORT_1 var_385_arg_0 = var_384; + SORT_3 var_385_arg_1 = var_94; + SORT_3 var_385_arg_2 = input_145; + SORT_3 var_385 = var_385_arg_0 ? var_385_arg_1 : var_385_arg_2; + SORT_1 var_386_arg_0 = var_381; + SORT_3 var_386_arg_1 = var_382; + SORT_3 var_386_arg_2 = var_385; + SORT_3 var_386 = var_386_arg_0 ? var_386_arg_1 : var_386_arg_2; + SORT_1 var_387_arg_0 = var_376; + SORT_3 var_387_arg_1 = var_377; + SORT_3 var_387_arg_2 = var_386; + SORT_3 var_387 = var_387_arg_0 ? var_387_arg_1 : var_387_arg_2; + SORT_1 var_939_arg_0 = var_938; + SORT_3 var_939_arg_1 = var_94; + SORT_3 var_939_arg_2 = var_387; + SORT_3 var_939 = var_939_arg_0 ? var_939_arg_1 : var_939_arg_2; + SORT_1 var_940_arg_0 = var_934; + SORT_3 var_940_arg_1 = var_94; + SORT_3 var_940_arg_2 = var_939; + SORT_3 var_940 = var_940_arg_0 ? var_940_arg_1 : var_940_arg_2; + SORT_1 var_370_arg_0 = var_369; + SORT_3 var_370_arg_1 = var_94; + SORT_3 var_370_arg_2 = input_143; + SORT_3 var_370 = var_370_arg_0 ? var_370_arg_1 : var_370_arg_2; + SORT_1 var_371_arg_0 = var_365; + SORT_3 var_371_arg_1 = var_367; + SORT_3 var_371_arg_2 = var_370; + SORT_3 var_371 = var_371_arg_0 ? var_371_arg_1 : var_371_arg_2; + SORT_1 var_372_arg_0 = var_356; + SORT_3 var_372_arg_1 = var_359; + SORT_3 var_372_arg_2 = var_371; + SORT_3 var_372 = var_372_arg_0 ? var_372_arg_1 : var_372_arg_2; + SORT_1 var_927_arg_0 = var_926; + SORT_3 var_927_arg_1 = var_94; + SORT_3 var_927_arg_2 = var_372; + SORT_3 var_927 = var_927_arg_0 ? var_927_arg_1 : var_927_arg_2; + SORT_1 var_928_arg_0 = var_921; + SORT_3 var_928_arg_1 = var_94; + SORT_3 var_928_arg_2 = var_927; + SORT_3 var_928 = var_928_arg_0 ? var_928_arg_1 : var_928_arg_2; + SORT_1 var_896_arg_0 = var_895; + SORT_3 var_896_arg_1 = var_372; + SORT_3 var_896_arg_2 = var_387; + SORT_3 var_896 = var_896_arg_0 ? var_896_arg_1 : var_896_arg_2; + SORT_5 var_897_arg_0 = var_491; + SORT_3 var_897_arg_1 = var_896; + SORT_6 var_897 = ((SORT_6)var_897_arg_0 << 8) | var_897_arg_1; + SORT_6 var_898_arg_0 = var_347; + SORT_6 var_898_arg_1 = var_897; + SORT_6 var_898 = var_898_arg_0 + var_898_arg_1; + SORT_6 var_905_arg_0 = var_213; + SORT_6 var_905_arg_1 = var_898; + SORT_1 var_905 = var_905_arg_0 == var_905_arg_1; + SORT_1 var_906_arg_0 = input_343; + SORT_1 var_906_arg_1 = var_905; + SORT_1 var_906 = var_906_arg_0 & var_906_arg_1; + var_906 = var_906 & mask_SORT_1; + SORT_1 var_914_arg_0 = var_906; + SORT_3 var_914_arg_1 = var_94; + SORT_3 var_914_arg_2 = input_141; + SORT_3 var_914 = var_914_arg_0 ? var_914_arg_1 : var_914_arg_2; + SORT_1 var_907_arg_0 = var_906; + SORT_3 var_907_arg_1 = var_94; + SORT_3 var_907_arg_2 = input_137; + SORT_3 var_907 = var_907_arg_0 ? var_907_arg_1 : var_907_arg_2; + SORT_1 var_908_arg_0 = input_602; + SORT_3 var_908_arg_1 = var_358; + SORT_3 var_908_arg_2 = var_907; + SORT_3 var_908 = var_908_arg_0 ? var_908_arg_1 : var_908_arg_2; + SORT_6 var_899_arg_0 = var_249; + SORT_6 var_899_arg_1 = var_898; + SORT_1 var_899 = var_899_arg_0 == var_899_arg_1; + SORT_1 var_900_arg_0 = input_343; + SORT_1 var_900_arg_1 = var_899; + SORT_1 var_900 = var_900_arg_0 & var_900_arg_1; + var_900 = var_900 & mask_SORT_1; + SORT_1 var_911_arg_0 = var_900; + SORT_3 var_911_arg_1 = var_94; + SORT_3 var_911_arg_2 = input_139; + SORT_3 var_911 = var_911_arg_0 ? var_911_arg_1 : var_911_arg_2; + SORT_1 var_901_arg_0 = var_900; + SORT_3 var_901_arg_1 = var_94; + SORT_3 var_901_arg_2 = input_135; + SORT_3 var_901 = var_901_arg_0 ? var_901_arg_1 : var_901_arg_2; + SORT_1 var_902_arg_0 = input_455; + SORT_3 var_902_arg_1 = var_358; + SORT_3 var_902_arg_2 = var_901; + SORT_3 var_902 = var_902_arg_0 ? var_902_arg_1 : var_902_arg_2; + SORT_1 var_403_arg_0 = var_402; + SORT_3 var_403_arg_1 = var_372; + SORT_3 var_403_arg_2 = var_387; + SORT_3 var_403 = var_403_arg_0 ? var_403_arg_1 : var_403_arg_2; + SORT_3 var_404_arg_0 = var_94; + SORT_3 var_404_arg_1 = var_403; + SORT_1 var_404 = var_404_arg_0 == var_404_arg_1; + SORT_1 var_405_arg_0 = ~var_400; + var_405_arg_0 = var_405_arg_0 & mask_SORT_1; + SORT_1 var_405_arg_1 = var_404; + SORT_1 var_405 = var_405_arg_0 & var_405_arg_1; + SORT_1 var_406_arg_0 = var_344; + SORT_1 var_406_arg_1 = var_405; + SORT_1 var_406 = var_406_arg_0 & var_406_arg_1; + SORT_1 var_407_arg_0 = ~input_394; + var_407_arg_0 = var_407_arg_0 & mask_SORT_1; + SORT_1 var_407_arg_1 = var_406; + SORT_1 var_407 = var_407_arg_0 | var_407_arg_1; + SORT_1 var_388_arg_0 = var_350; + SORT_3 var_388_arg_1 = var_372; + SORT_3 var_388_arg_2 = var_387; + SORT_3 var_388 = var_388_arg_0 ? var_388_arg_1 : var_388_arg_2; + SORT_3 var_389_arg_0 = var_94; + SORT_3 var_389_arg_1 = var_388; + SORT_1 var_389 = var_389_arg_0 == var_389_arg_1; + SORT_1 var_390_arg_0 = ~var_348; + var_390_arg_0 = var_390_arg_0 & mask_SORT_1; + SORT_1 var_390_arg_1 = ~var_389; + var_390_arg_1 = var_390_arg_1 & mask_SORT_1; + SORT_1 var_390 = var_390_arg_0 & var_390_arg_1; + SORT_1 var_391_arg_0 = var_344; + SORT_1 var_391_arg_1 = var_390; + SORT_1 var_391 = var_391_arg_0 & var_391_arg_1; + SORT_1 var_392_arg_0 = ~input_343; + var_392_arg_0 = var_392_arg_0 & mask_SORT_1; + SORT_1 var_392_arg_1 = var_391; + SORT_1 var_392 = var_392_arg_0 | var_392_arg_1; + SORT_1 var_338_arg_0 = input_325; + SORT_3 var_338_arg_1 = var_94; + SORT_3 var_338_arg_2 = input_163; + SORT_3 var_338 = var_338_arg_0 ? var_338_arg_1 : var_338_arg_2; + SORT_1 var_435_arg_0 = input_335; + SORT_3 var_435_arg_1 = var_94; + SORT_3 var_435_arg_2 = var_338; + SORT_3 var_435 = var_435_arg_0 ? var_435_arg_1 : var_435_arg_2; + SORT_5 var_492_arg_0 = var_491; + SORT_3 var_492_arg_1 = var_435; + SORT_6 var_492 = ((SORT_6)var_492_arg_0 << 8) | var_492_arg_1; + SORT_6 var_493_arg_0 = var_213; + SORT_6 var_493_arg_1 = var_492; + SORT_6 var_493 = var_493_arg_0 + var_493_arg_1; + SORT_6 var_494_arg_0 = var_493; + SORT_3 var_494 = var_494_arg_0 >> 0; + SORT_1 var_495_arg_0 = input_441; + SORT_3 var_495_arg_1 = var_494; + SORT_3 var_495_arg_2 = var_435; + SORT_3 var_495 = var_495_arg_0 ? var_495_arg_1 : var_495_arg_2; + SORT_5 var_496_arg_0 = var_491; + SORT_3 var_496_arg_1 = var_495; + SORT_6 var_496 = ((SORT_6)var_496_arg_0 << 8) | var_496_arg_1; + SORT_6 var_497_arg_0 = var_213; + SORT_6 var_497_arg_1 = var_496; + SORT_6 var_497 = var_497_arg_0 + var_497_arg_1; + SORT_6 var_498_arg_0 = var_497; + SORT_3 var_498 = var_498_arg_0 >> 0; + SORT_1 var_499_arg_0 = input_455; + SORT_3 var_499_arg_1 = var_498; + SORT_3 var_499_arg_2 = var_495; + SORT_3 var_499 = var_499_arg_0 ? var_499_arg_1 : var_499_arg_2; + SORT_5 var_500_arg_0 = var_491; + SORT_3 var_500_arg_1 = var_499; + SORT_6 var_500 = ((SORT_6)var_500_arg_0 << 8) | var_500_arg_1; + SORT_6 var_501_arg_0 = var_213; + SORT_6 var_501_arg_1 = var_500; + SORT_6 var_501 = var_501_arg_0 + var_501_arg_1; + SORT_6 var_502_arg_0 = var_501; + SORT_3 var_502 = var_502_arg_0 >> 0; + SORT_1 var_503_arg_0 = input_470; + SORT_3 var_503_arg_1 = var_502; + SORT_3 var_503_arg_2 = var_499; + SORT_3 var_503 = var_503_arg_0 ? var_503_arg_1 : var_503_arg_2; + SORT_5 var_504_arg_0 = var_491; + SORT_3 var_504_arg_1 = var_503; + SORT_6 var_504 = ((SORT_6)var_504_arg_0 << 8) | var_504_arg_1; + SORT_6 var_505_arg_0 = var_213; + SORT_6 var_505_arg_1 = var_504; + SORT_6 var_505 = var_505_arg_0 + var_505_arg_1; + SORT_6 var_506_arg_0 = var_505; + SORT_3 var_506 = var_506_arg_0 >> 0; + SORT_1 var_507_arg_0 = input_475; + SORT_3 var_507_arg_1 = var_506; + SORT_3 var_507_arg_2 = var_503; + SORT_3 var_507 = var_507_arg_0 ? var_507_arg_1 : var_507_arg_2; + SORT_5 var_637_arg_0 = var_491; + SORT_3 var_637_arg_1 = var_507; + SORT_6 var_637 = ((SORT_6)var_637_arg_0 << 8) | var_637_arg_1; + SORT_6 var_638_arg_0 = var_213; + SORT_6 var_638_arg_1 = var_637; + SORT_6 var_638 = var_638_arg_0 + var_638_arg_1; + SORT_6 var_639_arg_0 = var_638; + SORT_3 var_639 = var_639_arg_0 >> 0; + SORT_1 var_640_arg_0 = input_533; + SORT_3 var_640_arg_1 = var_639; + SORT_3 var_640_arg_2 = var_507; + SORT_3 var_640 = var_640_arg_0 ? var_640_arg_1 : var_640_arg_2; + SORT_5 var_641_arg_0 = var_491; + SORT_3 var_641_arg_1 = var_640; + SORT_6 var_641 = ((SORT_6)var_641_arg_0 << 8) | var_641_arg_1; + SORT_6 var_642_arg_0 = var_213; + SORT_6 var_642_arg_1 = var_641; + SORT_6 var_642 = var_642_arg_0 + var_642_arg_1; + SORT_6 var_643_arg_0 = var_642; + SORT_3 var_643 = var_643_arg_0 >> 0; + SORT_1 var_644_arg_0 = input_554; + SORT_3 var_644_arg_1 = var_643; + SORT_3 var_644_arg_2 = var_640; + SORT_3 var_644 = var_644_arg_0 ? var_644_arg_1 : var_644_arg_2; + SORT_5 var_645_arg_0 = var_491; + SORT_3 var_645_arg_1 = var_644; + SORT_6 var_645 = ((SORT_6)var_645_arg_0 << 8) | var_645_arg_1; + SORT_6 var_646_arg_0 = var_213; + SORT_6 var_646_arg_1 = var_645; + SORT_6 var_646 = var_646_arg_0 + var_646_arg_1; + SORT_6 var_647_arg_0 = var_646; + SORT_3 var_647 = var_647_arg_0 >> 0; + SORT_1 var_648_arg_0 = input_569; + SORT_3 var_648_arg_1 = var_647; + SORT_3 var_648_arg_2 = var_644; + SORT_3 var_648 = var_648_arg_0 ? var_648_arg_1 : var_648_arg_2; + SORT_5 var_649_arg_0 = var_491; + SORT_3 var_649_arg_1 = var_648; + SORT_6 var_649 = ((SORT_6)var_649_arg_0 << 8) | var_649_arg_1; + SORT_6 var_650_arg_0 = var_213; + SORT_6 var_650_arg_1 = var_649; + SORT_6 var_650 = var_650_arg_0 + var_650_arg_1; + SORT_6 var_651_arg_0 = var_650; + SORT_3 var_651 = var_651_arg_0 >> 0; + SORT_1 var_652_arg_0 = input_583; + SORT_3 var_652_arg_1 = var_651; + SORT_3 var_652_arg_2 = var_648; + SORT_3 var_652 = var_652_arg_0 ? var_652_arg_1 : var_652_arg_2; + SORT_5 var_653_arg_0 = var_491; + SORT_3 var_653_arg_1 = var_652; + SORT_6 var_653 = ((SORT_6)var_653_arg_0 << 8) | var_653_arg_1; + SORT_6 var_654_arg_0 = var_213; + SORT_6 var_654_arg_1 = var_653; + SORT_6 var_654 = var_654_arg_0 + var_654_arg_1; + SORT_6 var_655_arg_0 = var_654; + SORT_3 var_655 = var_655_arg_0 >> 0; + SORT_1 var_656_arg_0 = input_594; + SORT_3 var_656_arg_1 = var_655; + SORT_3 var_656_arg_2 = var_652; + SORT_3 var_656 = var_656_arg_0 ? var_656_arg_1 : var_656_arg_2; + SORT_5 var_657_arg_0 = var_491; + SORT_3 var_657_arg_1 = var_656; + SORT_6 var_657 = ((SORT_6)var_657_arg_0 << 8) | var_657_arg_1; + SORT_6 var_658_arg_0 = var_213; + SORT_6 var_658_arg_1 = var_657; + SORT_6 var_658 = var_658_arg_0 + var_658_arg_1; + SORT_6 var_659_arg_0 = var_658; + SORT_3 var_659 = var_659_arg_0 >> 0; + SORT_1 var_660_arg_0 = input_602; + SORT_3 var_660_arg_1 = var_659; + SORT_3 var_660_arg_2 = var_656; + SORT_3 var_660 = var_660_arg_0 ? var_660_arg_1 : var_660_arg_2; + SORT_5 var_661_arg_0 = var_491; + SORT_3 var_661_arg_1 = var_660; + SORT_6 var_661 = ((SORT_6)var_661_arg_0 << 8) | var_661_arg_1; + SORT_6 var_662_arg_0 = var_213; + SORT_6 var_662_arg_1 = var_661; + SORT_6 var_662 = var_662_arg_0 + var_662_arg_1; + SORT_6 var_663_arg_0 = var_662; + SORT_3 var_663 = var_663_arg_0 >> 0; + SORT_1 var_664_arg_0 = input_617; + SORT_3 var_664_arg_1 = var_663; + SORT_3 var_664_arg_2 = var_660; + SORT_3 var_664 = var_664_arg_0 ? var_664_arg_1 : var_664_arg_2; + SORT_5 var_665_arg_0 = var_491; + SORT_3 var_665_arg_1 = var_664; + SORT_6 var_665 = ((SORT_6)var_665_arg_0 << 8) | var_665_arg_1; + SORT_6 var_666_arg_0 = var_213; + SORT_6 var_666_arg_1 = var_665; + SORT_6 var_666 = var_666_arg_0 + var_666_arg_1; + SORT_6 var_667_arg_0 = var_666; + SORT_3 var_667 = var_667_arg_0 >> 0; + SORT_1 var_668_arg_0 = input_622; + SORT_3 var_668_arg_1 = var_667; + SORT_3 var_668_arg_2 = var_664; + SORT_3 var_668 = var_668_arg_0 ? var_668_arg_1 : var_668_arg_2; + SORT_5 var_960_arg_0 = var_491; + SORT_3 var_960_arg_1 = var_668; + SORT_6 var_960 = ((SORT_6)var_960_arg_0 << 8) | var_960_arg_1; + SORT_6 var_961_arg_0 = var_213; + SORT_6 var_961_arg_1 = var_960; + SORT_6 var_961 = var_961_arg_0 + var_961_arg_1; + SORT_6 var_962_arg_0 = var_961; + SORT_3 var_962 = var_962_arg_0 >> 0; + SORT_1 var_963_arg_0 = input_695; + SORT_3 var_963_arg_1 = var_962; + SORT_3 var_963_arg_2 = var_668; + SORT_3 var_963 = var_963_arg_0 ? var_963_arg_1 : var_963_arg_2; + SORT_5 var_964_arg_0 = var_491; + SORT_3 var_964_arg_1 = var_963; + SORT_6 var_964 = ((SORT_6)var_964_arg_0 << 8) | var_964_arg_1; + SORT_6 var_965_arg_0 = var_213; + SORT_6 var_965_arg_1 = var_964; + SORT_6 var_965 = var_965_arg_0 + var_965_arg_1; + SORT_6 var_966_arg_0 = var_965; + SORT_3 var_966 = var_966_arg_0 >> 0; + SORT_1 var_967_arg_0 = input_716; + SORT_3 var_967_arg_1 = var_966; + SORT_3 var_967_arg_2 = var_963; + SORT_3 var_967 = var_967_arg_0 ? var_967_arg_1 : var_967_arg_2; + SORT_5 var_968_arg_0 = var_491; + SORT_3 var_968_arg_1 = var_967; + SORT_6 var_968 = ((SORT_6)var_968_arg_0 << 8) | var_968_arg_1; + SORT_6 var_969_arg_0 = var_213; + SORT_6 var_969_arg_1 = var_968; + SORT_6 var_969 = var_969_arg_0 + var_969_arg_1; + SORT_6 var_970_arg_0 = var_969; + SORT_3 var_970 = var_970_arg_0 >> 0; + SORT_1 var_971_arg_0 = input_731; + SORT_3 var_971_arg_1 = var_970; + SORT_3 var_971_arg_2 = var_967; + SORT_3 var_971 = var_971_arg_0 ? var_971_arg_1 : var_971_arg_2; + SORT_5 var_972_arg_0 = var_491; + SORT_3 var_972_arg_1 = var_971; + SORT_6 var_972 = ((SORT_6)var_972_arg_0 << 8) | var_972_arg_1; + SORT_6 var_973_arg_0 = var_213; + SORT_6 var_973_arg_1 = var_972; + SORT_6 var_973 = var_973_arg_0 + var_973_arg_1; + SORT_6 var_974_arg_0 = var_973; + SORT_3 var_974 = var_974_arg_0 >> 0; + SORT_1 var_975_arg_0 = input_745; + SORT_3 var_975_arg_1 = var_974; + SORT_3 var_975_arg_2 = var_971; + SORT_3 var_975 = var_975_arg_0 ? var_975_arg_1 : var_975_arg_2; + SORT_3 var_669_arg_0 = var_442; + SORT_3 var_669_arg_1 = var_668; + SORT_1 var_669 = var_669_arg_0 == var_669_arg_1; + SORT_1 var_670_arg_0 = var_636; + SORT_1 var_670_arg_1 = var_669; + SORT_1 var_670 = var_670_arg_0 & var_670_arg_1; + SORT_1 var_671_arg_0 = var_635; + SORT_1 var_671_arg_1 = var_670; + SORT_1 var_671 = var_671_arg_0 & var_671_arg_1; + SORT_1 var_672_arg_0 = ~input_634; + var_672_arg_0 = var_672_arg_0 & mask_SORT_1; + SORT_1 var_672_arg_1 = var_671; + SORT_1 var_672 = var_672_arg_0 | var_672_arg_1; + SORT_3 var_508_arg_0 = var_94; + SORT_3 var_508_arg_1 = var_507; + SORT_1 var_508 = var_508_arg_0 == var_508_arg_1; + SORT_1 var_509_arg_0 = var_490; + SORT_1 var_509_arg_1 = var_508; + SORT_1 var_509 = var_509_arg_0 & var_509_arg_1; + SORT_1 var_510_arg_0 = var_489; + SORT_1 var_510_arg_1 = var_509; + SORT_1 var_510 = var_510_arg_0 & var_510_arg_1; + SORT_1 var_511_arg_0 = ~input_488; + var_511_arg_0 = var_511_arg_0 & mask_SORT_1; + SORT_1 var_511_arg_1 = var_510; + SORT_1 var_511 = var_511_arg_0 | var_511_arg_1; + SORT_3 var_436_arg_0 = var_337; + SORT_3 var_436_arg_1 = var_435; + SORT_1 var_436 = var_436_arg_0 == var_436_arg_1; + SORT_1 var_437_arg_0 = var_434; + SORT_1 var_437_arg_1 = var_436; + SORT_1 var_437 = var_437_arg_0 & var_437_arg_1; + SORT_1 var_438_arg_0 = var_420; + SORT_1 var_438_arg_1 = var_437; + SORT_1 var_438 = var_438_arg_0 & var_438_arg_1; + SORT_1 var_439_arg_0 = ~input_428; + var_439_arg_0 = var_439_arg_0 & mask_SORT_1; + SORT_1 var_439_arg_1 = var_438; + SORT_1 var_439 = var_439_arg_0 | var_439_arg_1; + SORT_3 var_339_arg_0 = var_337; + SORT_3 var_339_arg_1 = var_338; + SORT_1 var_339 = var_339_arg_0 == var_339_arg_1; + SORT_1 var_340_arg_0 = var_336; + SORT_1 var_340_arg_1 = var_339; + SORT_1 var_340 = var_340_arg_0 & var_340_arg_1; + SORT_1 var_341_arg_0 = ~input_335; + var_341_arg_0 = var_341_arg_0 & mask_SORT_1; + SORT_1 var_341_arg_1 = var_340; + SORT_1 var_341 = var_341_arg_0 | var_341_arg_1; + SORT_1 var_342_arg_0 = var_334; + SORT_1 var_342_arg_1 = var_341; + SORT_1 var_342 = var_342_arg_0 & var_342_arg_1; + SORT_1 var_393_arg_0 = var_342; + SORT_1 var_393_arg_1 = var_392; + SORT_1 var_393 = var_393_arg_0 & var_393_arg_1; + SORT_1 var_408_arg_0 = var_393; + SORT_1 var_408_arg_1 = var_407; + SORT_1 var_408 = var_408_arg_0 & var_408_arg_1; + SORT_1 var_418_arg_0 = var_408; + SORT_1 var_418_arg_1 = var_417; + SORT_1 var_418 = var_418_arg_0 & var_418_arg_1; + SORT_1 var_427_arg_0 = var_418; + SORT_1 var_427_arg_1 = var_426; + SORT_1 var_427 = var_427_arg_0 & var_427_arg_1; + SORT_1 var_440_arg_0 = var_427; + SORT_1 var_440_arg_1 = var_439; + SORT_1 var_440 = var_440_arg_0 & var_440_arg_1; + SORT_1 var_454_arg_0 = var_440; + SORT_1 var_454_arg_1 = var_453; + SORT_1 var_454 = var_454_arg_0 & var_454_arg_1; + SORT_1 var_469_arg_0 = var_454; + SORT_1 var_469_arg_1 = var_468; + SORT_1 var_469 = var_469_arg_0 & var_469_arg_1; + SORT_1 var_474_arg_0 = var_469; + SORT_1 var_474_arg_1 = var_473; + SORT_1 var_474 = var_474_arg_0 & var_474_arg_1; + SORT_1 var_487_arg_0 = var_474; + SORT_1 var_487_arg_1 = var_486; + SORT_1 var_487 = var_487_arg_0 & var_487_arg_1; + SORT_1 var_512_arg_0 = var_487; + SORT_1 var_512_arg_1 = var_511; + SORT_1 var_512 = var_512_arg_0 & var_512_arg_1; + SORT_1 var_532_arg_0 = var_512; + SORT_1 var_532_arg_1 = var_531; + SORT_1 var_532 = var_532_arg_0 & var_532_arg_1; + SORT_1 var_553_arg_0 = var_532; + SORT_1 var_553_arg_1 = var_552; + SORT_1 var_553 = var_553_arg_0 & var_553_arg_1; + SORT_1 var_568_arg_0 = var_553; + SORT_1 var_568_arg_1 = var_567; + SORT_1 var_568 = var_568_arg_0 & var_568_arg_1; + SORT_1 var_582_arg_0 = var_568; + SORT_1 var_582_arg_1 = var_581; + SORT_1 var_582 = var_582_arg_0 & var_582_arg_1; + SORT_1 var_593_arg_0 = var_582; + SORT_1 var_593_arg_1 = var_592; + SORT_1 var_593 = var_593_arg_0 & var_593_arg_1; + SORT_1 var_601_arg_0 = var_593; + SORT_1 var_601_arg_1 = var_600; + SORT_1 var_601 = var_601_arg_0 & var_601_arg_1; + SORT_1 var_616_arg_0 = var_601; + SORT_1 var_616_arg_1 = var_615; + SORT_1 var_616 = var_616_arg_0 & var_616_arg_1; + SORT_1 var_621_arg_0 = var_616; + SORT_1 var_621_arg_1 = var_620; + SORT_1 var_621 = var_621_arg_0 & var_621_arg_1; + SORT_1 var_633_arg_0 = var_621; + SORT_1 var_633_arg_1 = var_632; + SORT_1 var_633 = var_633_arg_0 & var_633_arg_1; + SORT_1 var_673_arg_0 = var_633; + SORT_1 var_673_arg_1 = var_672; + SORT_1 var_673 = var_673_arg_0 & var_673_arg_1; + SORT_1 var_694_arg_0 = var_673; + SORT_1 var_694_arg_1 = var_693; + SORT_1 var_694 = var_694_arg_0 & var_694_arg_1; + SORT_1 var_715_arg_0 = var_694; + SORT_1 var_715_arg_1 = var_714; + SORT_1 var_715 = var_715_arg_0 & var_715_arg_1; + SORT_1 var_730_arg_0 = var_715; + SORT_1 var_730_arg_1 = var_729; + SORT_1 var_730 = var_730_arg_0 & var_730_arg_1; + SORT_1 var_744_arg_0 = var_730; + SORT_1 var_744_arg_1 = var_743; + SORT_1 var_744 = var_744_arg_0 & var_744_arg_1; + SORT_1 var_755_arg_0 = var_744; + SORT_1 var_755_arg_1 = var_754; + SORT_1 var_755 = var_755_arg_0 & var_755_arg_1; + SORT_1 var_791_arg_0 = var_755; + SORT_1 var_791_arg_1 = var_790; + SORT_1 var_791 = var_791_arg_0 & var_791_arg_1; + SORT_1 var_830_arg_0 = var_791; + SORT_1 var_830_arg_1 = var_829; + SORT_1 var_830 = var_830_arg_0 & var_830_arg_1; + SORT_1 var_893_arg_0 = var_830; + SORT_1 var_893_arg_1 = var_892; + SORT_1 var_893 = var_893_arg_0 & var_893_arg_1; + SORT_1 var_1015_arg_0 = var_886; + SORT_1 var_1015_arg_1 = state_74; + SORT_1 var_1015 = var_1015_arg_0 == var_1015_arg_1; + SORT_1 var_1013_arg_0 = var_884; + SORT_1 var_1013_arg_1 = state_72; + SORT_1 var_1013 = var_1013_arg_0 == var_1013_arg_1; + SORT_1 var_1011_arg_0 = var_883; + SORT_1 var_1011_arg_1 = state_70; + SORT_1 var_1011 = var_1011_arg_0 == var_1011_arg_1; + SORT_1 var_1009_arg_0 = var_871; + SORT_1 var_1009_arg_1 = state_68; + SORT_1 var_1009 = var_1009_arg_0 == var_1009_arg_1; + SORT_1 var_1007_arg_0 = var_869; + SORT_1 var_1007_arg_1 = state_66; + SORT_1 var_1007 = var_1007_arg_0 == var_1007_arg_1; + SORT_1 var_1005_arg_0 = var_868; + SORT_1 var_1005_arg_1 = state_64; + SORT_1 var_1005 = var_1005_arg_0 == var_1005_arg_1; + SORT_1 var_1003_arg_0 = input_187; + SORT_1 var_1003_arg_1 = state_62; + SORT_1 var_1003 = var_1003_arg_0 == var_1003_arg_1; + SORT_1 var_1001_arg_0 = var_854; + SORT_1 var_1001_arg_1 = state_60; + SORT_1 var_1001 = var_1001_arg_0 == var_1001_arg_1; + SORT_1 var_999_arg_0 = var_850; + SORT_1 var_999_arg_1 = state_58; + SORT_1 var_999 = var_999_arg_0 == var_999_arg_1; + SORT_1 var_997_arg_0 = var_846; + SORT_1 var_997_arg_1 = state_56; + SORT_1 var_997 = var_997_arg_0 == var_997_arg_1; + SORT_1 var_995_arg_0 = input_179; + SORT_1 var_995_arg_1 = state_54; + SORT_1 var_995 = var_995_arg_0 == var_995_arg_1; + SORT_1 var_993_arg_0 = var_839; + SORT_1 var_993_arg_1 = state_52; + SORT_1 var_993 = var_993_arg_0 == var_993_arg_1; + SORT_1 var_991_arg_0 = var_835; + SORT_1 var_991_arg_1 = state_50; + SORT_1 var_991 = var_991_arg_0 == var_991_arg_1; + SORT_1 var_989_arg_0 = var_833; + SORT_1 var_989_arg_1 = state_48; + SORT_1 var_989 = var_989_arg_0 == var_989_arg_1; + SORT_1 var_987_arg_0 = var_831; + SORT_1 var_987_arg_1 = state_46; + SORT_1 var_987 = var_987_arg_0 == var_987_arg_1; + SORT_1 var_80_arg_0 = state_46; + SORT_1 var_80_arg_1 = ~state_48; + var_80_arg_1 = var_80_arg_1 & mask_SORT_1; + SORT_1 var_80 = var_80_arg_0 & var_80_arg_1; + SORT_1 var_81_arg_0 = var_80; + SORT_1 var_81_arg_1 = ~state_50; + var_81_arg_1 = var_81_arg_1 & mask_SORT_1; + SORT_1 var_81 = var_81_arg_0 & var_81_arg_1; + SORT_1 var_82_arg_0 = var_81; + SORT_1 var_82_arg_1 = ~state_52; + var_82_arg_1 = var_82_arg_1 & mask_SORT_1; + SORT_1 var_82 = var_82_arg_0 & var_82_arg_1; + SORT_1 var_83_arg_0 = var_82; + SORT_1 var_83_arg_1 = ~state_54; + var_83_arg_1 = var_83_arg_1 & mask_SORT_1; + SORT_1 var_83 = var_83_arg_0 & var_83_arg_1; + SORT_1 var_84_arg_0 = var_83; + SORT_1 var_84_arg_1 = ~state_56; + var_84_arg_1 = var_84_arg_1 & mask_SORT_1; + SORT_1 var_84 = var_84_arg_0 & var_84_arg_1; + SORT_1 var_85_arg_0 = var_84; + SORT_1 var_85_arg_1 = ~state_58; + var_85_arg_1 = var_85_arg_1 & mask_SORT_1; + SORT_1 var_85 = var_85_arg_0 & var_85_arg_1; + SORT_1 var_86_arg_0 = var_85; + SORT_1 var_86_arg_1 = ~state_60; + var_86_arg_1 = var_86_arg_1 & mask_SORT_1; + SORT_1 var_86 = var_86_arg_0 & var_86_arg_1; + SORT_1 var_87_arg_0 = var_86; + SORT_1 var_87_arg_1 = ~state_62; + var_87_arg_1 = var_87_arg_1 & mask_SORT_1; + SORT_1 var_87 = var_87_arg_0 & var_87_arg_1; + SORT_1 var_88_arg_0 = var_87; + SORT_1 var_88_arg_1 = state_64; + SORT_1 var_88 = var_88_arg_0 & var_88_arg_1; + SORT_1 var_89_arg_0 = var_88; + SORT_1 var_89_arg_1 = ~state_66; + var_89_arg_1 = var_89_arg_1 & mask_SORT_1; + SORT_1 var_89 = var_89_arg_0 & var_89_arg_1; + SORT_1 var_90_arg_0 = var_89; + SORT_1 var_90_arg_1 = ~state_68; + var_90_arg_1 = var_90_arg_1 & mask_SORT_1; + SORT_1 var_90 = var_90_arg_0 & var_90_arg_1; + SORT_1 var_91_arg_0 = var_90; + SORT_1 var_91_arg_1 = state_70; + SORT_1 var_91 = var_91_arg_0 & var_91_arg_1; + SORT_1 var_92_arg_0 = var_91; + SORT_1 var_92_arg_1 = ~state_72; + var_92_arg_1 = var_92_arg_1 & mask_SORT_1; + SORT_1 var_92 = var_92_arg_0 & var_92_arg_1; + SORT_1 var_93_arg_0 = var_92; + SORT_1 var_93_arg_1 = ~state_74; + var_93_arg_1 = var_93_arg_1 & mask_SORT_1; + SORT_1 var_93 = var_93_arg_0 & var_93_arg_1; + SORT_4 var_985_arg_0 = var_984; + SORT_4 var_985_arg_1 = state_43; + SORT_1 var_985 = var_985_arg_0 == var_985_arg_1; + SORT_4 var_131_arg_0 = var_107; + SORT_4 var_131_arg_1 = state_43; + SORT_1 var_131 = var_131_arg_0 == var_131_arg_1; + SORT_4 var_982_arg_0 = var_981; + SORT_4 var_982_arg_1 = state_41; + SORT_1 var_982 = var_982_arg_0 == var_982_arg_1; + SORT_4 var_129_arg_0 = var_107; + SORT_4 var_129_arg_1 = state_41; + SORT_1 var_129 = var_129_arg_0 == var_129_arg_1; + SORT_4 var_979_arg_0 = var_978; + SORT_4 var_979_arg_1 = state_39; + SORT_1 var_979 = var_979_arg_0 == var_979_arg_1; + SORT_4 var_127_arg_0 = var_107; + SORT_4 var_127_arg_1 = state_39; + SORT_1 var_127 = var_127_arg_0 == var_127_arg_1; + SORT_3 var_976_arg_0 = var_975; + SORT_3 var_976_arg_1 = state_37; + SORT_1 var_976 = var_976_arg_0 == var_976_arg_1; + SORT_3 var_125_arg_0 = var_94; + SORT_3 var_125_arg_1 = state_37; + SORT_1 var_125 = var_125_arg_0 == var_125_arg_1; + SORT_3 var_958_arg_0 = var_446; + SORT_3 var_958_arg_1 = state_35; + SORT_1 var_958 = var_958_arg_0 == var_958_arg_1; + SORT_3 var_123_arg_0 = var_94; + SORT_3 var_123_arg_1 = state_35; + SORT_1 var_123 = var_123_arg_0 == var_123_arg_1; + SORT_4 var_956_arg_0 = input_159; + SORT_4 var_956_arg_1 = state_33; + SORT_1 var_956 = var_956_arg_0 == var_956_arg_1; + SORT_4 var_121_arg_0 = var_120; + SORT_4 var_121_arg_1 = state_33; + SORT_1 var_121 = var_121_arg_0 == var_121_arg_1; + SORT_4 var_954_arg_0 = var_748; + SORT_4 var_954_arg_1 = state_31; + SORT_1 var_954 = var_954_arg_0 == var_954_arg_1; + SORT_4 var_118_arg_0 = var_107; + SORT_4 var_118_arg_1 = state_31; + SORT_1 var_118 = var_118_arg_0 == var_118_arg_1; + SORT_4 var_952_arg_0 = var_586; + SORT_4 var_952_arg_1 = state_29; + SORT_1 var_952 = var_952_arg_0 == var_952_arg_1; + SORT_4 var_116_arg_0 = var_107; + SORT_4 var_116_arg_1 = state_29; + SORT_1 var_116 = var_116_arg_0 == var_116_arg_1; + SORT_4 var_950_arg_0 = var_949; + SORT_4 var_950_arg_1 = state_27; + SORT_1 var_950 = var_950_arg_0 == var_950_arg_1; + SORT_4 var_114_arg_0 = var_107; + SORT_4 var_114_arg_1 = state_27; + SORT_1 var_114 = var_114_arg_0 == var_114_arg_1; + SORT_4 var_947_arg_0 = var_686; + SORT_4 var_947_arg_1 = state_25; + SORT_1 var_947 = var_947_arg_0 == var_947_arg_1; + SORT_4 var_112_arg_0 = var_107; + SORT_4 var_112_arg_1 = state_25; + SORT_1 var_112 = var_112_arg_0 == var_112_arg_1; + SORT_4 var_945_arg_0 = var_737; + SORT_4 var_945_arg_1 = state_23; + SORT_1 var_945 = var_945_arg_0 == var_945_arg_1; + SORT_4 var_110_arg_0 = var_107; + SORT_4 var_110_arg_1 = state_23; + SORT_1 var_110 = var_110_arg_0 == var_110_arg_1; + SORT_4 var_943_arg_0 = var_575; + SORT_4 var_943_arg_1 = state_21; + SORT_1 var_943 = var_943_arg_0 == var_943_arg_1; + SORT_4 var_108_arg_0 = var_107; + SORT_4 var_108_arg_1 = state_21; + SORT_1 var_108 = var_108_arg_0 == var_108_arg_1; + SORT_3 var_941_arg_0 = var_940; + SORT_3 var_941_arg_1 = state_18; + SORT_1 var_941 = var_941_arg_0 == var_941_arg_1; + SORT_3 var_105_arg_0 = var_94; + SORT_3 var_105_arg_1 = state_18; + SORT_1 var_105 = var_105_arg_0 == var_105_arg_1; + SORT_3 var_929_arg_0 = var_928; + SORT_3 var_929_arg_1 = state_16; + SORT_1 var_929 = var_929_arg_0 == var_929_arg_1; + SORT_3 var_103_arg_0 = var_94; + SORT_3 var_103_arg_1 = state_16; + SORT_1 var_103 = var_103_arg_0 == var_103_arg_1; + SORT_3 var_915_arg_0 = var_914; + SORT_3 var_915_arg_1 = state_14; + SORT_1 var_915 = var_915_arg_0 == var_915_arg_1; + SORT_3 var_101_arg_0 = var_94; + SORT_3 var_101_arg_1 = state_14; + SORT_1 var_101 = var_101_arg_0 == var_101_arg_1; + SORT_3 var_912_arg_0 = var_911; + SORT_3 var_912_arg_1 = state_12; + SORT_1 var_912 = var_912_arg_0 == var_912_arg_1; + SORT_3 var_99_arg_0 = var_94; + SORT_3 var_99_arg_1 = state_12; + SORT_1 var_99 = var_99_arg_0 == var_99_arg_1; + SORT_3 var_909_arg_0 = var_908; + SORT_3 var_909_arg_1 = state_10; + SORT_1 var_909 = var_909_arg_0 == var_909_arg_1; + SORT_3 var_97_arg_0 = var_94; + SORT_3 var_97_arg_1 = state_10; + SORT_1 var_97 = var_97_arg_0 == var_97_arg_1; + SORT_3 var_903_arg_0 = var_902; + SORT_3 var_903_arg_1 = state_8; + SORT_1 var_903 = var_903_arg_0 == var_903_arg_1; + SORT_1 var_904_arg_0 = var_893; + SORT_1 var_904_arg_1 = var_903; + SORT_1 var_904 = var_904_arg_0 & var_904_arg_1; + SORT_1 var_910_arg_0 = var_904; + SORT_1 var_910_arg_1 = var_909; + SORT_1 var_910 = var_910_arg_0 & var_910_arg_1; + SORT_1 var_913_arg_0 = var_910; + SORT_1 var_913_arg_1 = var_912; + SORT_1 var_913 = var_913_arg_0 & var_913_arg_1; + SORT_1 var_916_arg_0 = var_913; + SORT_1 var_916_arg_1 = var_915; + SORT_1 var_916 = var_916_arg_0 & var_916_arg_1; + SORT_1 var_930_arg_0 = var_916; + SORT_1 var_930_arg_1 = var_929; + SORT_1 var_930 = var_930_arg_0 & var_930_arg_1; + SORT_1 var_942_arg_0 = var_930; + SORT_1 var_942_arg_1 = var_941; + SORT_1 var_942 = var_942_arg_0 & var_942_arg_1; + SORT_1 var_944_arg_0 = var_942; + SORT_1 var_944_arg_1 = var_943; + SORT_1 var_944 = var_944_arg_0 & var_944_arg_1; + SORT_1 var_946_arg_0 = var_944; + SORT_1 var_946_arg_1 = var_945; + SORT_1 var_946 = var_946_arg_0 & var_946_arg_1; + SORT_1 var_948_arg_0 = var_946; + SORT_1 var_948_arg_1 = var_947; + SORT_1 var_948 = var_948_arg_0 & var_948_arg_1; + SORT_1 var_951_arg_0 = var_948; + SORT_1 var_951_arg_1 = var_950; + SORT_1 var_951 = var_951_arg_0 & var_951_arg_1; + SORT_1 var_953_arg_0 = var_951; + SORT_1 var_953_arg_1 = var_952; + SORT_1 var_953 = var_953_arg_0 & var_953_arg_1; + SORT_1 var_955_arg_0 = var_953; + SORT_1 var_955_arg_1 = var_954; + SORT_1 var_955 = var_955_arg_0 & var_955_arg_1; + SORT_1 var_957_arg_0 = var_955; + SORT_1 var_957_arg_1 = var_956; + SORT_1 var_957 = var_957_arg_0 & var_957_arg_1; + SORT_1 var_959_arg_0 = var_957; + SORT_1 var_959_arg_1 = var_958; + SORT_1 var_959 = var_959_arg_0 & var_959_arg_1; + SORT_1 var_977_arg_0 = var_959; + SORT_1 var_977_arg_1 = var_976; + SORT_1 var_977 = var_977_arg_0 & var_977_arg_1; + SORT_1 var_980_arg_0 = var_977; + SORT_1 var_980_arg_1 = var_979; + SORT_1 var_980 = var_980_arg_0 & var_980_arg_1; + SORT_1 var_983_arg_0 = var_980; + SORT_1 var_983_arg_1 = var_982; + SORT_1 var_983 = var_983_arg_0 & var_983_arg_1; + SORT_1 var_986_arg_0 = var_983; + SORT_1 var_986_arg_1 = var_985; + SORT_1 var_986 = var_986_arg_0 & var_986_arg_1; + SORT_1 var_988_arg_0 = var_986; + SORT_1 var_988_arg_1 = var_987; + SORT_1 var_988 = var_988_arg_0 & var_988_arg_1; + SORT_1 var_990_arg_0 = var_988; + SORT_1 var_990_arg_1 = var_989; + SORT_1 var_990 = var_990_arg_0 & var_990_arg_1; + SORT_1 var_992_arg_0 = var_990; + SORT_1 var_992_arg_1 = var_991; + SORT_1 var_992 = var_992_arg_0 & var_992_arg_1; + SORT_1 var_994_arg_0 = var_992; + SORT_1 var_994_arg_1 = var_993; + SORT_1 var_994 = var_994_arg_0 & var_994_arg_1; + SORT_1 var_996_arg_0 = var_994; + SORT_1 var_996_arg_1 = var_995; + SORT_1 var_996 = var_996_arg_0 & var_996_arg_1; + SORT_1 var_998_arg_0 = var_996; + SORT_1 var_998_arg_1 = var_997; + SORT_1 var_998 = var_998_arg_0 & var_998_arg_1; + SORT_1 var_1000_arg_0 = var_998; + SORT_1 var_1000_arg_1 = var_999; + SORT_1 var_1000 = var_1000_arg_0 & var_1000_arg_1; + SORT_1 var_1002_arg_0 = var_1000; + SORT_1 var_1002_arg_1 = var_1001; + SORT_1 var_1002 = var_1002_arg_0 & var_1002_arg_1; + SORT_1 var_1004_arg_0 = var_1002; + SORT_1 var_1004_arg_1 = var_1003; + SORT_1 var_1004 = var_1004_arg_0 & var_1004_arg_1; + SORT_1 var_1006_arg_0 = var_1004; + SORT_1 var_1006_arg_1 = var_1005; + SORT_1 var_1006 = var_1006_arg_0 & var_1006_arg_1; + SORT_1 var_1008_arg_0 = var_1006; + SORT_1 var_1008_arg_1 = var_1007; + SORT_1 var_1008 = var_1008_arg_0 & var_1008_arg_1; + SORT_1 var_1010_arg_0 = var_1008; + SORT_1 var_1010_arg_1 = var_1009; + SORT_1 var_1010 = var_1010_arg_0 & var_1010_arg_1; + SORT_1 var_1012_arg_0 = var_1010; + SORT_1 var_1012_arg_1 = var_1011; + SORT_1 var_1012 = var_1012_arg_0 & var_1012_arg_1; + SORT_1 var_1014_arg_0 = var_1012; + SORT_1 var_1014_arg_1 = var_1013; + SORT_1 var_1014 = var_1014_arg_0 & var_1014_arg_1; + SORT_1 var_1016_arg_0 = var_1014; + SORT_1 var_1016_arg_1 = var_1015; + SORT_1 var_1016 = var_1016_arg_0 & var_1016_arg_1; + SORT_1 var_1017_arg_0 = var_1016; + SORT_1 var_1017_arg_1 = state_78; + SORT_1 var_1017 = var_1017_arg_0 & var_1017_arg_1; + SORT_1 var_1027_arg_0 = state_76; + SORT_1 var_1027_arg_1 = var_1017; + SORT_1 var_1027_arg_2 = var_1026; + SORT_1 var_1027 = var_1027_arg_0 ? var_1027_arg_1 : var_1027_arg_2; + var_1027 = var_1027 & mask_SORT_1; + SORT_3 var_95_arg_0 = var_94; + SORT_3 var_95_arg_1 = state_8; + SORT_1 var_95 = var_95_arg_0 == var_95_arg_1; + SORT_1 var_96_arg_0 = var_93; + SORT_1 var_96_arg_1 = var_95; + SORT_1 var_96 = var_96_arg_0 & var_96_arg_1; + SORT_1 var_98_arg_0 = var_96; + SORT_1 var_98_arg_1 = var_97; + SORT_1 var_98 = var_98_arg_0 & var_98_arg_1; + SORT_1 var_100_arg_0 = var_98; + SORT_1 var_100_arg_1 = var_99; + SORT_1 var_100 = var_100_arg_0 & var_100_arg_1; + SORT_1 var_102_arg_0 = var_100; + SORT_1 var_102_arg_1 = var_101; + SORT_1 var_102 = var_102_arg_0 & var_102_arg_1; + SORT_1 var_104_arg_0 = var_102; + SORT_1 var_104_arg_1 = var_103; + SORT_1 var_104 = var_104_arg_0 & var_104_arg_1; + SORT_1 var_106_arg_0 = var_104; + SORT_1 var_106_arg_1 = var_105; + SORT_1 var_106 = var_106_arg_0 & var_106_arg_1; + SORT_1 var_109_arg_0 = var_106; + SORT_1 var_109_arg_1 = var_108; + SORT_1 var_109 = var_109_arg_0 & var_109_arg_1; + SORT_1 var_111_arg_0 = var_109; + SORT_1 var_111_arg_1 = var_110; + SORT_1 var_111 = var_111_arg_0 & var_111_arg_1; + SORT_1 var_113_arg_0 = var_111; + SORT_1 var_113_arg_1 = var_112; + SORT_1 var_113 = var_113_arg_0 & var_113_arg_1; + SORT_1 var_115_arg_0 = var_113; + SORT_1 var_115_arg_1 = var_114; + SORT_1 var_115 = var_115_arg_0 & var_115_arg_1; + SORT_1 var_117_arg_0 = var_115; + SORT_1 var_117_arg_1 = var_116; + SORT_1 var_117 = var_117_arg_0 & var_117_arg_1; + SORT_1 var_119_arg_0 = var_117; + SORT_1 var_119_arg_1 = var_118; + SORT_1 var_119 = var_119_arg_0 & var_119_arg_1; + SORT_1 var_122_arg_0 = var_119; + SORT_1 var_122_arg_1 = var_121; + SORT_1 var_122 = var_122_arg_0 & var_122_arg_1; + SORT_1 var_124_arg_0 = var_122; + SORT_1 var_124_arg_1 = var_123; + SORT_1 var_124 = var_124_arg_0 & var_124_arg_1; + SORT_1 var_126_arg_0 = var_124; + SORT_1 var_126_arg_1 = var_125; + SORT_1 var_126 = var_126_arg_0 & var_126_arg_1; + SORT_1 var_128_arg_0 = var_126; + SORT_1 var_128_arg_1 = var_127; + SORT_1 var_128 = var_128_arg_0 & var_128_arg_1; + SORT_1 var_130_arg_0 = var_128; + SORT_1 var_130_arg_1 = var_129; + SORT_1 var_130 = var_130_arg_0 & var_130_arg_1; + SORT_1 var_132_arg_0 = var_130; + SORT_1 var_132_arg_1 = var_131; + SORT_1 var_132 = var_132_arg_0 & var_132_arg_1; + SORT_1 var_133_arg_0 = state_78; + SORT_1 var_133_arg_1 = var_132; + SORT_1 var_133 = var_133_arg_0 & var_133_arg_1; + var_133 = var_133 & mask_SORT_1; + // Assuming invariants ... + // Asserting properties ... + SORT_1 bad_134_arg_0 = var_133; + __VERIFIER_assert(!(bad_134_arg_0)); + // Computing next states ... + SORT_3 next_136_arg_1 = input_135; + SORT_3 next_138_arg_1 = input_137; + SORT_3 next_140_arg_1 = input_139; + SORT_3 next_142_arg_1 = input_141; + SORT_3 next_144_arg_1 = input_143; + SORT_3 next_146_arg_1 = input_145; + SORT_4 next_148_arg_1 = input_147; + SORT_4 next_150_arg_1 = input_149; + SORT_4 next_152_arg_1 = input_151; + SORT_4 next_154_arg_1 = input_153; + SORT_4 next_156_arg_1 = input_155; + SORT_4 next_158_arg_1 = input_157; + SORT_4 next_160_arg_1 = input_159; + SORT_3 next_162_arg_1 = input_161; + SORT_3 next_164_arg_1 = input_163; + SORT_4 next_166_arg_1 = input_165; + SORT_4 next_168_arg_1 = input_167; + SORT_4 next_170_arg_1 = input_169; + SORT_1 next_172_arg_1 = input_171; + SORT_1 next_174_arg_1 = input_173; + SORT_1 next_176_arg_1 = input_175; + SORT_1 next_178_arg_1 = input_177; + SORT_1 next_180_arg_1 = input_179; + SORT_1 next_182_arg_1 = input_181; + SORT_1 next_184_arg_1 = input_183; + SORT_1 next_186_arg_1 = input_185; + SORT_1 next_188_arg_1 = input_187; + SORT_1 next_190_arg_1 = input_189; + SORT_1 next_192_arg_1 = input_191; + SORT_1 next_194_arg_1 = input_193; + SORT_1 next_196_arg_1 = input_195; + SORT_1 next_198_arg_1 = input_197; + SORT_1 next_200_arg_1 = input_199; + SORT_1 next_202_arg_1 = var_201; + SORT_1 next_1028_arg_1 = var_1027; + // Assigning next states ... + state_8 = next_136_arg_1; + state_10 = next_138_arg_1; + state_12 = next_140_arg_1; + state_14 = next_142_arg_1; + state_16 = next_144_arg_1; + state_18 = next_146_arg_1; + state_21 = next_148_arg_1; + state_23 = next_150_arg_1; + state_25 = next_152_arg_1; + state_27 = next_154_arg_1; + state_29 = next_156_arg_1; + state_31 = next_158_arg_1; + state_33 = next_160_arg_1; + state_35 = next_162_arg_1; + state_37 = next_164_arg_1; + state_39 = next_166_arg_1; + state_41 = next_168_arg_1; + state_43 = next_170_arg_1; + state_46 = next_172_arg_1; + state_48 = next_174_arg_1; + state_50 = next_176_arg_1; + state_52 = next_178_arg_1; + state_54 = next_180_arg_1; + state_56 = next_182_arg_1; + state_58 = next_184_arg_1; + state_60 = next_186_arg_1; + state_62 = next_188_arg_1; + state_64 = next_190_arg_1; + state_66 = next_192_arg_1; + state_68 = next_194_arg_1; + state_70 = next_196_arg_1; + state_72 = next_198_arg_1; + state_74 = next_200_arg_1; + state_76 = next_202_arg_1; + state_78 = next_1028_arg_1; + } + return 0; +} diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt index 69a64c9070..9312e5fae8 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt @@ -235,7 +235,7 @@ data class CegarConfig( data class CegarAbstractorConfig( @Parameter(names = ["--abstraction-solver"], description = "Abstraction solver name") - var abstractionSolver: String = "Z3", + var abstractionSolver: String = "mathsat:5.6.10", @Parameter( names = ["--validate-abstraction-solver"], description = @@ -260,7 +260,7 @@ data class CegarAbstractorConfig( data class CegarRefinerConfig( @Parameter(names = ["--refinement-solver"], description = "Refinement solver name") - var refinementSolver: String = "Z3", + var refinementSolver: String = "mathsat:5.6.10", @Parameter( names = ["--validate-refinement-solver"], description = @@ -321,7 +321,7 @@ data class BMCConfig( @Parameter(names = ["--non-lf-path"], description = "Disable loop-freeness check") var nonLfPath: Boolean = false, @Parameter(names = ["--bmc-solver"], description = "BMC solver name") - var bmcSolver: String = "Z3", + var bmcSolver: String = "mathsat:5.6.10", @Parameter( names = ["--validate-bmc-solver"], description = @@ -334,7 +334,7 @@ data class InductionConfig( @Parameter(names = ["--no-induction"], description = "Disable induction check") var disable: Boolean = false, @Parameter(names = ["--induction-solver", "--ind-solver"], description = "Induction solver name") - var indSolver: String = "Z3", + var indSolver: String = "mathsat:5.6.10", @Parameter( names = ["--validate-induction-solver"], description = @@ -354,7 +354,7 @@ data class InterpolationConfig( names = ["--interpolation-solver", "--itp-solver"], description = "Interpolation solver name", ) - var itpSolver: String = "Z3", + var itpSolver: String = "mathsat:5.6.10", @Parameter( names = ["--validate-interpolation-solver"], description = @@ -397,7 +397,7 @@ data class PortfolioConfig( data class MddConfig( @Parameter(names = ["--solver", "--mdd-solver"], description = "MDD solver name") - var solver: String = "Z3", + var solver: String = "mathsat:5.6.10", @Parameter( names = ["--validate-solver", "--validate-mdd-solver"], description = @@ -419,7 +419,7 @@ data class MddConfig( data class Ic3Config( @Parameter(names = ["--solver", "--mdd-solver"], description = "MDD solver name") - var solver: String = "Z3", + var solver: String = "mathsat:5.6.10", @Parameter( names = ["--validate-solver", "--validate-mdd-solver"], description = diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt index 5d93ce8636..34fdddb0a6 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt @@ -41,7 +41,7 @@ fun registerAllSolverManagers(home: String, logger: Logger) { logger.write(Logger.Level.INFO, "Registered Z3 SolverManager\n") SolverManager.registerSolverManager(JavaSMTSolverManager.create()) logger.write(Logger.Level.INFO, "Registered JavaSMT SolverManager\n") - if (OsHelper.getOs() == OsHelper.OperatingSystem.LINUX) { + if (OsHelper.getOs() == OsHelper.OperatingSystem.WINDOWS) { val homePath = Path.of(home) val smtLibSolverManager: SmtLibSolverManager = SmtLibSolverManager.create(homePath, logger) SolverManager.registerSolverManager(smtLibSolverManager) diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index baa9720aba..9605c4c117 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -191,6 +191,7 @@ private fun parseC( } } logger.write(Logger.Level.RESULT, "Arithmetic: ${parseContext.arithmeticTraits}\n") + //logger.write(Logger.Level.MAINSTEP, xcfaFromC.toDot()) return xcfaFromC } @@ -253,6 +254,6 @@ private fun parseBTOR2( context.accept(visitor) val xcfa = Btor2XcfaBuilder.btor2xcfa(parseContext, uniqueWarningLogger) - logger.write(Logger.Level.MAINSTEP, "XCFA built successfully") + //logger.write(Logger.Level.MAINSTEP, xcfa.toDot()) return xcfa } From 84d710fc6d4daf74a0fd5166f4b5ec85ff5e7e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sat, 29 Nov 2025 21:39:35 +0100 Subject: [PATCH 70/72] Adding bads right after operations --- .../theta/frontend/models/Btor2Operation.kt | 3 +- .../theta/frontend/models/Btor2Properties.kt | 2 - .../Btor2XcfaBuilder.kt | 370 ++++++++++-------- .../src/test/resources/factorial4even.btor2 | 27 ++ .../xcfa/cli/utils/SolverRegistration.kt | 2 +- 5 files changed, 234 insertions(+), 170 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt index dc3dd294e8..0864282ffe 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Operation.kt @@ -40,7 +40,6 @@ fun getOperandRef(operand: Btor2Node, negated: Boolean = false): Expr { } abstract class Btor2Operation(id: UInt, sort: Btor2Sort) : Btor2Node(id, sort) { - // Ebben volt egy negálás de hát szinte felesleges abstract fun getStmt(): Stmt } @@ -79,7 +78,7 @@ data class Btor2UnaryOperation( } fun valueByBits(): List> { - throw NotImplementedError("reduce perations not implemented in Theta.") + throw NotImplementedError("Reduce operations not implemented in Theta.") } } diff --git a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt index 29ada3f315..03be75991f 100644 --- a/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt +++ b/subprojects/frontends/btor2-frontend/src/main/java/hu/bme/mit/theta/frontend/models/Btor2Properties.kt @@ -29,8 +29,6 @@ import hu.bme.mit.theta.core.type.bvtype.BvType data class Btor2Bad(override val nid: UInt, override val sort: Btor2Sort?, val operand: Btor2Node) : Btor2Node(nid, null) { - // TODO: btor2 probably enables operations on the bad node(?) - check and add var decl for - // properties as well, if necessary override fun getVar(): VarDecl<*>? { return null } diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index 5abbe39b75..69d822c3b4 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -28,176 +28,216 @@ import hu.bme.mit.theta.xcfa.model.* import hu.bme.mit.theta.xcfa.passes.Btor2Passes object Btor2XcfaBuilder { - private var i: Int = 1 - fun btor2xcfa(parseContext: ParseContext, uniqueWarningLogger: UniqueWarningLogger): XCFA { - check(Btor2Circuit.properties.isNotEmpty(), { "Circuit has no error property" }) - check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) - - // would be nice to check that no operand node (i.e. right side node) is later than it's operation node (i.e. left side) - // but I think we parse it in the right order, so it's the circuit's fault if the above does not hold - val ops = Btor2Circuit.ops.values.toList() - val nodes = Btor2Circuit.nodes.values.toList() - - val xcfaBuilder = XcfaBuilder("Btor2XCFA") - parseContext.addArithmeticTrait(ArithmeticTrait.BITWISE) - - val procBuilder = XcfaProcedureBuilder("main", Btor2Passes(parseContext, uniqueWarningLogger)) - xcfaBuilder.addEntryPoint(procBuilder, emptyList()) - procBuilder.createInitLoc() - - Btor2Circuit.nodes.forEach() { - it.value.getVar()?.let { varDecl -> procBuilder.addVar(varDecl) } - } - - var lastLoc = procBuilder.initLoc - var newLoc = nextLoc(false, false, false) - - // add values to constants - val constEdge = - XcfaEdge( - lastLoc, - newLoc, - SequenceLabel( - Btor2Circuit.constants.values - .map { - AssignStmtLabel( - it.getVar()!!.ref, - BvLitExpr.of(it.value), - metadata = EmptyMetaData, - ) - } - .toList() - ), - EmptyMetaData, - ) - procBuilder.addEdge(constEdge) - i++ - lastLoc = newLoc - - // Initializations - newLoc = nextLoc(false, false, false) - procBuilder.addLoc(newLoc) - val stateInitMap : MutableMap = mutableMapOf() - for(init in Btor2Circuit.states.values.filter { it is Btor2Init }) { - stateInitMap[init.state!!] = (init as Btor2Init) - } - - val edge = - XcfaEdge( - lastLoc, - newLoc, - SequenceLabel( - Btor2Circuit.states.values - .filter { - it is Btor2State - } - .map { - StmtLabel( - if(it in stateInitMap.keys) { - stateInitMap[it]!!.getStmt() - } else { - HavocStmt.of(it.getVar()) - }, - metadata = EmptyMetaData - ) - - } - .toList() - ), - EmptyMetaData, - ) - procBuilder.addEdge(edge) - lastLoc = newLoc - val loopHeadLoc = newLoc - - // Havoc initial value of input variables - if ( - Btor2Circuit.states.values - .filter { it is Btor2Input } - .isNotEmpty() - ) { - newLoc = nextLoc(false, false, false) - procBuilder.addLoc(newLoc) - val edge = - XcfaEdge( - lastLoc, - newLoc, - SequenceLabel( + private var i: Int = 1 + + fun btor2xcfa(parseContext: ParseContext, uniqueWarningLogger: UniqueWarningLogger): XCFA { + check(Btor2Circuit.properties.isNotEmpty(), { "Circuit has no error property" }) + // check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) + + // would be nice to check that no operand node (i.e. right side node) is later than it's operation node (i.e. left side) + // but I think we parse it in the right order, so it's the circuit's fault if the above does not hold + val ops = Btor2Circuit.ops.values.toList() + val nodes = Btor2Circuit.nodes.values.toList() + + val xcfaBuilder = XcfaBuilder("Btor2XCFA") + parseContext.addArithmeticTrait(ArithmeticTrait.BITWISE) + + val procBuilder = XcfaProcedureBuilder("main", Btor2Passes(parseContext, uniqueWarningLogger)) + xcfaBuilder.addEntryPoint(procBuilder, emptyList()) + procBuilder.createInitLoc() + + Btor2Circuit.nodes.forEach() { + it.value.getVar()?.let { varDecl -> procBuilder.addVar(varDecl) } + } + + var lastLoc = procBuilder.initLoc + var newLoc = nextLoc(false, false, false) + + // add values to constants + val constEdge = + XcfaEdge( + lastLoc, + newLoc, + SequenceLabel( + Btor2Circuit.constants.values + .map { + AssignStmtLabel( + it.getVar()!!.ref, + BvLitExpr.of(it.value), + metadata = EmptyMetaData, + ) + } + .toList() + ), + EmptyMetaData, + ) + procBuilder.addEdge(constEdge) + i++ + lastLoc = newLoc + + // Initializations + newLoc = nextLoc(false, false, false) + procBuilder.addLoc(newLoc) + val stateInitMap: MutableMap = mutableMapOf() + for (init in Btor2Circuit.states.values.filter { it is Btor2Init }) { + stateInitMap[init.state!!] = (init as Btor2Init) + } + + val edge = + XcfaEdge( + lastLoc, + newLoc, + SequenceLabel( + Btor2Circuit.states.values + .filter { + it is Btor2State + } + .map { + StmtLabel( + if (it in stateInitMap.keys) { + stateInitMap[it]!!.getStmt() + } else { + HavocStmt.of(it.getVar()) + }, + metadata = EmptyMetaData + ) + + } + .toList() + ), + EmptyMetaData, + ) + procBuilder.addEdge(edge) + lastLoc = newLoc + val loopHeadLoc = newLoc + + // Havoc initial value of input variables + if ( Btor2Circuit.states.values - .filter { - it is Btor2Input - } - .map { StmtLabel(it.getStmt(), metadata = EmptyMetaData) } - .toList() - ), - EmptyMetaData, + .filter { it is Btor2Input } + .isNotEmpty() + ) { + newLoc = nextLoc(false, false, false) + procBuilder.addLoc(newLoc) + val edge = + XcfaEdge( + lastLoc, + newLoc, + SequenceLabel( + Btor2Circuit.states.values + .filter { + it is Btor2Input + } + .map { StmtLabel(it.getStmt(), metadata = EmptyMetaData) } + .toList() + ), + EmptyMetaData, + ) + procBuilder.addEdge(edge) + lastLoc = newLoc + } + + // Add operations + Btor2Circuit.ops.forEach() { + val loc = nextLoc(false, false, false) + + procBuilder.addLoc(loc) + + val edge = XcfaEdge(lastLoc, loc, StmtLabel(it.value.getStmt()), EmptyMetaData) + procBuilder.addEdge(edge) + lastLoc = loc + if (Btor2Circuit.properties.values.any { property -> + property.operand.nid == it.value.nid + }) { + procBuilder.createErrorLoc() + val badProperty = Btor2Circuit.properties.values.find { property -> + property.operand.nid == it.value.nid + } + procBuilder.addEdge( + XcfaEdge( + lastLoc, + procBuilder.errorLoc.get(), + StmtLabel(AssumeStmt.of(badProperty!!.getExpr())), + EmptyMetaData, + ) + ) + newLoc = nextLoc(false, false, false) + procBuilder.addEdge( + XcfaEdge( + lastLoc, + newLoc, + StmtLabel(AssumeStmt.of(BoolExprs.Not(badProperty!!.getExpr()))), + EmptyMetaData, + ) + ) + lastLoc = newLoc + } + } + /* + procBuilder.createErrorLoc() + // Add properties + procBuilder.addEdge( + XcfaEdge( + lastLoc, + procBuilder.errorLoc.get(), + SequenceLabel( + Btor2Circuit.properties.values + .filter { + it is Btor2Bad + } + .map { StmtLabel(AssumeStmt.of(it.getExpr())) } + .toList() + ), + EmptyMetaData, + ) ) - procBuilder.addEdge(edge) - lastLoc = newLoc - } - - - - // Add operations - Btor2Circuit.ops.forEach() { - val loc = nextLoc(false, false, false) - procBuilder.addLoc(loc) - - val edge = XcfaEdge(lastLoc, loc, StmtLabel(it.value.getStmt()), EmptyMetaData) - procBuilder.addEdge(edge) - lastLoc = loc - } - procBuilder.createErrorLoc() - - // Add Property - val bad = Btor2Circuit.properties.values.first() - - procBuilder.addEdge( - XcfaEdge( - lastLoc, - procBuilder.errorLoc.get(), - StmtLabel(AssumeStmt.of(bad.getExpr())), - EmptyMetaData, - ) - ) - newLoc = nextLoc(false, false, false) - procBuilder.addEdge( - XcfaEdge( - lastLoc, - newLoc, - StmtLabel(AssumeStmt.of(BoolExprs.Not(bad.getExpr()))), - EmptyMetaData, - ) - ) - lastLoc = newLoc - - // Close circuit (update state values with nexts, havoc otherwise) - var nexts = - Btor2Circuit.states.values.filter { it is Btor2Next }.toList() - var statesWithNext = nexts.map { (it as Btor2Next).state }.toSet() - var statesWithoutNext = Btor2Circuit.states.values.filter { it is Btor2State }.filter { !statesWithNext.contains(it) }.toList() - - nexts.forEach { - newLoc = nextLoc(false, false, false) - procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.getStmt()), EmptyMetaData)) - lastLoc = newLoc + newLoc = nextLoc(false, false, false) + procBuilder.addEdge( + XcfaEdge( + lastLoc, + newLoc, + SequenceLabel( + Btor2Circuit.properties.values + .filter { + it is Btor2Bad + } + .map { StmtLabel(AssumeStmt.of(BoolExprs.Not(it.getExpr()))) } + .toList() + ), + EmptyMetaData, + ) + ) + lastLoc = newLoc + */ + // Close circuit (update state values with nexts, havoc otherwise) + var nexts = + Btor2Circuit.states.values.filter { it is Btor2Next }.toList() + var statesWithNext = nexts.map { (it as Btor2Next).state }.toSet() + var statesWithoutNext = Btor2Circuit.states.values.filter { it is Btor2State }.filter { + !statesWithNext.contains(it) + }.toList() + + nexts.forEach { + newLoc = nextLoc(false, false, false) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(it.getStmt()), EmptyMetaData)) + lastLoc = newLoc + } + + statesWithoutNext.forEach { + newLoc = nextLoc(false, false, false) + procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(HavocStmt.of(it.getVar()!!)), EmptyMetaData)) + lastLoc = newLoc + } + + procBuilder.addEdge(XcfaEdge(lastLoc, loopHeadLoc, metadata = EmptyMetaData)) + return xcfaBuilder.build() } - statesWithoutNext.forEach { - newLoc = nextLoc(false, false, false) - procBuilder.addEdge(XcfaEdge(lastLoc, newLoc, StmtLabel(HavocStmt.of(it.getVar()!!)), EmptyMetaData)) - lastLoc = newLoc + private fun nextLoc(initial: Boolean, final: Boolean, error: Boolean): XcfaLocation { + val loc = XcfaLocation("l${i}", initial, final, error, EmptyMetaData) + i++ + return loc } - - procBuilder.addEdge(XcfaEdge(lastLoc, loopHeadLoc, metadata = EmptyMetaData)) - return xcfaBuilder.build() - } - - private fun nextLoc(initial: Boolean, final: Boolean, error: Boolean): XcfaLocation { - val loc = XcfaLocation("l${i}", initial, final, error, EmptyMetaData) - i++ - return loc - } } diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 new file mode 100644 index 0000000000..d5cd0fa06a --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/factorial4even.btor2 @@ -0,0 +1,27 @@ +; source: https://github.com/Boolector/btor2tools/tree/b8456dda4780789e882f5791eb486f295ade4da4/examples/btorsim +; int i = 1, factorial = 1; +; assert (i <= 2 || !(factorial & 1)); +; for (;;) { +; factorial *= i; +; i++; +; assert (i <= 2 || !(factorial & 1)); +; } +1 sort bitvec 4 +2 one 1 +3 state 1 factorial +4 state 1 i +5 init 1 3 2 +6 init 1 4 2 +7 add 1 4 2 +8 mul 1 3 4 +9 next 1 4 7 +10 next 1 3 8 +11 ones 1 +12 sort bitvec 1 +13 eq 12 4 11 +14 bad 13 +15 slice 12 3 0 0 +16 constd 1 3 +17 ugt 12 4 16 +18 and 12 17 15 +19 bad 18 diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt index 34fdddb0a6..5d93ce8636 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt @@ -41,7 +41,7 @@ fun registerAllSolverManagers(home: String, logger: Logger) { logger.write(Logger.Level.INFO, "Registered Z3 SolverManager\n") SolverManager.registerSolverManager(JavaSMTSolverManager.create()) logger.write(Logger.Level.INFO, "Registered JavaSMT SolverManager\n") - if (OsHelper.getOs() == OsHelper.OperatingSystem.WINDOWS) { + if (OsHelper.getOs() == OsHelper.OperatingSystem.LINUX) { val homePath = Path.of(home) val smtLibSolverManager: SmtLibSolverManager = SmtLibSolverManager.create(homePath, logger) SolverManager.registerSolverManager(smtLibSolverManager) From 8b8a0db6cdf123b065dd8d09136fe1d1db4c1f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Tue, 2 Dec 2025 09:39:08 +0100 Subject: [PATCH 71/72] Test file added --- .../driving_phils.1.prop1-func-interl.btor2 | 760 ++++++++++++++++++ 1 file changed, 760 insertions(+) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/driving_phils.1.prop1-func-interl.btor2 diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/driving_phils.1.prop1-func-interl.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/driving_phils.1.prop1-func-interl.btor2 new file mode 100644 index 0000000000..ea03704401 --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/driving_phils.1.prop1-func-interl.btor2 @@ -0,0 +1,760 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 5 +3 sort bitvec 8 +4 sort bitvec 16 +5 sort bitvec 24 +6 sort bitvec 32 +7 zero 3 +8 state 3 v_request_0 +9 init 3 8 7 +10 state 3 v_request_1 +11 init 3 10 7 +12 state 3 v_starvers_0 +13 init 3 12 7 +14 state 3 v_starvers_1 +15 init 3 14 7 +16 state 3 v_resources_0 +17 init 3 16 7 +18 state 3 v_resources_1 +19 init 3 18 7 +20 zero 4 +21 state 4 v_res0_0 +22 init 4 21 20 +23 state 4 v_res0_1 +24 init 4 23 20 +25 state 4 v_res1_0 +26 init 4 25 20 +27 state 4 v_res1_1 +28 init 4 27 20 +29 state 4 v_acquiring_0 +30 init 4 29 20 +31 state 4 v_acquiring_1 +32 init 4 31 20 +33 state 4 v_entryRound +34 init 4 33 20 +35 state 3 v_phase +36 init 3 35 7 +37 state 3 v_fire +38 init 3 37 7 +39 state 4 v_i_round_about +40 init 4 39 20 +41 state 4 v_i_phil_0 +42 init 4 41 20 +43 state 4 v_i_phil_1 +44 init 4 43 20 +45 zero 1 +46 state 1 a_reset +47 init 1 46 45 +48 state 1 a_begin0 +49 init 1 48 45 +50 state 1 a_begin1 +51 init 1 50 45 +52 state 1 a_begin2 +53 init 1 52 45 +54 state 1 a_begin3 +55 init 1 54 45 +56 state 1 a_action_round_about +57 init 1 56 45 +58 state 1 a_end0 +59 init 1 58 45 +60 state 1 a_end1 +61 init 1 60 45 +62 state 1 a_end2 +63 init 1 62 45 +64 state 1 a_action_phil_0 +65 init 1 64 45 +66 state 1 a_end_phil_0 +67 init 1 66 45 +68 state 1 a_mutex_phil_0 +69 init 1 68 45 +70 state 1 a_action_phil_1 +71 init 1 70 45 +72 state 1 a_end_phil_1 +73 init 1 72 45 +74 state 1 a_mutex_phil_1 +75 init 1 74 45 +76 state 1 dve_invalid +77 init 1 76 45 +78 constd 4 0 +79 concat 6 21 78 +80 constd 6 16 +81 sra 6 79 80 +82 concat 6 23 78 +83 sra 6 82 80 +84 eq 1 81 83 +85 concat 6 27 78 +86 sra 6 85 80 +87 eq 1 81 86 +88 or 1 84 87 +89 and 1 -76 88 +90 bad 89 +91 input 1 f17 +92 constd 4 1 +93 xor 4 92 33 +94 slice 3 93 7 0 +95 input 1 f11 +96 constd 6 0 +97 concat 6 39 78 +98 sra 6 97 80 +99 constd 5 0 +100 constd 6 1 +101 constd 6 2 +102 mul 6 101 98 +103 add 6 100 102 +104 eq 1 96 103 +105 ite 3 104 16 18 +106 concat 6 99 105 +107 add 6 98 106 +108 eq 1 96 107 +109 and 1 95 108 +110 constd 3 0 +111 ite 3 109 110 8 +112 ite 3 91 94 111 +113 next 3 8 112 +114 input 1 f27 +115 eq 1 100 107 +116 and 1 95 115 +117 ite 3 116 110 10 +118 ite 3 114 94 117 +119 next 3 10 118 +120 ite 3 109 110 12 +121 next 3 12 120 +122 ite 3 116 110 14 +123 next 3 14 122 +124 input 1 f26 +125 eq 1 96 83 +126 add 6 100 83 +127 eq 1 96 126 +128 or 1 125 127 +129 and 1 124 128 +130 input 1 f16 +131 eq 1 96 81 +132 add 6 100 81 +133 eq 1 96 132 +134 or 1 131 133 +135 and 1 130 134 +136 input 1 f07 +137 eq 1 96 98 +138 ite 4 137 25 27 +139 concat 6 138 78 +140 sra 6 139 80 +141 mul 6 101 140 +142 eq 1 96 141 +143 add 6 100 141 +144 eq 1 96 143 +145 or 1 142 144 +146 and 1 136 145 +147 slice 3 39 7 0 +148 ite 3 144 147 94 +149 input 1 f04 +150 ite 4 137 21 23 +151 concat 6 150 78 +152 sra 6 151 80 +153 mul 6 101 152 +154 eq 1 96 153 +155 add 6 100 153 +156 eq 1 96 155 +157 or 1 154 156 +158 and 1 149 157 +159 ite 3 156 147 94 +160 input 1 f02 +161 and 1 137 160 +162 ite 3 161 110 16 +163 ite 3 158 159 162 +164 ite 3 146 148 163 +165 ite 3 135 110 164 +166 ite 3 129 110 165 +167 next 3 16 166 +168 eq 1 100 83 +169 eq 1 100 126 +170 or 1 168 169 +171 and 1 124 170 +172 eq 1 100 81 +173 eq 1 100 132 +174 or 1 172 173 +175 and 1 130 174 +176 eq 1 100 141 +177 eq 1 100 143 +178 or 1 176 177 +179 and 1 136 178 +180 ite 3 177 147 94 +181 eq 1 100 153 +182 eq 1 100 155 +183 or 1 181 182 +184 and 1 149 183 +185 ite 3 182 147 94 +186 eq 1 100 98 +187 and 1 186 160 +188 ite 3 187 110 18 +189 ite 3 184 185 188 +190 ite 3 179 180 189 +191 ite 3 175 110 190 +192 ite 3 171 110 191 +193 next 3 18 192 +194 input 1 f23 +195 input 1 f00 +196 and 1 195 137 +197 constd 4 65535 +198 ite 4 196 197 21 +199 ite 4 130 25 198 +200 ite 4 194 29 199 +201 next 4 21 200 +202 input 1 f33 +203 and 1 195 186 +204 ite 4 203 197 23 +205 ite 4 124 27 204 +206 ite 4 202 31 205 +207 next 4 23 206 +208 input 1 f24 +209 ite 4 196 197 25 +210 ite 4 130 197 209 +211 ite 4 208 29 210 +212 next 4 25 211 +213 input 1 f34 +214 ite 4 203 197 27 +215 ite 4 124 197 214 +216 ite 4 213 31 215 +217 next 4 27 216 +218 constd 4 0 +219 ite 4 196 197 29 +220 ite 4 91 218 219 +221 ite 4 194 197 220 +222 ite 4 208 197 221 +223 next 4 29 222 +224 ite 4 203 197 31 +225 ite 4 114 218 224 +226 ite 4 202 197 225 +227 ite 4 213 197 226 +228 next 4 31 227 +229 xor 4 92 93 +230 next 4 33 229 +231 input 1 f15 +232 input 1 f10 +233 constd 3 2 +234 input 1 f09 +235 constd 3 1 +236 input 1 f01 +237 ite 3 236 110 35 +238 ite 3 234 235 237 +239 ite 3 232 233 238 +240 ite 3 231 110 239 +241 next 3 35 240 +242 input 1 f35 +243 concat 6 99 37 +244 add 6 100 243 +245 slice 3 244 7 0 +246 input 1 f32 +247 input 1 f29 +248 input 1 f28 +249 input 1 f25 +250 input 1 f22 +251 input 1 f19 +252 input 1 f18 +253 ite 3 234 110 37 +254 ite 3 232 110 253 +255 ite 3 130 245 254 +256 ite 3 91 245 255 +257 ite 3 252 245 256 +258 ite 3 251 245 257 +259 ite 3 250 245 258 +260 ite 3 194 245 259 +261 ite 3 208 245 260 +262 ite 3 249 245 261 +263 ite 3 124 245 262 +264 ite 3 114 245 263 +265 ite 3 248 245 264 +266 ite 3 247 245 265 +267 ite 3 246 245 266 +268 ite 3 202 245 267 +269 ite 3 213 245 268 +270 ite 3 242 245 269 +271 next 3 37 270 +272 input 1 f14 +273 add 6 100 98 +274 slice 4 273 15 0 +275 input 1 f13 +276 input 1 f12 +277 input 1 f08 +278 input 1 f06 +279 input 1 f05 +280 input 1 f03 +281 ite 4 195 274 39 +282 ite 4 236 218 281 +283 ite 4 160 274 282 +284 ite 4 280 218 283 +285 ite 4 149 274 284 +286 ite 4 279 274 285 +287 ite 4 278 218 286 +288 ite 4 136 274 287 +289 ite 4 277 274 288 +290 ite 4 234 218 289 +291 ite 4 95 274 290 +292 ite 4 276 274 291 +293 ite 4 275 218 292 +294 ite 4 272 274 293 +295 ite 4 231 218 294 +296 next 4 39 295 +297 concat 6 41 78 +298 sra 6 297 80 +299 add 6 100 298 +300 slice 4 299 15 0 +301 input 1 f21 +302 ite 4 301 300 41 +303 ite 4 250 300 302 +304 ite 4 194 218 303 +305 ite 4 208 218 304 +306 next 4 41 305 +307 concat 6 43 78 +308 sra 6 307 80 +309 add 6 100 308 +310 slice 4 309 15 0 +311 input 1 f31 +312 ite 4 311 310 43 +313 ite 4 246 310 312 +314 ite 4 202 218 313 +315 ite 4 213 218 314 +316 next 4 43 315 +317 and 1 -46 -236 +318 next 1 46 -317 +319 or 1 48 236 +320 and 1 319 -280 +321 or 1 320 231 +322 next 1 48 321 +323 or 1 50 280 +324 and 1 323 -278 +325 next 1 50 324 +326 or 1 52 278 +327 and 1 326 -234 +328 next 1 52 327 +329 next 1 54 54 +330 or 1 56 234 +331 and 1 330 -232 +332 next 1 56 331 +333 or 1 58 232 +334 and 1 333 -275 +335 next 1 58 334 +336 or 1 60 275 +337 and 1 336 -231 +338 next 1 60 337 +339 next 1 62 62 +340 and 1 -64 -130 +341 and 1 340 -91 +342 and 1 341 -252 +343 or 1 342 251 +344 or 1 343 250 +345 or 1 344 194 +346 or 1 345 208 +347 or 1 346 249 +348 next 1 64 -347 +349 or 1 66 130 +350 or 1 349 91 +351 or 1 350 252 +352 and 1 351 -251 +353 input 1 f20 +354 and 1 352 -353 +355 and 1 354 -249 +356 next 1 66 355 +357 or 1 68 353 +358 and 1 357 -250 +359 and 1 358 -194 +360 and 1 359 -208 +361 next 1 68 360 +362 and 1 -70 -124 +363 and 1 362 -114 +364 and 1 363 -248 +365 or 1 364 247 +366 or 1 365 246 +367 or 1 366 202 +368 or 1 367 213 +369 or 1 368 242 +370 next 1 70 -369 +371 or 1 72 124 +372 or 1 371 114 +373 or 1 372 248 +374 and 1 373 -247 +375 input 1 f30 +376 and 1 374 -375 +377 and 1 376 -242 +378 next 1 72 377 +379 or 1 74 375 +380 and 1 379 -246 +381 and 1 380 -202 +382 and 1 381 -213 +383 next 1 74 382 +384 ulte 1 101 98 +385 and 1 -46 -384 +386 or 1 -195 385 +387 eq 1 101 98 +388 and 1 -46 387 +389 or 1 -236 388 +390 and 1 386 389 +391 and 1 48 -384 +392 or 1 -160 391 +393 and 1 390 392 +394 and 1 48 387 +395 or 1 -280 394 +396 and 1 393 395 +397 constd 6 4294967295 +398 eq 1 397 152 +399 and 1 -384 -398 +400 and 1 50 399 +401 or 1 -149 400 +402 and 1 396 401 +403 and 1 -384 398 +404 and 1 50 403 +405 or 1 -279 404 +406 and 1 402 405 +407 and 1 50 387 +408 or 1 -278 407 +409 and 1 406 408 +410 eq 1 397 140 +411 and 1 -384 -410 +412 and 1 52 411 +413 or 1 -136 412 +414 and 1 409 413 +415 and 1 -384 410 +416 and 1 52 415 +417 or 1 -277 416 +418 and 1 414 417 +419 and 1 52 387 +420 or 1 -234 419 +421 and 1 418 420 +422 eq 1 233 37 +423 and 1 56 422 +424 or 1 -232 423 +425 and 1 421 424 +426 ulte 1 100 98 +427 eq 1 96 102 +428 ite 3 427 16 18 +429 eq 1 110 428 +430 and 1 -426 -429 +431 and 1 58 430 +432 or 1 -95 431 +433 and 1 425 432 +434 and 1 -426 429 +435 and 1 58 434 +436 or 1 -276 435 +437 and 1 433 436 +438 and 1 58 186 +439 or 1 -275 438 +440 and 1 437 439 +441 and 1 60 -384 +442 or 1 -272 441 +443 and 1 440 442 +444 and 1 387 422 +445 and 1 60 444 +446 or 1 -231 445 +447 and 1 443 446 +448 eq 1 235 35 +449 eq 1 397 81 +450 and 1 448 -449 +451 and 1 -64 450 +452 or 1 -130 451 +453 and 1 447 452 +454 concat 6 25 78 +455 sra 6 454 80 +456 eq 1 397 455 +457 and 1 448 456 +458 concat 6 29 78 +459 sra 6 458 80 +460 eq 1 397 459 +461 and 1 457 460 +462 and 1 -64 461 +463 or 1 -91 462 +464 and 1 453 463 +465 and 1 -64 448 +466 or 1 -252 465 +467 and 1 464 466 +468 eq 1 233 35 +469 and 1 460 468 +470 and 1 66 469 +471 or 1 -251 470 +472 and 1 467 471 +473 and 1 -460 468 +474 eq 1 110 37 +475 and 1 473 474 +476 and 1 66 475 +477 or 1 -353 476 +478 and 1 472 477 +479 ulte 1 101 298 +480 eq 1 96 298 +481 ite 4 480 21 23 +482 concat 6 481 78 +483 sra 6 482 80 +484 eq 1 459 483 +485 and 1 -479 -484 +486 ite 4 480 25 27 +487 concat 6 486 78 +488 sra 6 487 80 +489 eq 1 459 488 +490 and 1 485 -489 +491 and 1 68 490 +492 or 1 -301 491 +493 and 1 478 492 +494 or 1 484 489 +495 and 1 -479 494 +496 and 1 68 495 +497 or 1 -250 496 +498 and 1 493 497 +499 eq 1 101 298 +500 and 1 449 499 +501 and 1 68 500 +502 or 1 -194 501 +503 and 1 498 502 +504 and 1 -449 499 +505 and 1 68 504 +506 or 1 -208 505 +507 and 1 503 506 +508 and 1 66 473 +509 or 1 -249 508 +510 and 1 507 509 +511 eq 1 397 83 +512 and 1 448 -511 +513 and 1 -70 512 +514 or 1 -124 513 +515 and 1 510 514 +516 eq 1 397 86 +517 and 1 448 516 +518 concat 6 31 78 +519 sra 6 518 80 +520 eq 1 397 519 +521 and 1 517 520 +522 and 1 -70 521 +523 or 1 -114 522 +524 and 1 515 523 +525 and 1 -70 448 +526 or 1 -248 525 +527 and 1 524 526 +528 and 1 468 520 +529 and 1 72 528 +530 or 1 -247 529 +531 and 1 527 530 +532 and 1 468 -520 +533 eq 1 235 37 +534 and 1 532 533 +535 and 1 72 534 +536 or 1 -375 535 +537 and 1 531 536 +538 ulte 1 101 308 +539 eq 1 96 308 +540 ite 4 539 21 23 +541 concat 6 540 78 +542 sra 6 541 80 +543 eq 1 519 542 +544 and 1 -538 -543 +545 ite 4 539 25 27 +546 concat 6 545 78 +547 sra 6 546 80 +548 eq 1 519 547 +549 and 1 544 -548 +550 and 1 74 549 +551 or 1 -311 550 +552 and 1 537 551 +553 or 1 543 548 +554 and 1 -538 553 +555 and 1 74 554 +556 or 1 -246 555 +557 and 1 552 556 +558 eq 1 101 308 +559 and 1 511 558 +560 and 1 74 559 +561 or 1 -202 560 +562 and 1 557 561 +563 and 1 -511 558 +564 and 1 74 563 +565 or 1 -213 564 +566 and 1 562 565 +567 and 1 72 532 +568 or 1 -242 567 +569 and 1 566 568 +570 or 1 195 236 +571 or 1 160 570 +572 or 1 280 571 +573 or 1 149 572 +574 or 1 279 573 +575 or 1 278 574 +576 or 1 136 575 +577 or 1 277 576 +578 or 1 234 577 +579 or 1 232 578 +580 or 1 95 579 +581 or 1 276 580 +582 or 1 275 581 +583 or 1 272 582 +584 or 1 231 583 +585 or 1 130 584 +586 or 1 91 585 +587 or 1 252 586 +588 or 1 251 587 +589 or 1 353 588 +590 or 1 301 589 +591 or 1 250 590 +592 or 1 194 591 +593 or 1 208 592 +594 or 1 249 593 +595 or 1 124 594 +596 or 1 114 595 +597 or 1 248 596 +598 or 1 247 597 +599 or 1 375 598 +600 or 1 311 599 +601 or 1 246 600 +602 or 1 202 601 +603 or 1 213 602 +604 or 1 242 603 +605 and 1 569 604 +606 and 1 195 236 +607 and 1 160 570 +608 or 1 606 607 +609 and 1 280 571 +610 or 1 608 609 +611 and 1 149 572 +612 or 1 610 611 +613 and 1 279 573 +614 or 1 612 613 +615 and 1 278 574 +616 or 1 614 615 +617 and 1 136 575 +618 or 1 616 617 +619 and 1 277 576 +620 or 1 618 619 +621 and 1 234 577 +622 or 1 620 621 +623 and 1 232 578 +624 or 1 622 623 +625 and 1 95 579 +626 or 1 624 625 +627 and 1 276 580 +628 or 1 626 627 +629 and 1 275 581 +630 or 1 628 629 +631 and 1 272 582 +632 or 1 630 631 +633 and 1 231 583 +634 or 1 632 633 +635 and 1 130 584 +636 or 1 634 635 +637 and 1 91 585 +638 or 1 636 637 +639 and 1 252 586 +640 or 1 638 639 +641 and 1 251 587 +642 or 1 640 641 +643 and 1 353 588 +644 or 1 642 643 +645 and 1 301 589 +646 or 1 644 645 +647 and 1 250 590 +648 or 1 646 647 +649 and 1 194 591 +650 or 1 648 649 +651 and 1 208 592 +652 or 1 650 651 +653 and 1 249 593 +654 or 1 652 653 +655 and 1 124 594 +656 or 1 654 655 +657 and 1 114 595 +658 or 1 656 657 +659 and 1 248 596 +660 or 1 658 659 +661 and 1 247 597 +662 or 1 660 661 +663 and 1 375 598 +664 or 1 662 663 +665 and 1 311 599 +666 or 1 664 665 +667 and 1 246 600 +668 or 1 666 667 +669 and 1 202 601 +670 or 1 668 669 +671 and 1 213 602 +672 or 1 670 671 +673 and 1 242 603 +674 or 1 672 673 +675 and 1 605 -674 +676 and 1 -46 48 +677 or 1 -46 48 +678 and 1 50 677 +679 or 1 676 678 +680 or 1 50 677 +681 and 1 52 680 +682 or 1 679 681 +683 or 1 52 680 +684 and 1 54 683 +685 or 1 682 684 +686 or 1 54 683 +687 and 1 56 686 +688 or 1 685 687 +689 or 1 56 686 +690 and 1 58 689 +691 or 1 688 690 +692 or 1 58 689 +693 and 1 60 692 +694 or 1 691 693 +695 or 1 60 692 +696 and 1 62 695 +697 or 1 694 696 +698 or 1 62 695 +699 and 1 -697 698 +700 and 1 -64 66 +701 or 1 -64 66 +702 and 1 68 701 +703 or 1 700 702 +704 and 1 699 -703 +705 or 1 68 701 +706 and 1 704 705 +707 and 1 -70 72 +708 or 1 -70 72 +709 and 1 74 708 +710 or 1 707 709 +711 and 1 706 -710 +712 or 1 74 708 +713 and 1 711 712 +714 and 1 675 713 +715 and 1 317 321 +716 or 1 317 321 +717 and 1 324 716 +718 or 1 715 717 +719 or 1 324 716 +720 and 1 327 719 +721 or 1 718 720 +722 or 1 327 719 +723 and 1 54 722 +724 or 1 721 723 +725 or 1 54 722 +726 and 1 331 725 +727 or 1 724 726 +728 or 1 331 725 +729 and 1 334 728 +730 or 1 727 729 +731 or 1 334 728 +732 and 1 337 731 +733 or 1 730 732 +734 or 1 337 731 +735 and 1 62 734 +736 or 1 733 735 +737 or 1 62 734 +738 and 1 -736 737 +739 and 1 347 355 +740 or 1 347 355 +741 and 1 360 740 +742 or 1 739 741 +743 and 1 738 -742 +744 or 1 360 740 +745 and 1 743 744 +746 and 1 369 377 +747 or 1 369 377 +748 and 1 382 747 +749 or 1 746 748 +750 and 1 745 -749 +751 or 1 382 747 +752 and 1 750 751 +753 and 1 714 752 +754 and 1 753 -76 +755 next 1 76 -754 +; End + + From 0b55508d89cbb218efbc98153de259c5cd810ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szab=C3=B3=20=C3=89va=20M=C3=A1ria?= Date: Sat, 6 Dec 2025 19:49:08 +0100 Subject: [PATCH 72/72] Enabling all or no optimizations --- .../Btor2XcfaBuilder.kt | 11 +- .../btor2xcfa/src/test/java/TestBtor2Xcfa.kt | 4 +- .../anderson.1.prop1-back-serstep.btor2 | 340 ++++++++++++++++++ .../mit/theta/xcfa/cli/params/XcfaConfig.kt | 10 +- .../xcfa/cli/utils/SolverRegistration.kt | 1 + .../mit/theta/xcfa/cli/utils/XcfaParser.kt | 6 +- .../theta/xcfa/passes/ProcedurePassManager.kt | 6 + 7 files changed, 370 insertions(+), 8 deletions(-) create mode 100644 subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 diff --git a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt index bf4ca8039b..f6acaf7e99 100644 --- a/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt +++ b/subprojects/xcfa/btor2xcfa/src/main/java/hu.bme.mit.theta.btor2xcfa/Btor2XcfaBuilder.kt @@ -24,14 +24,17 @@ import hu.bme.mit.theta.frontend.ParseContext import hu.bme.mit.theta.frontend.models.* import hu.bme.mit.theta.frontend.transformation.grammar.preprocess.ArithmeticTrait import hu.bme.mit.theta.xcfa.model.* +import hu.bme.mit.theta.xcfa.passes.Btor2EmptyPass import hu.bme.mit.theta.xcfa.passes.Btor2Passes import hu.bme.mit.theta.xcfa.utils.AssignStmtLabel + + object Btor2XcfaBuilder { private var i: Int = 1 - fun btor2xcfa(parseContext: ParseContext, uniqueLogger: Logger): XCFA { + fun btor2xcfa(btor2Passes: Boolean, parseContext: ParseContext, uniqueLogger: Logger): XCFA { check(Btor2Circuit.properties.isNotEmpty(), { "Circuit has no error property" }) // check(Btor2Circuit.properties.size <= 1, { "More than 1 property isn't allowed" }) @@ -45,7 +48,11 @@ object Btor2XcfaBuilder { val xcfaBuilder = XcfaBuilder("Btor2XCFA") parseContext.addArithmeticTrait(ArithmeticTrait.BITWISE) - val procBuilder = XcfaProcedureBuilder("main", Btor2Passes(parseContext, uniqueLogger)) + val procBuilder = XcfaProcedureBuilder( + "main", + if (btor2Passes) Btor2Passes(parseContext, uniqueLogger) else Btor2EmptyPass() + ) + xcfaBuilder.addEntryPoint(procBuilder, emptyList()) procBuilder.createInitLoc() diff --git a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt index c11f23b171..257b349fd2 100644 --- a/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt +++ b/subprojects/xcfa/btor2xcfa/src/test/java/TestBtor2Xcfa.kt @@ -42,7 +42,7 @@ import org.junit.jupiter.api.Test * See the License for the specific language governing permissions and * limitations under the License. */ - +/* class TestBtor2Xcfa { @Test fun testBtor2Xcfa() { @@ -64,4 +64,4 @@ class TestBtor2Xcfa { val xcfa = Btor2XcfaBuilder.btor2xcfa(uniqueWarningLogger) logger.write(Logger.Level.VERBOSE, "XCFA built, result: " + xcfa.toDot() + "\n") } -} +}*/ diff --git a/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 new file mode 100644 index 0000000000..09f82a14cb --- /dev/null +++ b/subprojects/xcfa/btor2xcfa/src/test/resources/anderson.1.prop1-back-serstep.btor2 @@ -0,0 +1,340 @@ +; source: http://fmv.jku.at/hwmcc19/beem_btor.tar.xz +; Model in BTOR format generated by stepout.py 0.41 +1 sort bitvec 1 +2 sort bitvec 8 +3 sort bitvec 24 +4 sort bitvec 32 +5 zero 2 +6 state 2 nextv_Slot_0 +7 init 2 6 5 +8 state 2 nextv_Slot_1 +9 init 2 8 5 +10 state 2 nextv_next +11 init 2 10 5 +12 state 2 nextv_my_place_P_0 +13 init 2 12 5 +14 state 2 nextv_my_place_P_1 +15 init 2 14 5 +16 zero 1 +17 state 1 nexta_NCS_P_0 +18 init 1 17 16 +19 state 1 nexta_p1_P_0 +20 init 1 19 16 +21 state 1 nexta_p2_P_0 +22 init 1 21 16 +23 state 1 nexta_p3_P_0 +24 init 1 23 16 +25 state 1 nexta_CS_P_0 +26 init 1 25 16 +27 state 1 nexta_NCS_P_1 +28 init 1 27 16 +29 state 1 nexta_p1_P_1 +30 init 1 29 16 +31 state 1 nexta_p2_P_1 +32 init 1 31 16 +33 state 1 nexta_p3_P_1 +34 init 1 33 16 +35 state 1 nexta_CS_P_1 +36 init 1 35 16 +37 state 1 dve_initialized +38 init 1 37 16 +39 state 1 dve_valid +40 init 1 39 16 +41 and 1 17 -19 +42 and 1 41 -21 +43 and 1 42 -23 +44 and 1 43 -25 +45 and 1 44 27 +46 and 1 45 -29 +47 and 1 46 -31 +48 and 1 47 -33 +49 and 1 48 -35 +50 constd 2 1 +51 eq 1 50 6 +52 and 1 49 51 +53 constd 2 0 +54 eq 1 53 8 +55 and 1 52 54 +56 eq 1 53 10 +57 and 1 55 56 +58 eq 1 53 12 +59 and 1 57 58 +60 eq 1 53 14 +61 and 1 59 60 +62 and 1 39 61 +63 bad 62 +64 input 2 v_Slot_0 +65 next 2 6 64 +66 input 2 v_Slot_1 +67 next 2 8 66 +68 input 2 v_next +69 next 2 10 68 +70 input 2 v_my_place_P_0 +71 next 2 12 70 +72 input 2 v_my_place_P_1 +73 next 2 14 72 +74 input 1 a_NCS_P_0 +75 next 1 17 74 +76 input 1 a_p1_P_0 +77 next 1 19 76 +78 input 1 a_p2_P_0 +79 next 1 21 78 +80 input 1 a_p3_P_0 +81 next 1 23 80 +82 input 1 a_CS_P_0 +83 next 1 25 82 +84 input 1 a_NCS_P_1 +85 next 1 27 84 +86 input 1 a_p1_P_1 +87 next 1 29 86 +88 input 1 a_p2_P_1 +89 next 1 31 88 +90 input 1 a_p3_P_1 +91 next 1 33 90 +92 input 1 a_CS_P_1 +93 next 1 35 92 +94 const 1 1 +95 next 1 37 94 +96 input 1 f00 +97 or 1 74 -96 +98 input 1 f01 +99 or 1 76 96 +100 ite 2 96 68 70 +101 eq 1 50 100 +102 and 1 99 101 +103 or 1 -98 102 +104 and 1 97 103 +105 input 1 f02 +106 and 1 99 -98 +107 and 1 -101 106 +108 or 1 -105 107 +109 and 1 104 108 +110 input 1 f03 +111 or 1 78 98 +112 or 1 111 105 +113 constd 3 0 +114 concat 4 113 100 +115 constd 4 2 +116 srem 4 114 115 +117 slice 2 116 7 0 +118 ite 2 105 117 100 +119 eq 1 53 118 +120 ite 2 119 64 66 +121 eq 1 50 120 +122 and 1 112 121 +123 or 1 -110 122 +124 and 1 109 123 +125 or 1 80 110 +126 input 1 f04 +127 or 1 125 -126 +128 and 1 124 127 +129 or 1 82 126 +130 input 1 f05 +131 or 1 129 -130 +132 and 1 128 131 +133 input 1 f06 +134 or 1 84 -133 +135 and 1 132 134 +136 input 1 f07 +137 or 1 86 133 +138 constd 4 1 +139 concat 4 113 68 +140 add 4 138 139 +141 slice 2 140 7 0 +142 ite 2 96 141 68 +143 concat 4 113 142 +144 sub 4 143 115 +145 slice 2 144 7 0 +146 ite 2 98 145 142 +147 ite 2 133 146 72 +148 eq 1 50 147 +149 and 1 137 148 +150 or 1 -136 149 +151 and 1 135 150 +152 input 1 f08 +153 and 1 137 -136 +154 and 1 -148 153 +155 or 1 -152 154 +156 and 1 151 155 +157 input 1 f09 +158 or 1 88 136 +159 or 1 158 152 +160 concat 4 113 147 +161 srem 4 160 115 +162 slice 2 161 7 0 +163 ite 2 152 162 147 +164 eq 1 53 163 +165 constd 4 0 +166 concat 4 113 118 +167 add 4 138 166 +168 srem 4 167 115 +169 eq 1 165 168 +170 and 1 130 169 +171 add 4 115 166 +172 sub 4 171 138 +173 srem 4 172 115 +174 eq 1 165 173 +175 and 1 126 174 +176 ite 2 175 53 64 +177 ite 2 170 50 176 +178 eq 1 138 168 +179 and 1 130 178 +180 eq 1 138 173 +181 and 1 126 180 +182 ite 2 181 53 66 +183 ite 2 179 50 182 +184 ite 2 164 177 183 +185 eq 1 50 184 +186 and 1 159 185 +187 or 1 -157 186 +188 and 1 156 187 +189 or 1 90 157 +190 input 1 f10 +191 or 1 189 -190 +192 and 1 188 191 +193 or 1 92 190 +194 input 1 f11 +195 or 1 193 -194 +196 and 1 192 195 +197 or 1 96 98 +198 or 1 105 197 +199 or 1 110 198 +200 or 1 126 199 +201 or 1 130 200 +202 or 1 133 201 +203 or 1 136 202 +204 or 1 152 203 +205 or 1 157 204 +206 or 1 190 205 +207 or 1 194 206 +208 and 1 196 207 +209 and 1 74 76 +210 or 1 74 76 +211 and 1 78 210 +212 or 1 209 211 +213 or 1 78 210 +214 and 1 80 213 +215 or 1 212 214 +216 or 1 80 213 +217 and 1 82 216 +218 or 1 215 217 +219 or 1 82 216 +220 and 1 -218 219 +221 and 1 84 86 +222 or 1 84 86 +223 and 1 88 222 +224 or 1 221 223 +225 or 1 88 222 +226 and 1 90 225 +227 or 1 224 226 +228 or 1 90 225 +229 and 1 92 228 +230 or 1 227 229 +231 and 1 220 -230 +232 or 1 92 228 +233 and 1 231 232 +234 and 1 208 233 +235 and 1 106 -105 +236 and 1 74 -96 +237 or 1 236 130 +238 and 1 235 237 +239 and 1 112 -110 +240 or 1 235 237 +241 and 1 239 240 +242 or 1 238 241 +243 and 1 125 -126 +244 or 1 239 240 +245 and 1 243 244 +246 or 1 242 245 +247 and 1 129 -130 +248 or 1 243 244 +249 and 1 247 248 +250 or 1 246 249 +251 or 1 247 248 +252 and 1 -250 251 +253 and 1 153 -152 +254 and 1 84 -133 +255 or 1 254 194 +256 and 1 253 255 +257 and 1 159 -157 +258 or 1 253 255 +259 and 1 257 258 +260 or 1 256 259 +261 and 1 189 -190 +262 or 1 257 258 +263 and 1 261 262 +264 or 1 260 263 +265 and 1 193 -194 +266 or 1 261 262 +267 and 1 265 266 +268 or 1 264 267 +269 and 1 252 -268 +270 or 1 265 266 +271 and 1 269 270 +272 and 1 234 271 +273 concat 4 113 163 +274 add 4 138 273 +275 srem 4 274 115 +276 eq 1 165 275 +277 and 1 194 276 +278 add 4 115 273 +279 sub 4 278 138 +280 srem 4 279 115 +281 eq 1 165 280 +282 and 1 190 281 +283 ite 2 282 53 177 +284 ite 2 277 50 283 +285 eq 1 284 6 +286 and 1 272 285 +287 eq 1 138 275 +288 and 1 194 287 +289 eq 1 138 280 +290 and 1 190 289 +291 ite 2 290 53 183 +292 ite 2 288 50 291 +293 eq 1 292 8 +294 and 1 286 293 +295 concat 4 113 146 +296 add 4 138 295 +297 slice 2 296 7 0 +298 ite 2 133 297 146 +299 concat 4 113 298 +300 sub 4 299 115 +301 slice 2 300 7 0 +302 ite 2 136 301 298 +303 eq 1 302 10 +304 and 1 294 303 +305 eq 1 118 12 +306 and 1 304 305 +307 eq 1 163 14 +308 and 1 306 307 +309 eq 1 237 17 +310 and 1 308 309 +311 eq 1 235 19 +312 and 1 310 311 +313 eq 1 239 21 +314 and 1 312 313 +315 eq 1 243 23 +316 and 1 314 315 +317 eq 1 247 25 +318 and 1 316 317 +319 eq 1 255 27 +320 and 1 318 319 +321 eq 1 253 29 +322 and 1 320 321 +323 eq 1 257 31 +324 and 1 322 323 +325 eq 1 261 33 +326 and 1 324 325 +327 eq 1 265 35 +328 and 1 326 327 +329 and 1 328 39 +330 ite 4 82 138 165 +331 ite 4 92 138 165 +332 add 4 330 331 +333 ulte 1 332 138 +334 ite 1 37 329 -333 +335 next 1 39 334 +; End + + diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt index 5475e6e94a..522d3e2d37 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/params/XcfaConfig.kt @@ -160,7 +160,7 @@ data class FrontendConfig( InputType.LITMUS -> null InputType.CFA -> null InputType.CHC -> CHCFrontendConfig() as T - InputType.BTOR2 -> BTOR2FrontendConfig as T + InputType.BTOR2 -> BTOR2FrontendConfig() as T } } } @@ -188,7 +188,13 @@ data class CHCFrontendConfig( var model: Boolean = false, ) : SpecFrontendConfig -object BTOR2FrontendConfig : SpecFrontendConfig +data class BTOR2FrontendConfig ( + @Parameter( + names = ["--optimization"], + description = "Runs frontend with all given optimizations" + ) + var btor2Passes: Boolean = false +) : SpecFrontendConfig interface SpecBackendConfig : Config diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt index d455f425c3..9ff327c20d 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/SolverRegistration.kt @@ -15,6 +15,7 @@ */ package hu.bme.mit.theta.xcfa.cli.utils +import hu.bme.mit.theta.common.OsHelper import hu.bme.mit.theta.common.logging.Logger import hu.bme.mit.theta.solver.SolverFactory import hu.bme.mit.theta.solver.SolverManager diff --git a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt index 45cd1a1fb4..e9c6c85ca4 100644 --- a/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt +++ b/subprojects/xcfa/xcfa-cli/src/main/java/hu/bme/mit/theta/xcfa/cli/utils/XcfaParser.kt @@ -109,7 +109,8 @@ fun getXcfa( } InputType.BTOR2 -> { - parseBTOR2(config.inputConfig.input!!, parseContext, logger, uniqueWarningLogger) + val btor2Passes = config.frontendConfig.specConfig as Boolean + parseBTOR2(config.inputConfig.input!!, btor2Passes, parseContext, logger, uniqueWarningLogger) } } } catch (e: Exception) { @@ -258,6 +259,7 @@ private fun parseChc( private fun parseBTOR2( input: File, + btor2Passes: Boolean, parseContext: ParseContext, logger: Logger, uniqueLogger: Logger, @@ -275,7 +277,7 @@ private fun parseBTOR2( context.accept(visitor) - val xcfa = Btor2XcfaBuilder.btor2xcfa(parseContext, uniqueLogger) + val xcfa = Btor2XcfaBuilder.btor2xcfa(btor2Passes, parseContext, uniqueLogger) // logger.write(Logger.Level.MAINSTEP, xcfa.toDot()) return xcfa } diff --git a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt index 15727047f8..d5ddee8689 100644 --- a/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt +++ b/subprojects/xcfa/xcfa/src/main/java/hu/bme/mit/theta/xcfa/passes/ProcedurePassManager.kt @@ -175,10 +175,16 @@ class LitmusPasses : ProcedurePassManager() class Btor2Passes(parseContext: ParseContext, uniqueWarningLogger: Logger) : ProcedurePassManager( listOf( + LbePass(parseContext), NormalizePass(), DeterministicPass(), EmptyEdgeRemovalPass(), UnusedLocRemovalPass(), SimplifyExprsPass(parseContext), + UnusedVarPass(uniqueWarningLogger), ) ) + +class Btor2EmptyPass() : ProcedurePassManager() { + // No optimization +}