An advanced Python-based engine designed to perform automated reasoning on first-order logic statements. This project leverages Natural Language Processing (NLP) techniques to analyze, parse, and evaluate logical statements, providing a robust foundation for applications in AI-driven reasoning and decision-making.
- Tokenization & Part-of-Speech Tagging: Efficiently identifies and classifies parts of speech (e.g., nouns, verbs, prepositions) using Python's NLTK library.
- Proper Noun Classification: Distinguishes proper nouns from common nouns using a comprehensive dataset.
- Atomic Sentence Detection: Parses and identifies atomic sentences to construct logical predicates.
- Predicate Formation: Translates natural language into predicate forms, similar to Prolog statements.
- Text Parsing: Analyzes large text files to extract relevant logical constructs.
- Customizable Logic Rules: Allows users to define and extend reasoning rules to fit specific needs.
- Modular Design: Highly modular codebase for ease of understanding, debugging, and extension.
- Clone the repository:
git clone https://github.com/your-username/automated-reasoning-engine.git cd automated-reasoning-engine
- Install the required dependencies:
pip install -r requirements.txt
- Prepare your input text or logical statements.
- Run the main script:
python main.py --input "path/to/your/input.txt"
- View the parsed predicates, reasoning results, and any inferred conclusions.
All humans are mortal.
Socrates is a human.
Therefore, Socrates is mortal.
Predicates:
- human(Socrates)
- mortal(Socrates)
Reasoning Result:
- True: Socrates is mortal.
.
├── .gitignore
├── documentation/
├── predicates.txt
├── README.md
├── requirements.txt
├── src/
│ ├── api.py
│ ├── Front End/
│ │ ├── graph.html
│ │ ├── index.html
│ │ ├── script.js
│ │ ├── styles.css
│ ├── knowledge_base.py
│ ├── main.py
│ ├── nlp_processor.py
│ ├── persistence.py
│ ├── semantic_parser.py
│ ├── solve_questions.py
│ ├── ui.py
├── testing/
│ ├── Questions.txt
│ ├── sample statements.txt
Contributions are welcome! If you'd like to contribute, please:
- Fork the repository.
- Create a feature branch:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add feature description"
- Push to your forked repository and create a pull request.
If you have any questions or suggestions, feel free to reach out: