{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2605-14665","title":"Falkor-IRAC: Graph-Constrained Generation for Verified Legal Reasoning in Indian Judicial AI","arxiv_id":"2605.14665","date":"2026-05-14","proceeding":null,"authors":["Joy Bose"],"abstract":"Legal reasoning is not semantic similarity search. A court judgment encodes constrained symbolic reasoning: precedent propagation, procedural state transitions, and statute-bound inference. These are properties that vector-based retrieval-augmented generation (RAG) cannot faithfully represent. Hallucinated precedents, outdated statute citations, and unsupported reasoning chains remain persistent failure modes in LLM-based legal AI, with real consequences for access to justice in high-caseload jurisdictions such as India. This paper presents Falkor-IRAC, a graph-constrained generation framework for Indian legal AI that grounds generation in structured reasoning over an IRAC (Issue, Rule, Analysis, Conclusion) knowledge graph. Judgments from the Supreme Court and High Courts of India are ingested as IRAC node structures enriched with procedural state transitions, precedent relationships, and statutory references, stored in FalkorDB for low-latency agentic traversal. At inference time, LLM-generated answers are accepted only if a valid supporting path can be traced through the graph, a check performed by a falsifiability oracle called the Verifier Agent. The system also detects doctrinal conflicts as a first-class output rather than silently resolving them. Falkor-IRAC is evaluated using graph-native metrics: citation grounding accuracy, path validity rate, hallucinated precedent rate, and conflict detection rate. These metrics are argued to be more appropriate for legal reasoning evaluation than BLEU and ROUGE. On a proof-of-concept corpus of 51 Supreme Court judgments, the Verifier Agent correctly validated citations on completed queries and correctly rejected fabricated citations. Evaluation against vector-only RAG baselines is left for future work. The companion InIRAC dataset, 500+ structured Indian court judgments with IRAC annotations, is released alongside this paper.","url_abs":"https://arxiv.org/abs/2605.14665","url_pdf":"https://arxiv.org/pdf/2605.14665","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2605.14665","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.14665"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/joyboseroy/falkor-irac","reach":null}],"summary":{"ran":7,"unverified":5},"by_repo_kind":{"found_in_text":{"samples":12,"ran":7,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"d1fe4d356d401f00","entry":"detect_citation","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"ingestion/pdf_extractor.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/ingestion/pdf_extractor.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d1fe4d356d401f00"}},{"code_sha256_prefix":"e29770d432dc4f78","entry":"detect_court","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"ingestion/pdf_extractor.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/ingestion/pdf_extractor.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e29770d432dc4f78"}},{"code_sha256_prefix":"96dfc6d8c642a7ea","entry":"parse_llm_response","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"ingestion/irac_parser.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/ingestion/irac_parser.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"96dfc6d8c642a7ea"}},{"code_sha256_prefix":"9603579fd6185f42","entry":"repair_json","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"agents/llm.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/agents/llm.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9603579fd6185f42"}},{"code_sha256_prefix":"fdec49c6eae9eef7","entry":"truncate_for_context","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"ingestion/irac_parser.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/ingestion/irac_parser.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fdec49c6eae9eef7"}},{"code_sha256_prefix":"fbc62886ef9841c8","entry":"verify_connection","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"graph_schema/setup_schema.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/graph_schema/setup_schema.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fbc62886ef9841c8"}},{"code_sha256_prefix":"7fce5d31c561a72c","entry":"verify_load","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"ingestion/load_sample_graph.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/ingestion/load_sample_graph.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7fce5d31c561a72c"}},{"code_sha256_prefix":"c222c3061de78f7f","entry":"call_llm","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"ingestion/irac_parser.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/ingestion/irac_parser.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c222c3061de78f7f"}},{"code_sha256_prefix":"46783c92264f8631","entry":"call_llm","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"agents/orchestrator.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/agents/orchestrator.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"46783c92264f8631"}},{"code_sha256_prefix":"c53e9e86b1c4f039","entry":"call_llm_json","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"agents/llm.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/agents/llm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c53e9e86b1c4f039"}},{"code_sha256_prefix":"bc9c0638538453d5","entry":"call_ollama","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"agents/llm.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/agents/llm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bc9c0638538453d5"}},{"code_sha256_prefix":"1d137fb5f729b044","entry":"escape","repo":"joyboseroy/falkor-irac","repo_kind":"found_in_text","path":"ingestion/graph_loader.py","file_url":"https://github.com/joyboseroy/falkor-irac/blob/HEAD/ingestion/graph_loader.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1d137fb5f729b044"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_2026.jsonl"},"syntology_extracted_results":{"kind":"leaderboard_placements","source":"Syntology's leaderboard-shaped extractor over the paper's own arXiv-HTML tables: a model pointed at a cell, the number was read from that cell and checked against the board's metric, dataset, split and scale, and an independent check accepted the entry; not reviewed by the paper's authors or the archive's editors","extractor_model":"global.anthropic.claude-sonnet-4-5-20250929-v1:0","verifier_model":null,"prompt_sha":"fa63d4bb9d755694","coverage":{"sentence":"Syntology has checked 6,264 of the 9,581 papers on this site that are newer than the archive; results from the others appear after they are checked.","papers_newer_than_archive":9581,"papers_checked":6264},"entries":[],"not_placed":{"boards":0,"rejected_by_independent_check":0,"refused_by_a_rule":0,"check_did_not_answer":0,"proposed_without_a_cell":0,"declined_by_site":0}}}