Web pages define their appearance using Cascading Style Sheets, a modular language for layout of tree-structured documents. In principle, using CSS is easy: the developer specifies declarative constraints on the layout of an HTML document (such as the positioning of nodes in the HTML tree), and the browser solves the constraints to produce a box-based rendering of that document. In practice, however, the subtleties of CSS semantics make it difficult to develop stylesheets that produce the intended layout across different user preferences and browser settings.
This paper presents the first mechanized formalization of a substantial fragment of the CSS semantics. This formalization is equipped with an efficient reduction to the theory of quantifier-free linear real arithmetic, enabling effective automated reasoning about CSS stylesheets and their behavior. We implement this reduction in Cassius, a solver-aided framework for building semantics-aware tools for CSS. To demonstrate the utility of Cassius, we prototype new tools for automated verification, debugging, and synthesis of CSS code. We show that these tools work on fragments of real-world websites, and that Cassius is a practical first step toward solver-aided programming for the web.
Wed 2 NovDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:10 | |||
13:30 25mTalk | Deriving Divide-and-Conquer Dynamic Programming Algorithms using Solver-Aided Transformations OOPSLA Shachar Itzhaky MIT CSAIL, Rohit Singh MIT, Rezaul Chowdhury Stony Brook University, Kuat Yessenov MIT, Yongquan Lu MIT, Charles E. Leiserson MIT, Armando Solar-Lezama MIT CSAIL DOI Pre-print Media Attached | ||
13:55 25mTalk | Speeding Up Machine-Code Synthesis OOPSLA Venkatesh Srinivasan University of Wisconsin - Madison, Tushar Sharma University of Wisconsin - Madison, USA, Thomas Reps University of Wisconsin - Madison and Grammatech Inc. DOI Pre-print Media Attached | ||
14:20 25mTalk | Automated Reasoning for Web Page Layout OOPSLA DOI Media Attached | ||
14:45 25mTalk | FIDEX: Filtering Spreadsheet Data using Examples OOPSLA DOI Media Attached |