GithubHelp home page GithubHelp logo

vezwork / modallogic Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rkirsling/modallogic

6.0 2.0 2.0 463 KB

Epistemic Logic Playground

Home Page: https://vezwork.github.io/modallogic/

License: MIT License

CSS 6.24% HTML 27.86% JavaScript 65.90%
logic epistemology epistemic-logic playground interactive

modallogic's Introduction

Epistemic Logic Playground

This project is based on the open-source Modal Logic Playground by Ross Kirsling. The Epistemic Logic Playground was made by Elliot Evans. Special thanks to my non-classical logic instructors Richard Zach and Audrey Yap, as well as my classmates who provided feedback on this project.

The Epistemic Logic Playground is a graphical semantic calculator for Dynamic Epistemic logic, built using D3, MathJax, and Bootstrap.

See it in action at vezwork.github.io/modallogic!

Reusable code

  • The core part of the code is MPL.js, a library for parsing and evaluating well-formed formulas of modal propositional logic. See the API Reference here.
  • I've also extracted the directed graph editing code so that it can be easily repurposed. You can find it here.

modallogic's People

Contributors

danielrosenwasser avatar rkirsling avatar rzach avatar vezwork avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

modallogic's Issues

Feature requests from logic classmates peer feedback

In order of priority:

P1

  • written instructions for use
  • the operator “everyone,” as in Ea,b,etc. OR K[a,b] used for group knowledge. One could consider this very important, since for example the homework question where this playground could be most useful would be homework 6 question 1, where we were asked to disprove Ea,b A -> KaKb A
  • public announcement logic either as formulas or as buttons you can press to "announce" something and change the model.

P2

  • Pre-made examples It might also be helpful to have some pre-loaded example models. In fact, these pre-loaded models could potentially demonstrate certain frame correspondences that hold such as K, T, 4, 5. This would not only help new users, but would demonstrate why certain frame correspondences hold by way of some visual examples.
  • instructional video attaching a video on your webpage showing how you illustrate an argument using your playground, just to give the new player better instruction?

P3

  • Sequential World Numbers once a world is deleted and a new world is added, the numbers are not necessarily sequential. This in-turn can make the labels on the worlds confusing. Alternatively it might be good to give users the option to name each world.
  • Agent Arrow editing UI When an agent arrow is selected, it seems odd that a keyboard shortcut is needed to change direction. Adding a small panel to change the arrow direction under the agent and variable selectors may make this more clear.
  • Common Knowledge Operator from definition 15.6 in the course text. This seems difficult to do correctly since it involves infinity. I'm sure it's possible for finite models, but not easy.
  • Code Cleanup & Documentation The current code files are long and disorganized, organize the code, add inline documentation, and add documentation to the github page so other people can contribute or understand the project.

Bugs from logic classmates peer feedback

  • Fixed in commit. In epistemic logic it is expected that the accessibility relation is an equivalence relation, this is not reflected in-app.

    "toggle buttons could be added to enforce that each agent is reflexive, symmetric and transitive".

    From SEP: "for Ka to capture knowledge, the relation Ra must be an equivalence relation" i.e.

    • reflexive
    • symmetric
    • transitive
  • Fixed in commit. It appears that deleting a relation arrow of an agent does not update the model URL. This means that when shared after deleting an agent relation, the shared model will not be correct.

  • Fixed in commit.K[a]K[b]p does not work, but K[a](K[b]p) does. Likewise ~K[a]p does not work, but ~(K[a]p) does.

  • Fixed in commit. K[q]a is evaluated despite being incorrect. q is not an agent and a is not a propositional variable. Relevant code

  • Fixed in commit. Adding reflexive loops to individual worlds is broken. The display of reflexive loops is also not working.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.