1- [ ![ Sponsor] ( https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?logo=github )] ( https://github.com/sponsors/hyperpolymath )
2-
3- <!-- SPDX-License-Identifier: MPL-2.0 -->
1+ <!--
2+ SPDX-License-Identifier: MPL-2.0
3+ Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
4+ -->
45<!-- (MPL-2.0 is the automatic legal fallback until PMPL is formally recognised.) -->
56
67# EchoTypes.jl
8+ [ ![ OpenSSF Best Practices] ( https://img.shields.io/badge/OpenSSF-Best_Practices-green?logo=openssourcesecurity )] ( https://www.bestpractices.dev/en/projects/new?repo_url=https://github.com/hyperpolymath/EchoTypes.jl )
9+
710
811An ** executable companion** to the Agda library
912[ ` hyperpolymath/echo-types ` ] ( https://github.com/hyperpolymath/echo-types ) .
@@ -31,6 +34,33 @@ concrete finite data and check their stated laws numerically.
3134 (` EchoR ` , with its strict non-recoverability witness), and the
3235 ** finite-domain** Landauer/Bennett * bound shapes* .
3336
37+ ## Semantic fibre in finite domains
38+
39+ The Agda repository is the formal source of truth. This package is the
40+ executable finite-domain shadow: it lets you compute concrete
41+ preimage fibres and inspect what they would license in examples.
42+
43+ In this companion, a ** semantic fibre** is usually the vector returned
44+ by ` fiber(f, domain, y) ` : the finite set of witnesses ` x ` in ` domain `
45+ such that ` f(x) == y ` . A value is being used ** avec fibre** when that
46+ declared map/domain/output triple accompanies it. A value is ** sans
47+ fibre** when it is only known as a target-side value; no source-side
48+ origin constraint follows from the value alone.
49+
50+ ``` julia
51+ using EchoTypes
52+
53+ collapse = isodd
54+ avec = fiber (collapse, - 2 : 2 , true ) # declared map + domain
55+ Set (w. x for w in avec) == Set ([- 1 , 1 ]) # possible origins
56+
57+ target_only = true # just a Bool: sans fibre
58+ ```
59+
60+ Finite examples can demonstrate nontrivial constraints on possible
61+ origins and can falsify over-specific claims by counterexample. They
62+ do not establish proof obligations; those belong upstream in Agda.
63+
3464## Source of truth
3565
3666The Agda. This release mirrors ` hyperpolymath/echo-types ` at
@@ -144,9 +174,10 @@ julia> fiber_erasure_bound(_ -> 0, 0:15, 0, 7) # full-collapse Landauer bound
144174julia --project=. -e 'using Pkg; Pkg.test()'
145175```
146176
147- Every testset is the finite shadow of a named Agda lemma; the suite
148- must stay green and is the only correctness claim this package makes
149- about itself.
177+ The testsets are finite shadows of named Agda lemmas, plus the small
178+ semantic-fibre vocabulary exercise over the kernel. The suite must stay
179+ green and is the only correctness claim this package makes about
180+ itself.
150181
151182## Status
152183
@@ -158,8 +189,9 @@ audience-facing spine that landed upstream on 2026-05-27/28
158189(` EchoProvenance ` , ` EchoSecurity ` , ` EchoProbabilisticSupport ` ,
159190` EchoDifferential ` ) plus the cementing-negative ` EchoLLEncoding `
160191(LL shallow-encoding gap with paired source-side no-section).
161- Test suite: ** 253 passing assertions across 18 testsets** , each
162- the finite shadow of a named Agda lemma. Registered as
192+ Test suite: ** 258 passing assertions across 19 testsets** , organised as
193+ finite shadows of named Agda lemmas plus the semantic-fibre
194+ vocabulary exercise over the kernel. Registered as
163195` EchoTypes ` in the hyperpolymath professional registry; ** not**
164196registered in the Julia General registry and intentionally ** not**
165197part of the AcceleratorGate→KnotTheory→Skein→KRLAdapter chain — it
0 commit comments