Employment
Compiler Engineer
Igalia, Spain
November 2021 to present
Full Stack Developer
Vicampo.de GmbH, Germany
July 2015 to November 2021
Postdoctoral Researcher
Theory and Logic Group, Vienna University of Technology, Austria
January 2014 to June 2015
Postdoctoral Researcher
Center for Artificial Intelligence, New University of Lisbon, Portugal
September 2009 to September 2012
Assistant Editor
Stanford Encyclopedia of Philosophy, United States
November 2007 to present
Research Programmer
Qualitative Reasoning Group, Northwestern University, United States
September 2001 to August 2002
Programmer
Cycorp, Inc., United States
June 2001 to September 2001
Programmer
Cycorp, Inc., United States
May 2000 to August 2000
Programmer
Cycorp, Inc., United States
June 1999 to August 1999
Publications
Language-oriented Programming in Racket—A Cultural AnthropologyA collection of interviews with dozens of Racket programmers of their experience of language-oriented programming, of which Racket is a strong proponent.
Racket WeekendA ten-chapter short course on basic Racket programming.
Server: Racket—Practical HTTP Programming with the Racket HTTP ServerA step-by-step guide to getting started with the built-in Racket HTTP server, with a sample web application and its functionality built up in pieces. Survey of a number of third-party libraries that will probably be used heavily by most web apps written in Racket.
Discover Snowplow: Your Next Analytics PlatformAn introduction to the
Snowplow data analytics and pipeline platform.
Axiomatizing Jaśkowski’s discussive logic D2Hitoshi Omori, Studia Logica 106(6), 2018, pp. 1163–1180.We outline the rather complicated history of attempts at axiomatizing Jaśkowski’s discussive logic and show that some clarity can be had by paying close attention to the language we work with. We then examine the problem of axiomatizing in languages involving discussive conjunctions. Specifically, we show that recent attempts by Ciuciura are mistaken. Finally, we present an axiomatization of in the language Jaśkowski suggested in his second paper on discussive logic, by following a remark of da Costa and Dubikajtis. We also deal with an interesting variant of , introduced by Ciuciura, in which negation is also taken to be discussive.
From absolute to affine geometry in terms of point-reflections, midpoints, and collinearityVictor Pambuccian, Note di Matematica 36(1), 2016, pp. 11–24.We investigate equational theories expressed in terms of the point-reflection operation \sigma and the midpoint operation
that lie strictly between the absolute and the affine theory, proving a number of dependencies and independencies in the process. Several universal theories enlarged with the collinearity predicate also lie strictly between the absolute and the affine theory. The independence models and several proofs were obtained by
Tipi, an aggregate of automatic theorem provers. To show that no set of equations with at most three variables can axiomatize the affine theory is left as an open problem.
Dialogues for proof search, in Benzmüller, C. and Otten, J. ARQNL 2014. Automated Reasoning in Quantified Non-Classical Logics, 2014, pp. 65–70.Dialogue games are a two-player semantics for a variety of logics, including intuitionistic and classical logic. Dialogues can be viewed as a kind of analytic calculus not unlike tableaux. Although dialogues can serve as an alternative characterization of intuitionistic logic, it is less clear to what extent dialogues can be practically used as a search procedure. We announce
Kuno, an automated theorem prover for intuitionistic first-order logic based on dialogue games.
Automating Leibniz’s theory of conceptsPaul Oppenheimer and Edward N. Zalta, in Felty, A. P. and Middeldorp, A. Automated Deduction - CADE 25, 2015, pp. 73–97.Our computational metaphysics group describes its use of automated reasoning tools to study Leibniz’s theory of concepts. We start with a reconstruction of Leibniz’s theory within the theory of abstract objects (henceforth object theory
). Leibniz’s theory of concepts, under this reconstruction, has a non-modal algebra of concepts, a concept-containment theory of truth, and a modal metaphysics of complete individual concepts. We show how the object-theoretic reconstruction of these components of Leibniz’s theory can be represented for investigation by means of automated theorem provers and finite model builders. The fundamental theorem of Leibniz’s theory is derived using these tools.
Tarski geometry axiomsWilliam Richter and Adam Grabowski, Formal Mathematics 22(2), 2014, pp. 167–176.This is the translation of the Mizar article containing readable Mizar proofs of some axiomatic geometry theorems formulated by the great Polish mathematician Alfred Tarski, and we hope to continue this work.
The article is an extension and upgrading of the source code written by the first author with the help of miz3 tool; his primary goal was to use proof checkers to help teach rigorous axiomatic geometry in high school using Hilbert’s axioms.
This is largely a Mizar port of Julien Narboux’s Coq pseudo-code. We partially prove the theorem that Tarski’s (extremely weak!) plane geometry axioms imply Hilbert’s axioms. Specifically, we obtain Gupta’s amazing proof which implies Hilbert’s axiom I1 that two points determine a line.
The primary Mizar coding was heavily influenced by axioms of incidence geometry. The original development was much improved using Mizar adjectives instead of predicates only, and to use this machinery in full extent, we have to construct some models of Tarski geometry. These are listed in the second section, together with appropriate registrations of clusters. Also models of Tarski’s geometry related to real planes were constructed.
Computing with mathematical argumentsReinhard Kahle, in Andersen, H., Dieks, D., Gonzalez, W., Uebel, T. and Wheeler, G. New Challenges to Philosophy of Science, 2013, pp. 9–22.Thanks to developments in the last few decades in mathematical logic and computer science, it has now become possible to formalize non-trivial mathematical proofs in essentially complete detail. we discuss the philosophical problems and prospects for such formalization enterprises. We show how some perennial philosophical topics and problems in epistemology, philosophy of science, and philosophy of mathematics can be seen in the practice of formalizing mathematical proofs.
Checking proofsReinhard Kahle, in Aberdein, A. and Dove, I. The Argument of Mathematics, 2013, pp. 147–170.Contemporary argumentation theory tends to steer away from traditional formal logic. In the case of argumentation theory applied to mathematics, though, it is proper for argumentation theory to revisit formal logic owing to the in-principle formalizability of mathematical arguments. Completely formal proofs of substantial mathematical arguments suffer from well-known problems. But practical formalizations of substantial mathematical results are now available, thanks to the help provided by modern automated reasoning systems. In-principle formalizability has become in-practice formalizability. Such efforts are a resource for argumentation theory applied to mathematics because topics that might be thought to be essentially informal reappear in the computer-assisted, formal setting, prompting a fresh appraisal.
The λ-calculusJohannes Korbmacher, in Zalta, E. N. and Nodelman, U. The Stanford Encyclopedia of Philosophy, 2024.
Eliciting implicit assumptions of Mizar proofs by property omission, Journal of Automated Reasoning 50, 2013, pp. 123–133.When formalizing proofs with proof assistants, it often happens that background knowledge about mathematical concepts is employed without the formalizer explicitly requesting it. Such mechanisms are warranted in the context of discovery because they can make prover sessions more efficient (less time searching the library) and can compress proofs (the more knowledge that is implicitly available, the less needs to be explicitly said by the formalizer). In the context of justification, though, implicit knowledge may need to be made explicit. To study implicit knowledge in proof assistants, one must first characterize what implicit knowledge should be made explicit. Then, once a class of implicit background knowledge is identified, one needs to determine how to extract it from proofs. When a class of implicit knowledge is made explicit, we may then inquire to what extent the implicit knowledge is needed for any particular proof; it often happens that proofs can be successful even if some of the implicit knowledge is omitted. In this note we describe an experiment conducted on the Mizar Mathematical Library (MML) of formal mathematical proofs concerning a particular class of implicit background knowledge, namely, properties of functions and relations (e.g., commutativity, asymmetry, etc.). In our experiment we separate, for each theorem of the MML, the needed function and relation properties from the unneeded ones. Special attention is paid to those function and relation properties that are significant in discussions of foundations of mathematics.
The simplest axiom system for plane hyperbolic geometry revisited, again, Studia Logica 102(3), 2014, pp. 609–615.Dependencies are identified in two recently proposed first-order axiom systems for plane hyperbolic geometry. Since the dependencies do not specifically concern hyperbolic geometry, our results yield two simpler axiom systems for absolute geometry.
Complete independence of an axiom system for central translations, Note di Matematica 33(2), 2013, pp. 133–142.A recently proposed axiom system for Andr´e’s central translation structures is improved upon. First, one of its axioms turns out to be dependent (derivable from the other axioms). Without this axiom, the axiom system is indeed independent. Second, whereas most of the original independence models were infinite, finite independence models are available. Moreover, the independence proof for one of the axioms employed proof-theoretic techniques rather than independence models; for this axiom, too, a finite independence model exists. For every axiom, then, there is a finite independence model. Finally, the axiom system (without its single dependent axiom) is not only independent, but completely independent.
A curious dialogical logic and its composition problemAleks Knoks and Sara L. Uckelman, Journal of Philosophical Logic 43, 2014, pp. 1065–1100.Dialogue semantics for logic are two-player logic games between a Proponent who puts forward a logical formula as valid or true and an Opponent who disputes this. An advantage of the dialogical approach is that it is a uniform framework from which different logics can be obtained through only small variations of the basic rules. We introduce the composition problem for dialogue games as the problem of resolving, for a set of rules for dialogue games, whether the set of -dialogically valid formulas is closed under modus ponens. Solving the composition problem is fundamental for the dialogical approach to logic; despite its simplicity, it often requires an indirect solution with the help of significant logical machinery such as cut-elimination. Direct solutions to the composition problem can, however, sometimes be had. As an example, we give a set of dialogue rules which is well-justified from the dialogical point of view, but whose set of dialogically valid formulas is both non-trivial and non-standard. We prove that the composition problem for can be solved directly, and introduce a tableaux system for .
Without E, in Arazim, P. and Dancak, M. Logica Yearbook 2014, 2015, pp. 1–12.Dialogue games are a two-player game-based semantics for a variety of logics. The Proponent () asserts an initial formula ; the Opponent () disputes that is valid. The players take turns, attacking or defending logical formulas. There are a few ways in which dialogues can be defined. There seems to be no unique formalization, though one can clearly see family resemblances among them. One rule that comes up often is the so-called rule, which says that must respond to ’s immediately preceding move. The rule is regarded as awkward and lacking a clear significance in any ordinary sense of dialogue
. Its sole value appears to be that it facilitates proofs of adequacy (soundness and completeness). While acknowledging its utility, one might naturally wish to eliminate the rule, or at least replace it by a rule that has intuitively greater plausibility. In some contexts, it is known that is in fact redundant (a set of rules with has the same logical force as the ruleset without ), while in other contexts, seems to be essential. Toward that end, this note investigates a dialogical characterization of classical logic in which the rule is relaxed.
A machine-assisted view of paraconsistency(preprint)For a newcomer, paraconsistent logics can be difficult to grasp. Even experts in logic can find the concept of paraconsistency to be suspicious or misguided, if not actually wrong. The problem is that although they usually have much in common with more familiar logics (such as intuitionistic or classical logic), paraconsistent logics necessarily disagree in other parts of the logical terrain which one might have thought were not up for debate. Thus, one’s logical intuitions may need to be recalibrated to work skillfully with paraconsistency. To get started, one should clearly appreciate the possibility of paraconsistent logics and the genuineness of the distinctions to which paraconsistency points. For this purpose, one typically encounters matrices involving more than two truth values to characterize suitable consequence relations. In the eyes of a two-valued skeptic, such an approach might seem dubious. Even a non-skeptic might wonder if there’s another way. To this end, to explore the basic notions of paraconsistent logic with the assistance of automated reasoning techniques. Such an approach has merit because by delegating some of the logical work to a machine, one’s logical "biases" become externalized. The result is a new way to appreciate that the distinctions to which paraconsistent logic points are indeed genuine. Our approach can even suggest new questions and problems for the paraconsistent logic community.
Analysis of a detached axiom in Huntington's axiom system for non-oriented ordered lines(preprint)We improve upon Huntington’s affine geometry by showing that his independence proofs can be, in some cases, simplified. We carry out a systematic investigation of the strict notion of betweenness that Huntington employs (the three arguments are supposed to be distinct) by comparing it to McPhee’s three axiom systems for the same intended class of structures, which employs weak betweenness (the arguments are permitted to be equal). Upon closely inspecting the proof that McPhee’s axiom systems are equivalent to Huntington’s (subject of course to the definition of weak betweenness in terms of strict and vice versa), one finds surprisingly that McPhee’s axiom systems have quite different relations to strict betweenness.
Premise selection for mathematics by corpus analysis and kernel methodsTom Heskes, Daniel Kühlwein, Evgeni Tsivtsivadze and Josef Urban, Journal of Automated Reasoning 52, 2014, pp. 191–213.Smart premise selection is essential when using automated reasoning as a tool for large-theory formal proof development. This work develops learning-based premise selection in two ways. First, a fine-grained dependency analysis of existing high-level formal mathematical proofs is used to build a large knowledge base of proof dependencies, providing precise data for ATP-based re-verification and for training premise selection algorithms. Second, a new machine learning algorithm for premise selection based on kernel methods is proposed and implemented. To evaluate the impact of both techniques, a benchmark consisting of 2078 large-theory mathematical problems is constructed, extending the older MPTP Challenge benchmark. The combined effect of the techniques results in a 50 % improvement on the benchmark over the state-of-the-art Vampire/SInE system for automated reasoning in large theories.
Tipi: A TPTP-based theory development environment emphasizing proof analysis(preprint)In some theory development tasks, a problem is satisfactorily solved once it is shown that a theorem (conjecture) is derivable from the background theory (premises). Depending on one’s motivations, the details of the derivation of the conjecture from the premises may or may not be important. In some contexts, though, one wants more from theory development than simply derivability of the target theorems from the background theory. One may want to know which premises of the background theory were used in the course of a proof output by an automated theorem prover (when a proof is available), whether they are all, in suitable senses, necessary (and why), whether alternative proofs can be found, and so forth. The problem, then, is to support proof analysis in theory development; the tool described in this paper, Tipi, aims to provide precisely that.
Automated and human proofs in general mathematics: An initial comparisonDaniel Kühlwein and Josef Urban, in Bjørner, N. and Voronkov, A. Logic for Programming, Artificial Intelligence, and Reasoning, 2012, pp. 37–45.First-order translations of large mathematical repositories allow discovery of new proofs by automated reasoning systems. Large amounts of available mathematical knowledge can be re-used by combined AI/ATP systems, possibly in unexpected ways. But automated systems can be also more easily misled by irrelevant knowledge in this setting, and finding deeper proofs is typically more difficult. Both large-theory AI/ATP methods, and translation and data-mining techniques of large formal corpora, have significantly developed recently, providing enough data for an initial comparison of the proofs written by mathematicians and the proofs found automatically. This paper describes such an initial experiment and comparison conducted over the 50000 mathematical theorems from the Mizar Mathematical Library.
Escape to Mizar from ATPs, in Fontaine, P., Schmidt, R. and Schulz, S. PAAR 2012, 2013, pp. 3–11.We announce a tool for mapping derivations produced by the E theorem prover to Mizar proofs. Our mapping complements earlier work that generates problems for automated theorem provers from Mizar inference checking problems. We describe the tool, explain the mapping, and show how we solved some of the difficulties that arise in mapping proofs between different logical formalisms, even when they are based on the same notion of logical consequence, as Mizar and E are (namely, first-order classical logic with identity).
New developments in parsing MizarCzesław Bylinski, in Juering, J., Campbell, J. A., Carette, J., dos Reis, G., Sojka, P., Wenzel, M. and Sorge, V. Intelligent Computer Mathematics, 2012, pp. 427–431.The Mizar language aims to capture mathematical vernacular by providing a rich language for mathematics. From the perspective of a user, the richness of the language is welcome because it makes writing texts more “natural”. But for the developer, the richness leads to syntactic complexity, such as dealing with overloading.
Recently the Mizar team has been making a fresh approach to the problem of parsing the Mizar language. One aim is to make the language accessible to users and other developers. In this paper we describe these new parsing efforts and some applications thereof, such as large-scale text refactorings, pretty-printing, HTTP parsing services, and normalizations of Mizar texts.
Dependencies in formal mathematics: Applications and extraction for Coq and MizarLionel Mamane and Josef Urban, in Juering, J., Campbell, J. A., Carette, J., dos Reis, G., Sojka, P., Wenzel, M. and Sorge, V. Intelligent Computer Mathematics, 2012, pp. 1–16.Two methods for extracting detailed formal dependencies from the Coq and Mizar system are presented and compared. The methods are used for dependency extraction from two large mathematical repositories: the Coq Repository at Nijmegen and the Mizar Mathematical Library. Several applications of the detailed dependency analysis are described and proposed. Motivated by the different applications, we discuss the various kinds of dependencies that we are interested in, and the suitability of various dependency extraction methods.
Metadata for a wiki of formalized mathematics, in Lange, C. and Urban, J. MathWikis-2011, 2011, pp. 2–5.In recent years wikis for formal mathematics have appeared. Formal mathematics presents a number of challenges for the wiki perspective. To enhance the quality of the data in these wikis from the perspective of information architecture, we propose some extensions of existing formal mathematics wikis to more properly handle metadata.
What is dialogical about dialogical logic?Sara L. Uckelman, in Ribeiro, H. J. Inside Arguments, 2012, pp. 207–222.
Large formal wikis: Issues and solutionsKasper Brink, Lionel Mamane and Josef Urban, in H. Davenport, J., Farmer, W. M., Urban, J. and Rabe, F. Intelligent Computer Mathematics, 2011, pp. 133–148.We present several steps towards large formal mathematical wikis. The Coq proof assistant together with the CoRN repository are added to the pool of systems handled by the general wiki system described in [10]. A smart re-verification scheme for the large formal libraries in the wiki is suggested for Mizar/MML and Coq/CoRN, based on recently developed precise tracking of mathematical dependencies. We propose to use features of state-of-the-art filesystems to allow real-time cloning and sandboxing of the entire libraries, allowing also to extend the wiki to a true multi-user collaborative area. A number of related issues are discussed.
mizar-items: Exploring fine-grained dependencies in the Mizar Mathematical Library, in H. Davenport, J., Farmer, W. M., Urban, J. and Rabe, F. Intelligent Computer Mathematics, 2011, pp. 266–267.The MML is one of the largest collection of formalized mathematical knowledge that has been developed with various interactive proof assistants. It comprises more than 1100 “articles” summing to nearly 2.5 million lines of text, each consisting of a unified collection of mathematical definitions and proofs. Semantically, it contains more than 50000 theorems and more than 10000 definitions expressed using more than 7000 symbols. It thus offers a fascinating corpus on which one could carry out a number of experiments. This note discusses a system for computing fine-grained dependencies among the contents of the MML.
Licensing the Mizar Mathematical LibraryMichael Kohlhase, Lionel Mamane, Adam Naumowicz, Piotr Rudnicki and Josef Urban, in H. Davenport, J., Farmer, W. M., Urban, J. and Rabe, F. Intelligent Computer Mathematics, 2011, pp. 149–163.The Mizar Mathematical Library (MML) is a large corpus of formalised mathematical knowledge. It has been constructed over the course of many years by a large number of authors and maintainers. Yet the legal status of these efforts of the Mizar community has never been clarified. In 2010, after many years of loose deliberations, the community decided to investigate the issue of licensing the content of the MML, thereby clarifying and crystallizing the status of the texts, the text’s authors, and the library’s long-term maintainers. The community has settled on a copyright and license policy that suits the peculiar features of Mizar and its community. In this paper we discuss the copyright and license solutions. We offer our experience in the hopes that the communities of other libraries of formalised mathematical knowledge might take up the legal and scientific problems that we addressed for Mizar.
Dialogue games for classical logicSara L. Uckelman and Aleks Knoks, in Giese, M. and Kuznets, R. TABLEAUX 2011: Workshops, Tutorials, and Short Papers, 2011, pp. 82–86.We define a class of dialogue games and prove that existence of winning strategies for the Proponent in this class of games corresponds to validity in classical propositional logic. Many authors have stated similar results without actually proving the correspondence. We modify the games used for intuitionistic logic given by Fermüller. We employ standard dialogue games and a standard sequent calculus for classical logic. The result is a simple correspondence between dialogue games and classical logic.
A wiki for Mizar: Motivation, Considerations, and Initial PrototypeJosef Urban, Piotr Rudnicki and Herman Guevers, in Autexier, S., Calmet, J., Delahaye, D., Ion, P. D. F., Rideau, L., Rioboo, R. and Sexton, A. P. Intelligent Computer Mathematics, 2010, pp. 455–469.Formal mathematics has so far not taken full advantage of ideas from collaborative tools such as wikis and distributed version control systems (DVCS). We argue that the field could profit from such tools, serving both newcomers and experts alike. We describe a preliminary system for such collaborative development based on the Git DVCS. We focus, initially, on the Mizar system and its library of formalized mathematics.
Exploring Steinitz-Rademacher polyhedra: A challenge for automated reasoning tools, in Sutcliffe, G., Ternovska, E. and Schulz, S. Proceedings of the Eighth International Workshop on the Implementation of Logics, 2010, pp. 14–18.This note reports on some experiments, using a handful of standard automated reasoning tools, for exploring Steinitz-Rademacher polyhedra, which are models of a certain first-order theory of incidence structures. This theory and its models, even simple ones, presents significant, geometrically fascinating challenges for automated reasoning tools.
Euler’s polyhedron formula in Mizar, in Fukada, K., van der Hoven, J., Joswig, M. and Takayama, N. Mathematical Software – ICMS 2010, 2010, pp. 144–147.Euler’s polyhedron formula asserts for a polyhedron that , where , , and are, respectively, the numbers of vertices, edges, and faces of . Motivated by I. Lakatos’s philosophy of mathematics as presented in his Proofs and Refutations, in which the history of Euler’s formula is used as a case study to illustrate Lakatos’s views, we formalized a proof of Euler’s formula formula in the Mizar system. We describe some of the notable features of the proof and sketch an improved formalization in progress that takes a deeper mathematical perspective, using the basic results of algebraic topology, than the initial formalization did.
A formal proof of Euler’s polyhedron formula, Studies in Logic, Grammar and Rhetoric 18(31), 2010, pp. 455–469.Euler’s polyhedron formula asserts for a polyhedron that , where , , and are, respectively, the numbers of vertices, edges, and faces of . This paper concerns a formal proof in the mizar system of Euler’s polyhedron formula carried out by the author. We discuss the informal proof (Poincaré’s) on which the formal proof is based, the formalism in which the proof was carried out, notable features of the formalization, and related projects.
Euler’s polyhedron formula, Formal Mathematics 16(1), 2008, pp. 7–17.Euler’s polyhedron theorem states for a polyhedron p, that
, where
,
, and
are, respectively, the number of vertices, edges, and faces of
. The formula was first stated in print by Euler in 1758. The proof given here is based on Poincaré’s linear algebraic proof, as adapted by Imre Lakatos in the latter’s
Proofs and Refutations.
As is well known, Euler’s formula is not true for all polyhedra. The condition on polyhedra considered here is that of being a homology sphere, which says that the cycles (chains whose boundary is zero) are exactly the bounding chains (chains that are the boundary of a chain of one higher dimension).
The present proof actually goes beyond the three-dimensional version of the polyhedral formula given by Lakatos; it is dimension-free, in the sense that it gives a formula in which the dimension of the polyhedron is a parameter. The classical Euler relation is corresponds to the case where the dimension of the polyhedron is .
The main theorem, expressed in the language of the present article, is
where is a polyhedron. The alternating characteristic sequence of a polyhedron is the sequence
where is the number of polytopes of of dimension . The special case of yields Euler’s classical relation. ( and will turn out to be equal, by definition, to .)
Two other special cases are proved: the first says that a one-dimensional polyhedron
that is a homology sphere consists of just two vertices (and thus consists of just a single edge); the second special case asserts that a two-dimensional polyhedron that is a homology sphere (a polygon) has as many vertices as edges.
The vector space of subsets of a set based on symmetric difference, Formal Mathematics 16(1), 2008, pp. 1–5.For each set , the power set of forms a vector space over the field (the two-element field with addition and multiplication done modulo ): vector addition is disjoint union, and scalar multiplication is defined by the two equations (, for subsets of ).
The rank+nullity theorem, Formal Mathematics 15(3), 2007, pp. 137–142.The rank+nullity theorem states that, if is a linear transformation from a finite-dimensional vector space to a finite-dimensional vector space , then , where and . The proof treated here is standard: take a basis of and extend it to a basis of , and then show that is equal to , and that is one-to-one on .
Teaching
Dialogical Logic (Assistant Instructor)
Institute for Logic, Language and Information, University of Amsterdam
2011
Type Theory (Instructor)
Department of Computer Science, New University of Lisbon
2010
Artificial Intelligence (Instructor)
Educational Program for Gifted Youth, Stanford University
2009
Computability and Logic (Graduate Teaching Assistant)
Stanford University
2006, 2008
First-order Logic (Graduate Teaching Assistant)
Stanford University
2006, 2007, 2008
Non-Euclidean Geometry (Instructor)
Educational Program for Gifted Youth, Stanford University
2007, 2008, 2009