Three Counterexamples and One-Sentence Corrections for IETF Internet-Draft draft-ietf-core-href-30, with a Lean Proof for the Path Rule

draft-ietf-core-href-30 defines Constrained Resource Identifiers (CRIs), a CBOR form of URIs, with a procedure that resolves a CRI reference against a base CRI (Section 5.3) and a procedure that converts a CRI reference to a URI reference (Section 6.1), which the draft calls the equivalent URI reference. For a base and a reference we compare two computations: the URI of the Section 5.3 result, and the RFC 3986 resolution of the converted reference against the base. We give three inputs on which the two differ, with every step written out. (A) Resolving ["t", null, ["p"]] (the CRI for t:/p) against s://h yields t://h/p by Section 5.3, whereas Section 2.1 assigns no authority to the equivalent URI reference and RFC 3986 gives a reference with a scheme its own authority; the same input, used as a reference to itself, also fails the draft's requirement that resolution yield the original CRI. (B) The reference [1], which removes the last path segment of the base, is converted to the empty URI reference, which denotes the base itself. (C) The reference [1, ["", "a"]] is converted to /a, an absolute path, whereas Section 5.3 gives /b//a for the base path /b/c. We propose one sentence of correction for each. On an enumeration of 720,120 base–reference pairs with an authority, the two computations differ on 93,810; after the corrections they differ on none of the 713,660 pairs that remain convertible (the corrections refuse 10,540 pairs and admit 4,080 that the draft's syntax check rejects). In Lean 4 (core library; axioms propext and Quot.sound only; no sorry) the counterexamples are checked by kernel evaluation, and the corrected conversion of a discard-form reference, resolved per RFC 3986, is proved equal to the Section 5.3 resolution for every base with an authority and paths of any length. We make no claim about bases without an authority. Code, Lean proofs and outputs: cri-verify-v1.zip (also at https://github.com/otoinobuo/cri-verify).

Authors

Publication Details

Journal
Zenodo (CERN European Organization for Nuclear Research)
Published
2026-10-29
DOI
https://doi.org/10.5281/zenodo.23760462
Primary Topic
Logic, programming, and type systems
Type
preprint
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
preprint

Three Counterexamples and One-Sentence Corrections for IETF Internet-Draft draft-ietf-core-href-30, with a Lean Proof for the Path Rule

Nobuo Otoi
Zenodo (CERN European Organization for Nuclear Research)
Logic, programming, and type systems
preprint

Three Counterexamples and One-Sentence Corrections for IETF Internet-Draft draft-ietf-core-href-30, with a Lean Proof for the Path Rule

Nobuo Otoi
preprint en

Abstract

draft-ietf-core-href-30 defines Constrained Resource Identifiers (CRIs), a CBOR form of URIs, with a procedure that resolves a CRI reference against a base CRI (Section 5.3) and a procedure that converts a CRI reference to a URI reference (Section 6.1), which the draft calls the equivalent URI reference. For a base and a reference we compare two computations: the URI of the Section 5.3 result, and the RFC 3986 resolution of the converted reference against the base. We give three inputs on which the two differ, with every step written out. (A) Resolving ["t", null, ["p"]] (the CRI for t:/p) against s://h yields t://h/p by Section 5.3, whereas Section 2.1 assigns no authority to the equivalent URI reference and RFC 3986 gives a reference with a scheme its own authority; the same input, used as a reference to itself, also fails the draft's requirement that resolution yield the original CRI. (B) The reference [1], which removes the last path segment of the base, is converted to the empty URI reference, which denotes the base itself. (C) The reference [1, ["", "a"]] is converted to /a, an absolute path, whereas Section 5.3 gives /b//a for the base path /b/c. We propose one sentence of correction for each. On an enumeration of 720,120 base–reference pairs with an authority, the two computations differ on 93,810; after the corrections they differ on none of the 713,660 pairs that remain convertible (the corrections refuse 10,540 pairs and admit 4,080 that the draft's syntax check rejects). In Lean 4 (core library; axioms propext and Quot.sound only; no sorry) the counterexamples are checked by kernel evaluation, and the corrected conversion of a discard-form reference, resolved per RFC 3986, is proved equal to the Section 5.3 resolution for every base with an authority and paths of any length. We make no claim about bases without an authority. Code, Lean proofs and outputs: cri-verify-v1.zip (also at https://github.com/otoinobuo/cri-verify).

Zenodo (CERN European Organization for Nuclear Research)
Logic, programming, and type systems
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.

Laika access coming soon