{"id":31223490,"url":"https://github.com/jrcalgo/knowlej-graph","last_synced_at":"2025-09-21T22:45:57.467Z","repository":{"id":195669394,"uuid":"665715624","full_name":"jrcalgo/knowleJ-graph","owner":"jrcalgo","description":"Propositional logic SAT solver for deterministic/stochastic expressions using Neo4J graph database \u0026 machine learning system optimization","archived":false,"fork":false,"pushed_at":"2025-07-05T19:37:10.000Z","size":578,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-05T20:39:59.778Z","etag":null,"topics":["ai-system","knowledge-graph","library","logical-reasoning","machine-learning-optimization","neo4j-database","propositional-logic","sat-solver"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jrcalgo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-12T20:44:12.000Z","updated_at":"2025-07-05T19:37:14.000Z","dependencies_parsed_at":"2024-10-27T03:18:34.845Z","dependency_job_id":"16005ef5-3238-4058-bc35-e1533de78555","html_url":"https://github.com/jrcalgo/knowleJ-graph","commit_stats":null,"previous_names":["jrcalgo/argumentative-logic","jrcalgo/knowlej","jrcalgo/knowlej-graph"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jrcalgo/knowleJ-graph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrcalgo%2FknowleJ-graph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrcalgo%2FknowleJ-graph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrcalgo%2FknowleJ-graph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrcalgo%2FknowleJ-graph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jrcalgo","download_url":"https://codeload.github.com/jrcalgo/knowleJ-graph/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jrcalgo%2FknowleJ-graph/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276319014,"owners_count":25621651,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-system","knowledge-graph","library","logical-reasoning","machine-learning-optimization","neo4j-database","propositional-logic","sat-solver"],"created_at":"2025-09-21T22:45:54.281Z","updated_at":"2025-09-21T22:45:57.451Z","avatar_url":"https://github.com/jrcalgo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KnowleJ: Advanced Propositional Logic Engine\n\n[![Java](https://img.shields.io/badge/Java-17+-orange.svg)](https://openjdk.java.net/)\n[![Kotlin](https://img.shields.io/badge/Kotlin-1.8+-purple.svg)](https://kotlinlang.org/)\n[![Python](https://img.shields.io/badge/Python-3.8+-blue.svg)](https://www.python.org/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\n**KnowleJ** is a sophisticated, multi-language propositional logic SAT engine that combines symbolic reasoning with modern software engineering practices. Built with Java, Kotlin, and Python, it provides a comprehensive toolkit for automated theorem proving, logical inference, and knowledge representation.\n\n## **What Makes KnowleJ Special**\n\n- **Research-Grade Logic Engine**: Implements complete propositional logic with inference and equivalency laws\n- **Graph-Based Reasoning**: Advanced deduction graphs for proof search and chaining\n- **ML-Ready Architecture**: Designed for hybrid symbolic-ML approaches (in development)\n- **Neo4j Integration**: Scalable graph database support for knowledge persistence (in development)\n- **gRPC API**: Modern service-oriented architecture for distributed systems (in development)\n\n## **Architecture Overview**\n\n```\n┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐\n│   Java Core     │    │   Kotlin API    │    │  Python ML      │\n│                 │    │                 │    │                 │\n│ • Proposition   │◄──►│ • gRPC Server   │◄──►│ • Learning      │\n│ • Argument      │    │ • Neo4j DB      │    │ • Automation    │\n│ • Truth Tables  │    │ • Node Models   │    │ • Utilities     │\n│ • Deduction     │    │                 │    │                 │\n│   Graphs        │    │                 │    │                 │\n└─────────────────┘    └─────────────────┘    └─────────────────┘\n```\n\n## **Current Status**\n\n### **Fully Functional**\n- **Java Logic Engine**: Complete propositional logic implementation\n- **Truth Table Generation**: Comprehensive boolean logic evaluation\n- **Inference Laws**: Modus ponens, syllogisms, resolution, etc.\n- **Equivalency Laws**: DeMorgan's, distributive, associative, etc.\n- **Deduction Graphs**: A* search, bidirectional reasoning\n- **Model System**: Deterministic and stochastic logic models\n- **Exception Handling**: Robust error management\n\n### **In Development**\n- **ML Pipeline**: Python learning algorithms (proof link prediction, graph masking)\n- **Neo4j Integration**: Database operations (infrastructure ready)\n- **gRPC Services**: API layer (proto definitions complete)\n\n## **Quick Start**\n\n### Prerequisites\n- Java 17+\n- Maven 3.6+\n- Python 3.8+ (for ML components)\n- Neo4j (optional, for database features)\n\n### Installation\n```bash\ngit clone https://github.com/yourusername/knowlej.git\ncd knowlej/knowlej-core\nmvn clean install\n```\n\n## **Core Usage Examples**\n\n### 1. **Working with Propositions**\n\n```java\nimport ai.knowlej.PropositionalLogic.Logic.Proposition;\nimport ai.knowlej.Exceptions.*;\n\n// Create a proposition from a logical expression\nProposition p = new Proposition(\"(p ∧ q) → r\");\n\n// Get the expression\nSystem.out.println(p.getExpression()); // \"(p ∧ q) → r\"\n\n// Get operands\nSystem.out.println(p.getOperandCount()); // 3 (p, q, r)\n\n// Generate and print truth table\np.printTruthTable();\n```\n\n**Output:**\n```\np  q  r  (p ∧ q) → r\nT  T  T     T\nT  T  F     F\nT  F  T     T\nT  F  F     T\nF  T  T     T\nF  T  F     T\nF  F  T     T\nF  F  F     T\n```\n\n### 2. **Building Arguments with Knowledge Bases**\n\n```java\nimport ai.knowlej.PropositionalLogic.Logic.Argument;\nimport ai.knowlej.PropositionalLogic.Models.LogicModels.DeterministicModel;\n\n// Create knowledge base models\nDeterministicModel[] kb = {\n    new DeterministicModel(\"premise1\", \"p → q\"),\n    new DeterministicModel(\"premise2\", \"q → r\")\n};\n\n// Create argument with learning enabled\nArgument\u003cDeterministicModel\u003e argument = new Argument\u003c\u003e(kb, true);\n\n// Check if a query follows from the knowledge base\nString query = \"p → r\";\nString result = argument.checkAllTTModels(query);\nSystem.out.println(\"Query '\" + query + \"' is: \" + result);\n```\n\n### 3. **Advanced Deduction with Graphs**\n\n```java\nimport ai.knowlej.DataStructures.Graph.DirectedDeductionGraph;\nimport ai.knowlej.PropositionalLogic.Logic.Proposition;\n\n// Create knowledge base\nHashSet\u003cString\u003e knowledgeBase = new HashSet\u003c\u003e();\nknowledgeBase.add(\"p → q\");\nknowledgeBase.add(\"q → r\");\n\n// Create query\nProposition query = new Proposition(\"p → r\");\n\n// Build deduction graph\nDirectedDeductionGraph graph = new DirectedDeductionGraph(knowledgeBase, query);\n\n// Perform bidirectional A* search\nSet\u003cString\u003e forwardHistory = new HashSet\u003c\u003e();\nSet\u003cString\u003e backwardHistory = new HashSet\u003c\u003e();\nArrayList\u003cDeductionGraphNode\u003e proof = graph.multithreadedBidirectionalAStar(forwardHistory, backwardHistory);\n\n// Print proof path\nfor (DeductionGraphNode node : proof) {\n    System.out.println(\"→ \" + node.getExpression());\n}\n```\n\n### 4. **Working with Stochastic Logic Models**\n\n```java\nimport ai.knowlej.PropositionalLogic.Models.LogicModels.StochasticModel;\nimport ai.knowlej.PropositionalLogic.Models.LogicModels.ModelAbstract;\nimport ai.knowlej.PropositionalLogic.Logic.Argument;\nimport java.util.HashMap;\n\n// Create several stochastic models with symbolic and probabilistic assignments\nStochasticModel sm1 = new StochasticModel(\"Model1\", \"A \u0026 B | C\");\nStochasticModel sm2 = new StochasticModel(\"Model2\", \"A \u0026 B | C\", new HashMap\u003cCharacter, String\u003e() {{\n    put('A', \"Cat\");\n    put('B', \"Dog\");\n    put('C', \"Bird\");\n}});\nStochasticModel sm3 = new StochasticModel(\"Model3\", \"A \u0026 B | C\", new HashMap\u003cCharacter, String\u003e() {{\n    put('A', \"Cat\");\n    put('B', \"Dog\");\n    put('C', \"Bird\");\n}}, 0.55, new HashMap\u003cCharacter, Double\u003e() {{\n    put('A', 0.5);\n    put('B', 0.4);\n    put('C', 0.75);\n}});\n// ... more models as needed\n\n// Assemble models into an array\nStochasticModel[] models = new StochasticModel[] { sm1, sm2, sm3 /*, ... */ };\n\n// Use with the Argument class for advanced deduction\nArgument\u003cModelAbstract\u003e argument = new Argument\u003c\u003e(models);\nargument.deduce(\"A \u0026 C | B -\u003e D \u0026 A\");\n```\n\nThis demonstrates the flexibility of the stochastic model system, supporting both symbolic and probabilistic assignments, and shows how to use them in advanced logical deduction scenarios.\n\n## **Supported Logical Operations**\n\n### **Logical Operators**\n- `∧` (AND), `∨` (OR), `¬` (NOT)\n- `→` (IMPLIES), `↔` (IFF), `⊕` (XOR)\n\n### **Inference Laws**\n- **Modus Ponens**: `p → q, p ⊢ q`\n- **Modus Tollens**: `p → q, ¬q ⊢ ¬p`\n- **Hypothetical Syllogism**: `p → q, q → r ⊢ p → r`\n- **Disjunctive Syllogism**: `p ∨ q, ¬p ⊢ q`\n- **Addition**: `p ⊢ p ∨ q`\n- **Simplification**: `p ∧ q ⊢ p`\n- **Conjunction**: `p, q ⊢ p ∧ q`\n- **Resolution**: `p ∨ q, ¬p ∨ r ⊢ q ∨ r`\n\n### **Equivalency Laws**\n- **DeMorgan's**: `¬(p ∧ q) ↔ ¬p ∨ ¬q`\n- **Distributive**: `p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r)`\n- **Associative**: `(p ∧ q) ∧ r ↔ p ∧ (q ∧ r)`\n- **Commutative**: `p ∧ q ↔ q ∧ p`\n- **Double Negation**: `¬¬p ↔ p`\n- **Identity**: `p ∧ T ↔ p`\n- **Domination**: `p ∨ T ↔ T`\n- **Complement**: `p ∨ ¬p ↔ T`\n\n## **Advanced Features**\n\n### **Truth Table Generation**\n- Automatic operand extraction and validation\n- Complete boolean evaluation for all combinations\n- CSV export capabilities\n- Custom column range printing\n\n### **Deduction Graphs**\n- **A* Search**: Optimal pathfinding in logical space\n- **Bidirectional Search**: Forward and backward reasoning\n- **Multithreaded**: Parallel computation for large graphs\n- **Adjacency Matrix**: Efficient graph representation\n\n### **Model System**\n- **Deterministic Models**: Classical boolean logic\n- **Stochastic Models**: Probabilistic reasoning (in development)\n- **Symbolic Representation**: Human-readable expressions\n- **Validity Classification**: Tautology, contradiction, contingency\n\n## **API Integration**\n\n### **gRPC Services** (Ready for Implementation)\n```protobuf\nservice ComputationGraphService {\n    rpc BuildGraph(GraphRequest) returns (GraphResponse);\n    rpc SearchProof(SearchRequest) returns (ProofResponse);\n}\n\nservice Neo4JGraphService {\n    rpc StoreKnowledge(KnowledgeRequest) returns (StoreResponse);\n    rpc QueryGraph(QueryRequest) returns (QueryResponse);\n}\n```\n\n### **Neo4j Integration** (Infrastructure Ready)\n- **Node Types**: Abstract knowledge nodes, logic nodes, domain groups\n- **Graph Operations**: Build, read, alter domain and subdomain graphs\n- **Persistence**: Scalable knowledge base storage\n\n## **Testing**\n\n```bash\n# Run Java tests\nmvn test\n\n# Run specific test classes\nmvn test -Dtest=ArgumentTest\nmvn test -Dtest=PropositionTest\n```\n\n## **Contributing**\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### **Development Areas**\n- **ML Pipeline Completion**: Python learning algorithms\n- **Neo4j Integration**: Database operations\n- **Performance Optimization**: Large-scale reasoning\n- **Documentation**: Examples and tutorials\n\n## **License**\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## **Acknowledgments**\n\n- **Microsoft ONNX Runtime** for neural network integration\n- **Neo4j** for graph database technology\n- **gRPC** for modern API design\n- **Academic Community** for foundational logic research\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrcalgo%2Fknowlej-graph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjrcalgo%2Fknowlej-graph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjrcalgo%2Fknowlej-graph/lists"}