lemma-engine 0.9.5

A pure, declarative language for business rules.
Documentation
**Natural language → Lemma**

Request: *"Library charges €0.25/day for regular books, €0.50 for reference, €1 for new releases. First offense gets 50% off. Grace period 3 day except new releases. Block checkout if fee exceeds €10."*

Map logic:
- Book types → `data book_type` with `-> option` constraints
- Due and return dates → `data` input slots; overdue days derived by a rule
- First offense → `data` input slot
- Per-day rates → `rule daily_fee` with unless branches
- Grace period → `rule is_in_grace_period`
- Fee pipeline → `rule total_fee`, `rule final_fee`
- Checkout block → `rule can_checkout: yes` with `unless final_fee > 10 eur then no` (boolean, not veto)

**Example C: library fees (full spec)**

```lemma
spec library_fees
uses lemma units

data money: measure
  -> decimals 2
  -> unit eur 1.00
  -> minimum 0 eur

data book_kind: text
  -> option "regular"
  -> option "reference"
  -> option "new_release"

data book_type:        book_kind
data is_first_offense: boolean
data due_date:         date
data return_date:      date

rule days_overdue: (due_date...return_date) as day as number

rule daily_fee: 0 eur
  unless book_type is "regular"     then 0.25 eur
  unless book_type is "reference"   then 0.5 eur
  unless book_type is "new_release" then 1 eur

rule is_in_grace_period: days_overdue <= 3
  unless book_type is "new_release" then no

rule total_fee: days_overdue * daily_fee

rule final_fee: total_fee
  unless is_first_offense   then total_fee * 50%
  unless is_in_grace_period then 0 eur

rule can_checkout: yes
  unless final_fee > 10 eur then no
```