Refinement

Common, executable refinement predicates. Import qualified (for example, ``Refinement.non_negative n``) or ``open Refinement`` deliberately.
Table of Contents

Functions

non_negative

def non_negative (n : Int) : Bool

positive

def positive (n : Int) : Bool

non_positive

def non_positive (n : Int) : Bool

negative

def negative (n : Int) : Bool

in_range

def in_range (lo : Int) (hi : Int) (n : Int) : Bool

bounded

def bounded (lo : Int) (hi : Int) (n : Int) : Bool

non_empty_size

Solver-friendly names for the most common collection refinements.
def non_empty_size (size : Int) : Bool

valid_index

def valid_index (size : Int) (index : Int) : Bool

non_negative_float

Float counterparts use explicit names rather than ad-hoc overloads, keeping predicate lookup predictable across the single Aeon value namespace.
def non_negative_float (n : Float) : Bool

positive_float

def positive_float (n : Float) : Bool

unit_interval_float

def unit_interval_float (n : Float) : Bool