Skip to content
Snippets Groups Projects
circleSygus.sl 1.66 KiB
Newer Older
;; The background theory 
(set-logic NRA)

(define-fun sqr ((x Real)) Real (* x x))
;(define-fun sqr ((x Real)) Real (ite (>= x 0) x (- x) ))

(define-fun error ((x Real)) Real (ite (> x 0) x (* (- 1) x) ) )

(define-fun transitionX ((x Real) (xP Real)) Real 
     (ite (> xP 0) (- x 1) (ite (= xP 0) x (+ x 1)))
)


(define-fun transitionY ((y Real) (yP Real)) Real 
     (ite (> yP 0) (- y 1) (ite (= yP 0) y (+ y 1)))
)

(synth-fun inCircle ((x Real) (y Real) (xP Real) (yP Real)) Bool

        ;; Declare the non-terminals that would be used in the grammar
    ( (B Bool) (R Real) (C Real))

    (
        (B Bool ( (<= R (sqr C)) ))

        (R Real (
                    (+  (sqr (- xP (+ (* C x) (* C y) 0 ) ))
                        (sqr (- yP (+ (* C x) (* C y) 0 ) ))
                    )
                )
        )
        (C Real ( (Constant Real) )

        )
        

    )

)




; (declare-var xx Real)
; (declare-var yy Real)
; (declare-var xxP Real)
; (declare-var yyP Real)

;; Define the semantic constraints on the function
;;                            x   y     x' y'
    (constraint  (= (inCircle 10 (- 10) 11 (- 11) ) true ) )
    (constraint  (= (inCircle 10 (- 10) 9 (- 9) ) true ) )
    (constraint  (= (inCircle 1 1 2 2 ) false) )
    ;(constraint  (= (inCircle 1 1 1.5 2.3 ) true ) )

    ; (constraint  (=> 
    ;   (inCircle xx yy xxP yyP )
    ;   (and (<= (error (transitionX xx xxP)) (error xx) ) 
    ;        (<= (error (transitionX yy yyP)) (error yy) )
    ;   )
    ; ) 
    ; )

(check-synth)


; (define-fun inCircle ((x Real) (y Real) (xP Real) (yP Real)) Bool 

; (<= (+ (sqr (- xP (+ (* 1 x) (* 0 y) 0))) (sqr (- yP (+ (* 0 x) (* 1 y) 0)))) (sqr 2)))