오보에블로그
[프로그램합성] 해당 함수와 동일한 함수 합성하기 본문
728x90
해당 함수와 하는일은 같지만,
간단한 함수를 원할 때
합성을 이용하여 만들어 낼수 있다.
일단 sygus 포맷을 사용한다.
; 참고 링크 : https://github.com/SyGuS-Org/benchmarks/blob/5ccf14c9040ddd749f237dc6d40b79438effedff/lib/General_Track/from_2018/parity-AIG-d1.sl
; how to run : /home/wslee/utils/CVC4/cvc4 --lang=sygus --no-checking --no-interactive --dump-synth --default-dag-thresh=0 basic.sl
(set-logic BV)
(define-fun watf ( (a (BitVec 64)) (b (BitVec 64)) ) (BitVec 64)
(bvadd a b))
; wat 파일에 표기된 함수 적기
(synth-fun synf ( (a (BitVec 64)) (b (BitVec 64)) ) (BitVec 64))
; 합성할 함수 적기
(declare-var a (BitVec 64))
(declare-var b (BitVec 64))
(constraint (= (watf a b) (synf a b)))
; wat에 적힌 함수와 합성할 함수는 똑같은 일을 해야한다.
(check-synth)
지금은 기존에 원하는 해당함수가 매우 간단하기 때문에
synf 또한 똑같이 나오지만, 원한다면 watf 의 함수 내용을 바꾸어서
커스터 마이징이 가능하다.
; 합성 결과
(define-fun synf ((a (BitVec 64)) (b (BitVec 64))) (BitVec 64) (bvadd a b))
728x90
'Prev. > Lab' 카테고리의 다른 글
[Ocaml] 정수 → 16 진수로 변환 (Convert demical to hexidemical) (0) | 2020.07.06 |
---|---|
[Ocaml] 터미널 커맨드로 입력 받기 (0) | 2020.07.06 |
C/C++ 코드로 WebAssembly(.wat)코드 파일 생성하기(Mac 기준) (2) | 2020.06.28 |
[MacOs] MySQL 설치 (0) | 2020.06.12 |
[Ocaml] z3 패키지 설치 (0) | 2020.01.29 |