diff --git a/verifier/src/main/java/dev/cel/verifier/BUILD.bazel b/verifier/src/main/java/dev/cel/verifier/BUILD.bazel index b8d62a4d4..6b498a162 100644 --- a/verifier/src/main/java/dev/cel/verifier/BUILD.bazel +++ b/verifier/src/main/java/dev/cel/verifier/BUILD.bazel @@ -165,6 +165,7 @@ java_library( "CelZ3ExtensionalityAxioms.java", "CelZ3FunctionRegistry.java", "CelZ3OperatorTranslator.java", + "CelZ3StructTranslator.java", "CelZ3TranslationContext.java", "CelZ3TypeConstraintGenerator.java", "TranslatedValue.java", diff --git a/verifier/src/main/java/dev/cel/verifier/CelAstToZ3Translator.java b/verifier/src/main/java/dev/cel/verifier/CelAstToZ3Translator.java index 778aa88d7..404ed9900 100644 --- a/verifier/src/main/java/dev/cel/verifier/CelAstToZ3Translator.java +++ b/verifier/src/main/java/dev/cel/verifier/CelAstToZ3Translator.java @@ -18,14 +18,11 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Iterables; -import com.google.common.collect.Streams; import com.microsoft.z3.ArrayExpr; import com.microsoft.z3.BoolExpr; import com.microsoft.z3.Context; import com.microsoft.z3.Expr; -import com.microsoft.z3.FPExpr; import com.microsoft.z3.FuncDecl; -import com.microsoft.z3.IntExpr; import com.microsoft.z3.Quantifier; import com.microsoft.z3.SeqExpr; import com.microsoft.z3.Sort; @@ -39,14 +36,6 @@ import dev.cel.common.types.CelKind; import dev.cel.common.types.CelType; import dev.cel.common.types.CelTypeProvider; -import dev.cel.common.types.CelTypes; -import dev.cel.common.types.ListType; -import dev.cel.common.types.MapType; -import dev.cel.common.types.NullableType; -import dev.cel.common.types.OptionalType; -import dev.cel.common.types.SimpleType; -import dev.cel.common.types.StructType; -import dev.cel.common.types.StructTypeReference; import dev.cel.common.types.TypeType; import java.util.ArrayList; import java.util.Arrays; @@ -61,8 +50,8 @@ * Internal translator from CEL AST to Z3 SMT expressions using a 4-valued logic tagged union. * *

Lifetime & Mutability: This translator is stateful and highly mutable. It accumulates - * type constraints, loop variables (via its symbol table), and uninterpreted functions (via field - * caches) during AST traversal. + * constraints and symbol bindings in a shared {@link CelZ3TranslationContext}, and literal caches + * in itself and its delegate translators. * *