Hello everyone! I hope it's not too late to express my interest in contributing to SymPy within this year's Summer of Code.
At first, a short introduction: I am a Master's student of theoretical computer science at the Faculty of Informatics, Masaryk University, Czech Republic. I have been working in Python for several years, either as an open-source contributor (some of my work is available at my Github profile [1]) or commercially (as a part-time employee at Red Hat). Although my experience resides primarily in the domain of web programming, I've acquired solid general knowledge of the language and feel comfortable doing virtually any programming in it, understanding and taking advantage of other people's code included. It's perhaps worth a note that I've extensively used only Python's 2.* versions, although I don't think getting familiar with Python 3 would pose a problem. Going through the project ideas list, I've found three proposals quite intriguing: 1. finalisation of the new assumptions system; 2. implementation of the symbolic (formal) logic and set theory; 3. step-by-step expression manipulation/visualisation. Obviously, the first two projects are tightly coupled. However, as I understand it from the assumptions-related pull request [2] there are already some people interested in the assumptions project, so it occurred to me that it could be a good idea to join our efforts where I would also take up the logic/set-theory project, which is heavily tied to the assumptions system anyway. During my university studies, I've had several courses on mathematical logic and set theory (and relatedly: formal languages, computability and universal algebra). On my own, I have further studied functional languages in the light of the Curry-Howard isomorphism which connects mathematical proofs with programs. The other problem of the "Show steps"-like functionality seems interesting to me as well. It has immediately reminded me of transition systems used within operational semantics of programming languages, familiarity with which could perhaps come in handy. Incorporating a logging/signals-style framework into the already existent expression-evaluating methods so that information about consequent "by hand" steps could be collected (when desired) sounds like a good approach to me. As per the output format, I'd concur that a list sequence (or a tree, perhaps, indicating several possible ways to achieve the same result) of the required operations would be a good and generic enough representation of the output data -- even only a list of the expressions resulting from applying of the individual operations could be sufficient at first, leaving the user to realise what the operations in between the steps actually are. As such, I'm presented with a dilemma of the two projects: one is the combination of assumptions + logic/set-theory, the other step-by-step evaluation. Is there be any recommendation from your side? I understand that the former one is of a higher priority for the SymPy community, which I think is an important factor... To conclude, are you please aware of any related issue with SymPy for which it would be useful to write a small patch before submitting the GSoC application? I thank in advance for your reply! With regards, Andrej Tokarčík [1] https://github.com/andrejtokarcik Also, for what it's worth, I've already contributed to SymPy, see https://github.com/sympy/sympy/commit/771573f990dc4bbbeaed96d36696a9e2be2a7fc7 for my GHOP '08 work :) [2] https://github.com/sympy/sympy/pull/2508#issuecomment-35834021 -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CABqPtbenvUpUC9wesvqYrA2k-hecvwTahZpsAjiBkXhFt1R9fg%40mail.gmail.com. For more options, visit https://groups.google.com/groups/opt_out.