Skip to content

Commit 9492a2e

Browse files
committed
fix z3_auto
1 parent a28bd1b commit 9492a2e

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

hakim-engine/src/interactive/tactic/z3_auto.rs

+11-7
Original file line numberDiff line numberDiff line change
@@ -576,13 +576,13 @@ impl<'a> Z3Manager {
576576
if let Term::Universe { index } = ty.as_ref() {
577577
if *index == 0 {
578578
let key = app_ref!(to_universe(), TermRef::new(t.clone()));
579-
let sort_name = format!("{:?}", t);
580-
if check_exists(&self.unknowns.0, key.clone()) {
581-
return Some(sort_name);
579+
let exist = check_exists(&self.unknowns.0, key.clone());
580+
let id = lookup_in_cell_hashmap(&self.unknowns.0, key);
581+
let sort_name = format!("$Type{id}");
582+
if !exist {
583+
let sort = smt2::Sort::Declare(SortDecl::new(sort_name.clone(), 0));
584+
self.smt_ctx.sort(sort);
582585
}
583-
let sort = smt2::Sort::Declare(SortDecl::new(sort_name.clone(), 0));
584-
self.smt_ctx.sort(sort);
585-
lookup_in_cell_hashmap(&self.unknowns.0, key);
586586
return Some(sort_name);
587587
}
588588
}
@@ -719,7 +719,11 @@ mod tests {
719719
);
720720
convert_check(r#""s" + "l" + " a" = "sl a""#, "(assert (not (= (str.++ (str.++ (seq.++ (seq.unit #x73) ) (seq.++ (seq.unit #x6C) )) (seq.++ (seq.unit #x20) (seq.++ (seq.unit #x61) ))) (seq.++ (seq.unit #x73) (seq.++ (seq.unit #x6C) (seq.++ (seq.unit #x20) (seq.++ (seq.unit #x61) )))))))\n(check-sat)\n");
721721
convert_check(r#"nth '*' "aa" 0 ∈ member_set "a""#, "(declare-const $x0 (Seq (_ BitVec 8)))\n(assert (not (select $x0 (seq.nth (seq.++ (seq.unit #x61) (seq.++ (seq.unit #x61) )) 0))))\n(check-sat)\n");
722-
// convert_check(r#"map (λ x, 2*x) [2] = [4]"#, "");
722+
// convert_check(r#"map (λ x, 2*x) [2] = [4]"#, "");
723+
convert_check(
724+
r#"∀ A: DFA "()", Ldfa A = { s: list char | valid_paren s }"#,
725+
"(declare-const $x0 Bool)\n(assert $x0)\n(declare-sort $Type1 0)\n(declare-const A $Type1)\n(declare-const $x3 (Seq String))\n(declare-const $x4 (Seq String))\n(assert (not (= $x3 $x4)))\n(check-sat)\n",
726+
);
723727
}
724728
#[test]
725729
fn simple() {

0 commit comments

Comments
 (0)