cubical-transport-hott-lean4/CubicalTransport
Maximus Gorog 50bb6660d6
Some checks are pending
Lean Action CI / build (push) Waiting to run
REL1: typing rules + transp/comp derived theorems for .ind + Rust subst
Typing.lean: minimal-viable typing rules for the three new CTerm
constructors (REL1 first cut; REL2 will refine to dependent
formulations).
  - HasType.ctor      : .ctor S c params args : .ind S params
                        (no per-arg premises; runtime enforces)
  - HasType.indElim   : non-dependent form — motive : .pi (.ind …) C,
                        result : C; branch coherence checked at eval
  - HasType.dimExpr   : placeholder typing at .univ (real interval-
                        typing requires a CType.interval primitive,
                        deferred to REL2)
HasType.weaken_core extended with the three new arms.

TransportLaws.lean: derived theorems for transport over .ind (T1,
T2, stuck), all reducing to existing axioms (eval_transp_top,
eval_transp_const, eval_transp_nonpath + vTransp_stuck).  Pointwise
distribution through ctor args is REL1.1 future work.

CompLaws.lean: derived theorems for composition over .ind (C1, C2,
const-line, stuck) — corollaries of the existing eval_comp_*
axioms.  Same REL1.1 deferral for pointwise distribution.

native/cubical/src/subst.rs: critical Rust fix.  The previous
fallback `_ => mk_term_var(ctor_field(t, 0))` corrupted the new
TERM_DIMEXPR / TERM_CTOR / TERM_INDELIM tags by extracting field 0
(a CTypeSchema for ctor) and wrapping it as a malformed .var,
causing infinite recursion / OOM in subst-driven paths
(eval_comp_top calls substDim).  Proper arms for all three new
tags + cterm_subst_dim_list and cterm_subst_dim_branches helpers.
Unknown-tag fallback now safely returns the input unchanged
instead of synthesising a malformed .var.

FFITest.lean: three new smoke arms exercising T1/T2 transport and
C1 composition over .ind natC.  Result: 28/28 smoke + 46/46
properties = 74/74.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 18:05:32 -06:00
..
CompLaws.lean REL1: typing rules + transp/comp derived theorems for .ind + Rust subst 2026-04-30 18:05:32 -06:00
DimLine.lean REL1 foundation: schema-based inductive + HIT CTypes (Lean side) 2026-04-30 15:09:39 -06:00
Equiv.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
Eval.lean REL1 foundation: schema-based inductive + HIT CTypes (Lean side) 2026-04-30 15:09:39 -06:00
EvalTest.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
Face.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
FFI.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
FFITest.lean REL1: typing rules + transp/comp derived theorems for .ind + Rust subst 2026-04-30 18:05:32 -06:00
Glue.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
Inductive.lean REL1 Inductive.lean + Rust dispatch + 9 new smoke tests (25/25 + 46/46) 2026-04-30 15:15:50 -06:00
Interval.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
Line.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
PropertyTest.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
Readback.lean REL1 foundation: schema-based inductive + HIT CTypes (Lean side) 2026-04-30 15:09:39 -06:00
Soundness.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
Subst.lean REL1 foundation: schema-based inductive + HIT CTypes (Lean side) 2026-04-30 15:09:39 -06:00
Syntax.lean REL1 foundation: schema-based inductive + HIT CTypes (Lean side) 2026-04-30 15:09:39 -06:00
System.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
Transport.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00
TransportLaws.lean REL1: typing rules + transp/comp derived theorems for .ind + Rust subst 2026-04-30 18:05:32 -06:00
Typing.lean REL1: typing rules + transp/comp derived theorems for .ind + Rust subst 2026-04-30 18:05:32 -06:00
Value.lean REL1 foundation: schema-based inductive + HIT CTypes (Lean side) 2026-04-30 15:09:39 -06:00
ValueTyping.lean Split: engine = cubical-transport HoTT only 2026-04-27 21:35:01 -06:00