Keyboard shortcuts

Press ← or β†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Legal Verification

The legal module provides tax rule verification across multiple jurisdictions.

flowchart LR
    subgraph Jurisdictions["Supported Jurisdictions"]
        direction TB
        US["πŸ‡ΊπŸ‡Έ US<br/>Schedule C, 1040"]
        AU["πŸ‡¦πŸ‡Ί AU<br/>GST, BAS"]
        UK["πŸ‡¬πŸ‡§ UK<br/>VAT, CT"]
    end
    
    subgraph Rules["Tax Rules"]
        R1["Schedule C Expense"]
        R2["GST Credit"]
        R3["VAT Deductibility"]
    end
    
    subgraph Result["Disposition"]
        U["Unrecoverable"]
        R["Recoverable"]
        A["Advisory"]
    end
    
    Jurisdictions --> Rules --> Result

Jurisdiction

Supported tax jurisdictions:

  • US: United States (Schedule C, Form 1040)
  • AU: Australia (GST, BAS)
  • UK: United Kingdom (VAT, CT)

LegalSolver

#![allow(unused)]
fn main() {
pub struct LegalSolver {
    jurisdiction: Jurisdiction,
    rules: Vec<TaxRule>,
}
}

TaxRule

#![allow(unused)]
fn main() {
pub struct TaxRule {
    pub id: String,
    pub jurisdiction: Jurisdiction,
    pub description: String,
    pub validator: fn(&Transaction) -> bool,
}
}

Verification

The solver checks transactions against jurisdiction-specific tax rules:

  • US: Schedule C business expense categorization
  • AU: GST Act s38-190 compliance
  • UK: VAT deductibility rules

Usage

#![allow(unused)]
fn main() {
let solver = LegalSolver::us();
let result = solver.verify(&transaction);
match result.disposition {
    Disposition::Unrecoverable => { /* fatal tax issue */ }
    Disposition::Recoverable => { /* fixable */ }
    Disposition::Advisory => { /* suggestion */ }
}
}