packages feed

rzk-0.8.0: test/typecheck/cases/happy-shott-simplicial-subcomplexes.rzk

#lang rzk-1

-- Adapted from sHoTT `src/simplicial-hott/02-simplicial-type-theory.rzk.md` (simplices,
-- boundaries, inner horns, `shape-prod`). Uses ASCII `<=` for the directed interval.
-- Exercises `TOPE`, products, `∧` / `∨`, and dependent shape composition.

#define Δ¹
  : 2 → TOPE
  := \ t → TOP

#define Δ²
  : ( 2 × 2) → TOPE
  := \ (t , s) → s <= t

#define Δ³
  : ( 2 × 2 × 2) → TOPE
  := \ ((t1 , t2) , t3) → t3 <= t2 /\ t2 <= t1

#define ∂Δ¹
  : Δ¹ → TOPE
  := \ t → (t === 0_2 \/ t === 1_2)

#define ∂Δ²
  : Δ² → TOPE
  :=
    \ (t , s) → (s === 0_2 \/ t === 1_2 \/ s === t)

#define Λ
  : ( 2 × 2) → TOPE
  := \ (t , s) → (s === 0_2 \/ t === 1_2)

#define Λ²₁
  : Δ² → TOPE
  := \ (s , t) → Λ (s , t)

#define Λ³₁
  : Δ³ → TOPE
  := \ ((t1 , t2) , t3) → t3 === 0_2 \/ t2 === t1 \/ t1 === 1_2

#define Λ³₂
  : Δ³ → TOPE
  := \ ((t1 , t2) , t3) → t3 === 0_2 \/ t3 === t2 \/ t1 === 1_2

#define shape-prod
  ( I J : CUBE)
  ( ψ : I → TOPE)
  ( χ : J → TOPE)
  : ( I × J) → TOPE
  := \ (t , s) → ψ t /\ χ s

#define Δ¹×Δ¹
  : ( 2 × 2) → TOPE
  := shape-prod 2 2 Δ¹ Δ¹

#define ∂□
  : ( 2 × 2) → TOPE
  := \ (t , s) → ((∂Δ¹ t) /\ (Δ¹ s)) \/ ((Δ¹ t) /\ (∂Δ¹ s))

#define ∂Δ¹×Δ¹
  : ( 2 × 2) → TOPE
  := shape-prod 2 2 ∂Δ¹ Δ¹

#define Δ¹×∂Δ¹
  : ( 2 × 2) → TOPE
  := shape-prod 2 2 Δ¹ ∂Δ¹

#define Δ²×Δ¹
  : ( 2 × 2 × 2) → TOPE
  := shape-prod (2 * 2) 2 Δ² Δ¹

#define Δ³×Δ²
  : ( ( 2 × 2 × 2) × (2 × 2)) → TOPE
  := shape-prod (2 * 2 * 2) (2 * 2) Δ³ Δ²