Skip to content

newcnf segfaults on a let bound to another let #908

Description

@shalashaska117

NewCNF segfaults when a let is bound to another let.

(set-logic ALL)
(declare-fun p () Bool)
(declare-fun q () Bool)
(declare-fun r () Bool)
(assert (let ((b (let ((c (and r p))) c))) (or (=> q b) b)))
(check-sat)
$ vampire -newcnf on crash.smt2
% Aborted by signal SIGSEGV on crash.smt2
% Termination reason: Unknown
% Termination phase: NewCNF

Release build, commit 4844270.

Three things are load-bearing. The outer let has to be bound to another let: (let ((b (and r p))) (or (=> q b) b)) is answered normally. The inner body has to be a conjunction: (or r p) in its place does not trigger it. And the bound variable has to occur both under an implication and on its own.

Found while testing #894, and it reproduces with and without that branch, so it is independent of it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions