diff --git a/turnstile/examples/rosette/bv.rkt b/turnstile/examples/rosette/bv.rkt index 9af1920..e08804d 100644 --- a/turnstile/examples/rosette/bv.rkt +++ b/turnstile/examples/rosette/bv.rkt @@ -28,6 +28,11 @@ (define-syntax- x (make-rename-transformer (⊢ y : ty.norm))) ... (ro:define-symbolic y ... pred-))]]) +;; ---------------------------------------------------------------------------- +;; Racket stuff + +(define-type-constructor Param #:arity = 1) + (define-rosette-primop boolean? : (→ Bool Bool)) (define-rosette-primop integer? : (→ Int Bool)) (define-rosette-primop string? : (→ String Bool)) @@ -46,6 +51,16 @@ -------- [⊢ [[_ ≫ (ro:if e_tst- e1- e2-)] ⇒ : (⊔ τ1 τ2)]]]) +(define-typed-syntax make-parameter + [(_ e) ⇐ : (~Param τ_expected) ≫ + [⊢ [[e ≫ e-] ⇐ : τ_expected]] + -------- + [⊢ [[_ ≫ (ro:make-parameter e-)]]]] + [(_ e) ≫ + [⊢ [[e ≫ e-] ⇒ : τ]] + -------- + [⊢ [[_ ≫ (ro:make-parameter e-)] ⇒ : (Param τ)]]]) + ;; ---------------------------------------------------------------------------- ;; BV stuff