{"size": 835, "ext": "scrbl", "max_stars_repo_path": "rosette/guide/scribble/reflection/symbolic-reflection.scrbl", "max_stars_repo_name": "remysucre/rosette", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "rosette/guide/scribble/reflection/symbolic-reflection.scrbl", "max_issues_repo_name": "remysucre/rosette", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "rosette/guide/scribble/reflection/symbolic-reflection.scrbl", "max_forks_repo_name": "remysucre/rosette", "max_forks_repo_forks_event_min_datetime": "2016-01-27T20:39:05.000Z", "max_forks_repo_forks_event_max_datetime": "2016-01-27T20:39:05.000Z"}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": 1, "avg_line_length": 39.7619047619, "max_line_length": 96, "alphanum_fraction": 0.7796407186}
#lang scribble/manual

@(require (for-label racket))


@title[#:tag "ch:symbolic-reflection" #:style 'toc]{Symbolic Reflection}

This chapter describes @deftech{symbolic reflection}, a convenient 
mechanism for manipulating the representation of symbolic values 
(Section @seclink["sec:value-reflection"]{7.1}) and 
the state of the symbolic evaluation from within a Rosette program 
(Section @seclink["sec:state-reflection"]{7.2}).
Symbolic reflection has three main applications:  (1) @tech[#:key "lifted constructs"]{lifting} 
additional Racket constructs to work with symbolic values; 
(2) guiding Rosette's symbolic virtual machine to achieve 
better performance; and (3) implementing advanced solver-aided functionality.


@[table-of-contents]
@include-section["value-reflection.scrbl"]
@include-section["state-reflection.scrbl"]