smt

    0

    1답변

    z3과 mathsat를 사용하여 몇 가지 실험을 수행해야합니다. 나는 이미 수학을 통해 실험을 마쳤다. mathsat 용 입력 파일을 작성하는 데 많은 시간이 필요하며 z3 용 입력 파일을 다시 작성하고 싶지 않습니다. Mathsat은 'msat'파일에서 'smt'파일 생성을 지원합니다. 변환 명령은 아래와 같습니다. /home/xdb/mathsat/mat

    2

    1답변

    Skolemization을 사용하여 내 이론에서 실존 한정 기호를 제거하려고합니다. 이것은 실존 적 한정어의 범위 내에서 보편적으로 정량화 된 변수에 의해 매개 변수화 된 함수로 실존 적 수량자를 대체한다는 것을 의미합니다. Here Z3에서이 작업을 수행하는 방법을 찾았지만 여전히 문제가 있습니다. 다음과 같은 두 가지 기능을한다고 가정 (f1 t), 즉

    1

    1답변

    매개 변수화 된 정렬 값에 어떻게 액세스합니까? 예를 들어 , 나는 다음과 같은 선언이있는 경우 : 나는 x가 나타내는 쌍의 첫 번째 요소에 액세스하려면 어떻게 (declare-sort Pair 2) (declare-const x (Pair Int Int)) 를?

    2

    1답변

    Microsoft에서 개발 한 SMT 솔버 인 Z3에 1 차 이론을 넣고 싶습니다. 이 이론은 두 객체 으로 obj1 및 obj2보다, 함수 객체를 받아 작업을 반환 이동 및 는 인수로 조치를 취 발생 한 위치 조건이 포함되어 있습니다. 이 이론에는 수식이 포함되어 있습니다 (move (obj1)), 그리고 이 발생하는 유일한 방법 인 것입니다. 조건자가

    1

    1답변

    저는 1 차 이론에 대한 사실을 증명하기 위해 Z3 사용을 최적화하는 실험을하고 있습니다. 현재, 파이썬에서 1 차 이론을 지정하고 그 안에 한정어를 사용하고 Z3에 대한 증명 목표의 부인과 함께 모든 절을 보냅니다. 나는 결과를 최적화 할 수 있기를 희망하는 다음과 같은 생각을 가지고 있습니다. 나는 Z3에 이론상의 수식을 관련 증명 목표에 보내기를 원합

    3

    1답변

    저는 Microsoft의 SMT 솔버 인 Z3에서 귀납적 사실을 입증하려고합니다. Z3은 일반적으로 Z3 guide (8 단원 : 데이터 유형)에 설명 된대로이 기능을 제공하지 않지만 사실을 입증하려는 도메인을 제한 할 때 가능하다고 생각합니다. 다음의 예를 생각해 (declare-fun p (Int) Bool) (assert (p 0)) (asser

    1

    1답변

    아래와 같이 간단한 Z3 파이썬 코드가 있습니다. 나는 "print"라인이 그 라인 위에 저장되어있는 "y"를 리턴 할 것이라고 기대한다. 대신 결과로 "A [x]"를 얻었습니다. I = IntSort() A = Array('A', I, I) x = Int('x') y = Int('y') Store(A, x, y) print Select(A,x)

    2

    1답변

    SMTlib2 형식의 정렬을 사용하는 데 문제가 있습니다. 예를 들어 간격을 다음과 같이 정의합니다. (declare-sort Pair 2) (define-sort Interval() (Pair Int Int)) 함수에서 새 Interval을 어떻게 반환 할 수 있습니까? 예 : (define-fun getInterval ((a Int) (b Int)

    3

    1답변

    나는 CUTE, DART 또는 (아마도) SAGE와 아주 비슷하게 상태 공간을 깊이 우선 탐색하는 기호 실행 프로그램에 의해 생성 된 경로 조건을 해결하기 위해 Z3을 사용하고 있습니다. 우리는 Z3을 사용하는 여러 가지 방법을 실험하고 있습니다. 극단적 인 경우, 우리는 모든 쿼리를 Z3으로 보내고 직후에 (리셋)합니다. 다른 하나는 경로 조건을 정확하게

    3

    1답변

    템플릿으로 인해 문제가 발생하며 문제의 성격 상 한정어에 의존해야합니다. 이제 솔버는 정말 단순한 (만족스러운) 문제에 대한 인스턴스 만 찾을 수 있습니다. 'unsat'를 찾는 것은 많은 경우에 효과가 있습니다. 'sat'를 찾는 일은 거의 없습니다. 인스턴스, Z3를 찾을 수 (assert (! (disjoint_1 B A) :named a2)) (a