Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
ae6bcfb
test: pin units time and interval semantics first
isomorphisms Aug 29, 2026
57de210
feat: add exact units signed time and interval core
isomorphisms Aug 29, 2026
5421a8a
test: compile units time and intervals with real compiler
isomorphisms Aug 29, 2026
1583eae
test: record units time intervals compiler receipt output
isomorphisms Aug 29, 2026
f2f543f
test: include units time intervals in Edric smoke suite
isomorphisms Aug 29, 2026
cf97e69
ci: run focused Edric type-system smoke test
isomorphisms Aug 29, 2026
a3ffc1c
test: make edric007 runner executable
isomorphisms Aug 29, 2026
5b5c54d
Spell out compiler-internal TTImp vocabulary
isomorphisms Sep 2, 2026
8ed2d93
Spell out administrative-normal-form vocabulary (#66)
isomorphisms Sep 2, 2026
7b7df76
Merge current Idriç into units-time-intervals slice
isomorphisms Sep 4, 2026
f768560
Register one-step codegen name
isomorphisms Sep 4, 2026
7ec3222
Restore one-step codegen dispatch
isomorphisms Sep 4, 2026
6951dfd
Restore checked one-step codegen
isomorphisms Sep 4, 2026
19b67dc
Restore one-step handoff wrapper
isomorphisms Sep 4, 2026
83bfa3f
Add one-step handoff fixture
isomorphisms Sep 4, 2026
cea12b6
Test one-step handoff determinism
isomorphisms Sep 4, 2026
0062d82
Expose one-step handoff in current driver
isomorphisms Sep 4, 2026
8bb5da0
Preserve hash-command behavior
isomorphisms Sep 4, 2026
4abdba5
Match one-step body hash contract
isomorphisms Sep 4, 2026
84273df
Preserve proven one-step wrapper behavior
isomorphisms Sep 4, 2026
5a29d0d
Exercise public one-step handoff surface
isomorphisms Sep 4, 2026
3b91550
Merge pull request #68 from isomorphisms/compat/restore-one-step-handoff
isomorphisms Sep 5, 2026
ac8f8b4
Restore upstream BSD-3-Clause license
isomorphisms Sep 5, 2026
0ee8525
Export Compiler.IdricOneStep through installed API
isomorphisms Sep 5, 2026
be76b3d
Merge pull request #70 from isomorphisms/compat/export-idric-one-step…
isomorphisms Sep 5, 2026
d49d29b
Restore top-level edric compatibility entrypoint
isomorphisms Sep 6, 2026
8bdc1d0
Test executable root edric compatibility
isomorphisms Sep 6, 2026
d2463ec
Merge pull request #71 from isomorphisms/fix/catfood-root-edric-wrapper
isomorphisms Sep 6, 2026
cf8d159
Document provisional Idriç source rules
isomorphisms Sep 8, 2026
7d7104c
Add Idriç agent style guardrails
isomorphisms Sep 8, 2026
3edff41
Add Idriç style drift checker
isomorphisms Sep 8, 2026
da8da2e
Run Idriç style check on every change
isomorphisms Sep 8, 2026
1a062ff
Point repository agents to Idriç style rules
isomorphisms Sep 8, 2026
3de44a8
Document Idriç source and bootstrap style
isomorphisms Sep 8, 2026
0ca1c13
Make Number and Text native Idriç vocabulary
isomorphisms Sep 8, 2026
2729fb5
Use shared ai-ci Idriç style gate
isomorphisms Sep 8, 2026
1d07eed
Remove duplicate local Idriç style checker
isomorphisms Sep 8, 2026
78b36dc
Expand canonical Idriç style guide
isomorphisms Sep 8, 2026
183c5b4
Point agents at canonical Idriç references
isomorphisms Sep 8, 2026
31cd5e1
Add canonical railway intent example
isomorphisms Sep 8, 2026
bc3bd35
Add canonical HTTP server intent example
isomorphisms Sep 8, 2026
f28d7e2
Make Data.Text native Idriç vocabulary
isomorphisms Sep 8, 2026
06b0769
Use native Idriç notation in maintained examples
isomorphisms Sep 8, 2026
8ab9a0f
Define Number and ±Number semantics
isomorphisms Sep 8, 2026
789b635
Add basis-independent quadratic and Hermitian form semantics
isomorphisms Sep 8, 2026
da943ce
Add compiler-checked form semantics acceptance tests
isomorphisms Sep 8, 2026
901b4cb
Run quadratic and Hermitian form acceptance tests
isomorphisms Sep 8, 2026
50ea445
Record quadratic and Hermitian form acceptance receipt
isomorphisms Sep 8, 2026
7b177f0
Document quadratic and Hermitian form architecture
isomorphisms Sep 8, 2026
61b85d8
Allow inferred space binders in form GADTs
isomorphisms Sep 8, 2026
9347ccd
Update higher-math architecture for form semantics
isomorphisms Sep 8, 2026
7062876
Strengthen form distinction and refinement acceptance
isomorphisms Sep 8, 2026
dd16f10
Integrate current Idriç source surface into form work
isomorphisms Sep 8, 2026
669e0ca
Restyle quadratic forms on current Idriç surface
isomorphisms Sep 8, 2026
49c95b2
Move form acceptance to canonical Idriç vocabulary
isomorphisms Sep 8, 2026
4b8b2a3
Align form documentation with current Idriç surface
isomorphisms Sep 8, 2026
14f9cec
Align quadratic-form architecture note with Idriç style
isomorphisms Sep 8, 2026
3806535
Add complex and projective structural semantics
isomorphisms Sep 9, 2026
559fc1c
Make complex dimension acceptance diagnostic-independent
isomorphisms Sep 9, 2026
a84e491
Repair quadratic-form acceptance blockers
isomorphisms Sep 9, 2026
be670c1
Merge quadratic-form acceptance repair
isomorphisms Sep 9, 2026
e5eaab5
Expose form semantics to proof consumers
isomorphisms Sep 9, 2026
87c9d69
Merge proof-visible form semantics
isomorphisms Sep 9, 2026
6c0c0f4
Merge pull request #69 from isomorphisms/licensing/restore-upstream-bsd3
isomorphisms Sep 9, 2026
84ca862
Merge pull request #76 from isomorphisms/syntax/idric-style-canaries
isomorphisms Sep 9, 2026
a5c639e
Fix nounset-safe test prefix guard
isomorphisms Sep 10, 2026
7e27052
Add compact compiler evidence guardrails (#83)
isomorphisms Sep 10, 2026
a63d6a6
Make test support paths nounset-safe
isomorphisms Sep 10, 2026
23c3be7
Remove Cardinality split
isomorphisms Sep 11, 2026
6169dfb
Merge current Idriç into Number/Text surface
isomorphisms Sep 11, 2026
078423f
Reuse inherited number token mapping
isomorphisms Sep 11, 2026
f228187
Keep parser behavior unchanged
isomorphisms Sep 11, 2026
60d4a5b
Separate Idriç token surface from Idris lowering
isomorphisms Sep 11, 2026
ea0adc6
Keep inherited Vect koans at compatibility boundary
isomorphisms Sep 11, 2026
681aad6
Record resource interface deep-dive model
isomorphisms Sep 12, 2026
8f86736
Bind complex/projective parameters explicitly
isomorphisms Sep 12, 2026
221c48a
Run maintained CI on self-hosted Debian
isomorphisms Sep 12, 2026
99b700a
Run maintained CI on GitHub-hosted Ubuntu
isomorphisms Sep 14, 2026
bd9fbe1
Merge pull request #77 from isomorphisms/style/idric-number-text-surface
isomorphisms Sep 14, 2026
b159d37
Reconcile quadratic forms with current Idriç surface
isomorphisms Sep 14, 2026
a99440a
Remove stale Cardinality wording from form semantics
isomorphisms Sep 14, 2026
941efa0
Restore standalone presheaf integer labels
isomorphisms Sep 14, 2026
4d13f5b
Repair higher-math acceptance labels
isomorphisms Sep 15, 2026
3a2d984
Merge pull request #80 from isomorphisms/math/quadratic-hermitian-forms
isomorphisms Sep 15, 2026
7989bd3
Merge pull request #81 from isomorphisms/math/complex-projective-sema…
isomorphisms Sep 15, 2026
afeac21
Use ±Number in presheaf fixture
isomorphisms Sep 16, 2026
0994f32
Merge pull request #86 from isomorphisms/fix/presheaf-signed-number-s…
isomorphisms Sep 16, 2026
a8d2f0e
Make repository commands cwd-independent
isomorphisms Sep 16, 2026
49ac0ba
Generalize presheaf section payloads
isomorphisms Sep 16, 2026
6e48b66
Fix explicit presheaf payload binders
isomorphisms Sep 16, 2026
d9cf973
Add pair arithmetic construction example
isomorphisms Sep 16, 2026
9fb1a2c
Merge pull request #89 from isomorphisms/examples/presheaf-pair-sections
isomorphisms Sep 16, 2026
71ad081
Make signed pair arithmetic definitional
isomorphisms Sep 16, 2026
67b3d29
Connect exact complex fixture to pair arithmetic
isomorphisms Sep 16, 2026
9bd50bb
Merge pull request #90 from isomorphisms/examples/pair-arithmetic
isomorphisms Sep 16, 2026
3a97227
Merge pull request #91 from isomorphisms/examples/exact-complex-pair-…
isomorphisms Sep 17, 2026
60972d1
Add Edriç memory-tiering lowering note
isomorphisms Sep 17, 2026
920a417
Merge pull request #93 from isomorphisms/edric-memory-tiering-lowerin…
isomorphisms Sep 17, 2026
06d1a8b
Merge 7b7df7638aa7e464a11388da1add72d06d6a977a into 920a417ccf485d59b…
isomorphisms Sep 17, 2026
5b96e05
Fix Idriç style check base selection
isomorphisms Sep 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .github/workflows/ci-edric-types.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Edric type-system smoke

on:
pull_request:
paths:
- '_/examples/units-time-intervals/**'
- '_/tests/idris2/basic/edric007/**'
- '_/edric'
- '.github/workflows/ci-edric-types.yml'
push:
paths:
- '_/examples/units-time-intervals/**'
- '_/tests/idris2/basic/edric007/**'
- '_/edric'
- '.github/workflows/ci-edric-types.yml'

jobs:
units-time-intervals:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Bootstrap Edric and run focused smoke suite
run: ./_/edric all
7 changes: 7 additions & 0 deletions .github/workflows/ci-source-layout.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,10 @@ jobs:
test -d TTImp
test -L _/src
test "$(readlink _/src)" = ".."
- name: Verify top-level edric compatibility entrypoint
shell: sh
run: |
test -x edric
dash -n edric
sh -n edric
./edric --help | grep -F 'usage: ./_/edric'
20 changes: 20 additions & 0 deletions .github/workflows/ci_idric_style.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Idriç source-style drift check

on:
push:
pull_request:

permissions:
contents: read

jobs:
style:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
fetch-depth: 0
- name: Check newly added Idriç source
uses: isomorphisms/ai-ci/idric-style@d76e865c3742c51308ddf211ee6f5b724f4104de
with:
base: ${{ github.event_name == 'pull_request' && 'HEAD^1' || github.event.before }}
37 changes: 37 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Idriç agent instructions

Before writing or reviewing Idriç-facing source, read:

1. [`STYLE.md`](STYLE.md)
2. [`examples/intent/railway/`](examples/intent/railway/README.md)
3. [`examples/intent/http_server/`](examples/intent/http_server/README.md)
4. [`_/AGENTS.md`](_/AGENTS.md) for repository and branch rules

Apply the shared evidence and acceptance guardrails in
`isomorphisms/ai-ci/AGENTS.md`.

`STYLE.md` is the canonical source-style guide. The two intent examples are the
canonical structural references. This file is operational guidance; do not copy
the full style guide into `AGENTS.md`.

The repository contains a large inherited Idris codebase. Its existence is not
permission to reproduce Idris/Haskell style in new Idriç work.

Inspect the relevant surrounding Idriç work before inventing a new pattern, but
do not promote arbitrary existing files into style authorities. Human
corrections and the canonical guide/examples take precedence.

Do not restore a rejected language ontology under its old name or a near-synonym
because it survives in inherited code, generated output, an old branch, or an
upstream convention. Preserve the current semantic distinction first.

For compiler/backend claims, bind evidence to the exact source head and material
compiler/backend pins. Source presence, generated output, compilation, and an
oracle or fallback do not prove execution through the named backend.

Keep language and mathematical semantics above compiler, ABI, storage, and
machine representations. A convenient representation may implement an object;
it does not define the object unless the language semantics explicitly say so.

Work on a branch, keep changes narrow, and run the checks relevant to the code
you changed before proposing it for merge.
54 changes: 54 additions & 0 deletions ANF_READABLE_NAMES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Readable administrative-normal-form names

The `A` at the beginning of these compiler constructors marked the administrative-normal-form layer. This branch spells out that layer instead of requiring the reader to remember the initial.

The module path remains `Compiler.ANF`, which is the conventional short name for the compiler pass. The datatype and the terms being read inside the module use complete names.

## Main expression vocabulary

| Old name | Readable name |
|---|---|
| `ANF` | `Administrative_Normal_Form` |
| `AVar` | `Administrative_Normal_Form_Variable` |
| `ALocal` | `Administrative_Normal_Form_Local_Variable` |
| `ANull` | `Administrative_Normal_Form_Erased_Variable` |
| `AV` | `Administrative_Normal_Form_Variable_Expression` |
| `AAppName` | `Administrative_Normal_Form_Named_Function_Application` |
| `AUnderApp` | `Administrative_Normal_Form_Partial_Application` |
| `AApp` | `Administrative_Normal_Form_Closure_Application` |
| `ALet` | `Administrative_Normal_Form_Binding` |
| `ACon` | `Administrative_Normal_Form_Constructor_Value` |
| `AOp` | `Administrative_Normal_Form_Primitive_Operation` |
| `AExtPrim` | `Administrative_Normal_Form_External_Primitive` |
| `AConCase` | `Administrative_Normal_Form_Constructor_Case` |
| `AConstCase` | `Administrative_Normal_Form_Constant_Case` |
| `APrimVal` | `Administrative_Normal_Form_Primitive_Value` |
| `AErased` | `Administrative_Normal_Form_Erased_Value` |
| `ACrash` | `Administrative_Normal_Form_Crash` |

## Case alternatives and definitions

| Old name | Readable name |
|---|---|
| `AConAlt` | `Administrative_Normal_Form_Constructor_Alternative` |
| `MkAConAlt` | `Make_Administrative_Normal_Form_Constructor_Alternative` |
| `AConstAlt` | `Administrative_Normal_Form_Constant_Alternative` |
| `MkAConstAlt` | `Make_Administrative_Normal_Form_Constant_Alternative` |
| `ANFDef` | `Administrative_Normal_Form_Definition` |
| `MkAFun` | `Make_Administrative_Normal_Form_Function` |
| `MkACon` | `Make_Administrative_Normal_Form_Constructor` |
| `MkAForeign` | `Make_Administrative_Normal_Form_Foreign_Function` |
| `MkAError` | `Make_Administrative_Normal_Form_Error` |

## Nearby helper names

| Old name | Readable name |
|---|---|
| `AVars` | `Administrative_Normal_Form_Variable_Environment` |
| `toANF` | `to_administrative_normal_form` |
| `anf` | `convert_expression_to_administrative_normal_form` |
| `anfArgs` | `convert_arguments_to_administrative_normal_form` |
| `anfConAlt` | `convert_constructor_alternative_to_administrative_normal_form` |
| `anfConstAlt` | `convert_constant_alternative_to_administrative_normal_form` |

The earlier TTImp names also use `Elaborable_` now, replacing the awkward `Elaboratable_` spelling.
61 changes: 61 additions & 0 deletions COMPLEX-PROJECTIVE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Complex and projective semantic boundary

This slice establishes the type-level distinction needed by complex and projective arithmetic without choosing a machine representation or silently settling the separate floating-precision work.

## What the checker now distinguishes

`ComplexCoordinates complex n` is the structural type of an element of a complex coordinate space with exactly `n` coordinates. `ComplexProjectivePoint complex n` is a projective point with a nonzero homogeneous representative containing exactly `n + 1` complex coordinates.

The `complex` parameter is deliberate. The current canonical tree does not yet have a settled general real-scalar hierarchy whose precision semantics can honestly define the numerical carrier for the mathematical field C. This module therefore does **not** define C as two `Double`s, two `Float32`s, a GLSL `vec2`, or an x86 register pair merely to obtain executable code.

The concrete executable Float32 implementation currently belongs to the x86-64 leading backend and is checked against the shared corpus at `_/fixtures/complex-projective/float32.json`. The exact `ExactComplex` type in `QuadraticForms.idric` remains a Gaussian-integral test scalar used only to make structural identities reduce exactly in compiler acceptance.

## Projective semantics

For projective dimension `n`, a representative has `n + 1` homogeneous coordinates. The all-zero tuple is excluded by `NonzeroHomogeneousCoordinates`.

The runtime representation may carry a homogeneous tuple directly. The semantic point is the equivalence class under common nonzero complex rescaling:

```text
[z0:...:zn] = [lambda z0:...:lambda zn], lambda != 0.
```

`projective_rescaling_witness` expresses one explicit witness for that quotient relation. Raw component equality is not projective equality. There is intentionally no ordinary `Eq` instance, vector addition, or multiplication for `ComplexProjectivePoint`.

Normalization is not part of construction. A backend may choose a gauge for numerical stability, chart extraction, comparison, serialization, or rendering, but common scale is otherwise retained as redundant homogeneous information.

## Affine chart

`affine_to_projective` implements

```text
(z1,...,zn) -> [1:z1:...:zn].
```

`projective_first_chart` divides by the first homogeneous coordinate only when that coordinate is nonzero. For CP^1, `[0:1]` therefore remains the point at infinity and is outside this chart.

## Holomorphic boundary

Projective structure does not make observational operations holomorphic. Conjugation, magnitude, phase, gauge choice, and coloring may be used for observation or rendering. They must not be inserted into an evolving value that is meant to remain holomorphic.

The shared render fixture uses the current whole-plane explorer model

```text
f(z) = R(z) exp(q(z))
```

where `R` carries an explicit zero/pole divisor and `q` is an entire polynomial. The fixture contains no lasso, overlapping-disc, path, Riemann-surface, or lacunary machinery.

## Precision and tolerances

The shared numerical corpus declares Float32 explicitly. Its machine implementations must preserve that declared width. A wider host calculation may be used only as an external oracle.

Exact-binary32 cases use exact comparison. Ordinary floating cases use an error bound derived from binary32 epsilon and the conditioning/operation count of the case. The current bounded complex-exponential implementation is a degree-7 Taylor polynomial and is accepted only for input magnitude at most `0.5`; its analytic truncation bound is

```text
exp(|q|) |q|^8 / 8!
```

plus a separately recorded binary32 rounding allowance. Inputs outside the declared approximation domain must be rejected rather than silently accepted with a larger arbitrary tolerance.

Projective comparison uses rescaling witnesses or invariant cross-products such as `zi*wj - zj*wi`, never raw homogeneous component equality.
Loading
Loading