Renderingla

intervallum

Clamp, materialize, and contain via conversio and continet.

Syntax:

Category

range

Related

Examples

examples/corpus/intervallum/algebra.fab (canonical · type)

Interval algebra: intersection, union, and span count.

# intervallum — range algebra (inter, union, longitudo)
#
# `inter` / `union` return `intervallum<numerus> ∪ nihil` (nihil when disjoint
# or non-adjacent). `longitudo` returns discrete bound-count for numerus v1.
#
# EXPECTED OUTPUT:
#   none — stdout not pinned for this exemplum.

incipit {
    fixum intervallum<numerus> morning ← 0‥6
    fixum intervallum<numerus> afternoon ← 4‥10
    fixum intervallum<numerus> overlap ← morning.inter(afternoon) vel 0‥0
    fixum intervallum<numerus> early ← 0‥5
    fixum intervallum<numerus> late ← 5‥10
    fixum intervallum<numerus> workday ← early.union(late) vel 0‥0
    fixum _ overlap_span ← overlap.longitudo()
    fixum _ workday_span ← workday.longitudo()
    adfirma overlap_span ≡ 2
    adfirma workday_span ≡ 10

    fixum intervallum<numerus> gap_left ← 0‥3
    fixum intervallum<numerus> gap_right ← 6‥9
    fixum _ no_union ← gap_left.union(gap_right)
    adfirma no_union est nihil
}

examples/corpus/intervallum/conversio.fab (canonical · type)

Clamp, materialize, and contain via conversio and continet.

# intervallum — conversio clamp, materialize, and continet
#
# Value clamp result type is bound `numerus` (refinement-target special case).
# Range materialize honors declared inclusivity on `‥` / `…`.
#
# EXPECTED OUTPUT:
#   none — stdout not pinned for this exemplum.

incipit {
    # --- value clamp (half-open interior vs inclusive endpoint) ---
    fixum _ half ← 15 ↦ 0‥10
    fixum _ closed ← 15 ↦ 0…10
    adfirma half ≡ 9
    adfirma closed ≡ 10

    # --- materialize to lista or 1-d tensor ---
    fixum lista<numerus> half_list ← 0‥10 ↦ lista<numerus>
    fixum lista<numerus> closed_list ← 0…3 ↦ lista<numerus>
    fixum tensor<numerus, [10]> half_grid ← 0‥10 ↦ tensor<numerus, [10]>
    fixum tensor<numerus, [4]> closed_grid ← 0…3 ↦ tensor<numerus, [4]>
    fixum lista<numerus> half_flat ← half_grid.planata()
    fixum lista<numerus> closed_flat ← closed_grid.planata()
    adfirma half_list.longitudo() ≡ 10
    adfirma closed_list.longitudo() ≡ 4
    adfirma half_flat.longitudo() ≡ 10
    adfirma closed_flat.longitudo() ≡ 4

    # --- range-to-range clamp inherits target inclusivity ---
    fixum intervallum<numerus> wide ← 0‥100
    fixum intervallum<numerus> narrow ← wide ↦ 10…50
    adfirma narrow.longitudo() ≡ 41

    # --- stored containment via continet (intra desugars to the same surface) ---
    fixum intervallum<numerus> fines ← 0‥10
    fixum _ inside ← fines.continet(5)
    adfirma inside
}