From 5d6ed579ac7d908d34ae811cfcdb3cca89c7788b Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 21 Jul 2026 07:04:09 +0100 Subject: [PATCH 1/6] chore: remove estate fake-gate build/ recipes The build/ tree held template guix/just scaffolding whose proof-check recipes exit 0 when the prover is absent (the estate-wide fake-green gate flaw). Real, hard-failing test and proof-check recipes land directly in the Justfile and scripts/ in the following commits. Co-Authored-By: Claude Fable 5 --- build/.guix-channel | 22 --- build/contractile.just | 75 ---------- build/guix.scm | 71 --------- build/just/assess.just | 225 ----------------------------- build/just/container.just | 284 ------------------------------------ build/just/groove.just | 98 ------------- build/just/init.just | 214 --------------------------- build/just/proofs.just | 154 -------------------- build/just/validate.just | 130 ----------------- build/setup.sh | 294 -------------------------------------- 10 files changed, 1567 deletions(-) delete mode 100644 build/.guix-channel delete mode 100644 build/contractile.just delete mode 100644 build/guix.scm delete mode 100644 build/just/assess.just delete mode 100644 build/just/container.just delete mode 100644 build/just/groove.just delete mode 100644 build/just/init.just delete mode 100644 build/just/proofs.just delete mode 100644 build/just/validate.just delete mode 100755 build/setup.sh diff --git a/build/.guix-channel b/build/.guix-channel deleted file mode 100644 index 3a51e72..0000000 --- a/build/.guix-channel +++ /dev/null @@ -1,22 +0,0 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -;; -;; Guix channel definition for anytype -;; -;; To use this channel, add to ~/.config/guix/channels.scm: -;; -;; (channel -;; (name 'anytype) -;; (url "https://github.com/hyperpolymath/anytype") -;; (branch "main")) -;; -;; Then: guix pull - -(channel - (version 0) - (url "https://github.com/hyperpolymath/anytype") - (dependencies - (channel - (name 'guix) - (url "https://git.savannah.gnu.org/git/guix.git") - (branch "master")))) diff --git a/build/contractile.just b/build/contractile.just deleted file mode 100644 index 9a5827b..0000000 --- a/build/contractile.just +++ /dev/null @@ -1,75 +0,0 @@ -# Auto-generated by: contractile gen-just -# Source directory: contractiles -# Re-generate with: contractile gen-just --dir contractiles -# -# SPDX-License-Identifier: MPL-2.0 - -# === DUST (Recovery & Rollback) === -# Source: Dustfile.a2ml - -# List available dust recovery actions -dust-status: - @echo ' dust-source-rollback: Revert all source changes to last commit [rollback]' - -# Revert all source changes to last commit -dust-source-rollback: - @echo 'Executing rollback for source-rollback' - git checkout HEAD -- . - - -# === INTEND (Declared Future Intent) === -# Source: Intentfile.a2ml - -# Display declared future intents -intend-list: - @echo '=== Declared Intent ===' - @echo '' - @echo 'Features:' - @echo '' - @echo 'Quality:' - - -# === MUST (Physical State Checks) === -# Source: Mustfile.a2ml - -# Run all must checks -must-check: must-license-present must-readme-present must-spdx-headers must-no-banned-files - @echo 'All must checks passed' - -# LICENSE file must exist -must-license-present: - test -f LICENSE - -# README must exist -must-readme-present: - test -f README.adoc || test -f README.md - -# Source files should have SPDX license headers -must-spdx-headers: - find . -name '*.rs' -o -name '*.res' -o -name '*.gleam' | head -20 | xargs -r grep -L 'SPDX-License-Identifier' | wc -l | grep -q '^0$' - -# No Dockerfiles or Makefiles -must-no-banned-files: - test ! -f Dockerfile && test ! -f Makefile - - -# === TRUST (Integrity & Provenance Verification) === -# Source: Trustfile.a2ml - -# Run all trust verifications -trust-verify: trust-license-content trust-no-secrets-committed trust-container-images-pinned - @echo 'All trust verifications passed' - -# LICENSE contains expected SPDX identifier -trust-license-content: - grep -q 'SPDX\|License\|MIT\|Apache\|PMPL\|MPL' LICENSE - -# No .env or credential files in repo -trust-no-secrets-committed: - test ! -f .env && test ! -f credentials.json && test ! -f .env.local - -# Containerfile base images use pinned digests -trust-container-images-pinned: - test ! -f Containerfile || grep -q '@sha256:' Containerfile - - diff --git a/build/guix.scm b/build/guix.scm deleted file mode 100644 index cc0ab49..0000000 --- a/build/guix.scm +++ /dev/null @@ -1,71 +0,0 @@ -;; SPDX-License-Identifier: MPL-2.0 -;; Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -;; -;; Guix package definition for anytype -;; -;; Usage: -;; guix shell -D -f guix.scm # Enter development shell -;; guix build -f guix.scm # Build package -;; -;; TODO: Replace anytype and customize inputs for your language/stack. -;; See: https://guix.gnu.org/manual/en/html_node/Defining-Packages.html - -(use-modules (guix packages) - (guix gexp) - (guix git-download) - (guix build-system gnu) - (guix licenses) - (gnu packages base)) - -(package - (name "anytype") - (version "0.1.0") - (source (local-file "." "source" - #:recursive? #t - #:select? (lambda (file stat) - (not (string-contains file ".git"))))) - (build-system gnu-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; TODO: Customize build phases for your project - ;; Examples for common stacks: - ;; - ;; Rust: - ;; (replace 'build (lambda _ (invoke "cargo" "build" "--release"))) - ;; (replace 'check (lambda _ (invoke "cargo" "test"))) - ;; - ;; Elixir: - ;; (replace 'build (lambda _ (invoke "mix" "compile"))) - ;; (replace 'check (lambda _ (invoke "mix" "test"))) - ;; - ;; Zig: - ;; (replace 'build (lambda _ (invoke "zig" "build"))) - ;; (replace 'check (lambda _ (invoke "zig" "build" "test"))) - (delete 'configure) - (delete 'build) - (delete 'check) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (mkdir-p (string-append out "/share/doc")) - (copy-file "README.adoc" - (string-append out "/share/doc/README.adoc")))))))) - (native-inputs - (list - ;; TODO: Add build-time dependencies - ;; Examples: - ;; rust (gnu packages rust) - ;; elixir (gnu packages elixir) - ;; zig (gnu packages zig) - )) - (inputs - (list - ;; TODO: Add runtime dependencies - )) - (home-page "https://github.com/hyperpolymath/anytype") - (synopsis "The reference type-checker kernel that implements systemet (Equality Theory).") - (description "RSR-compliant project. See README.adoc for details.") - (license (list - ;; MPL-2.0 extends MPL-2.0 - mpl2.0))) diff --git a/build/just/assess.just b/build/just/assess.just deleted file mode 100644 index 6e2a128..0000000 --- a/build/just/assess.just +++ /dev/null @@ -1,225 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -# -# PROJECT SELF-ASSESSMENT + OPENSSF COMPLIANCE VERIFICATION -# -# Imported by ../../Justfile via `import? "build/just/assess.just"`. -# Recipes here advise on what to keep/remove (`self-assess`, read-only) and -# verify that OpenSSF Best Practices prerequisites are present (`verify`, -# called by `init` and CI). - -# Analyse this project and advise what to keep, remove, or leave for later. -# Does NOT modify any files — only prints recommendations. -self-assess: - #!/usr/bin/env bash - set -euo pipefail - - echo "═══════════════════════════════════════════════════" - echo " RSR Project Self-Assessment" - echo "═══════════════════════════════════════════════════" - echo "" - echo "Scanning project structure to identify what's" - echo "relevant, removable, or worth keeping for later..." - echo "" - - # Detect project characteristics - HAS_RUST=false; [ -f "Cargo.toml" ] && HAS_RUST=true - HAS_ELIXIR=false; [ -f "mix.exs" ] && HAS_ELIXIR=true - HAS_RESCRIPT=false; [ -f "rescript.json" ] || [ -f "bsconfig.json" ] && HAS_RESCRIPT=true - HAS_IDRIS=false; ls *.ipkg >/dev/null 2>&1 && HAS_IDRIS=true - HAS_ZIG=false; [ -f "build.zig" ] || [ -d "ffi/zig" ] && HAS_ZIG=true - HAS_GLEAM=false; [ -f "gleam.toml" ] && HAS_GLEAM=true - HAS_CONTAINER=false; [ -f "Containerfile" ] || [ -f "container/Containerfile" ] && HAS_CONTAINER=true - HAS_TESTS=false; [ -d "test" ] || [ -d "tests" ] || [ -d "__tests__" ] && HAS_TESTS=true - HAS_API=false; grep -rq 'port\|listen\|endpoint' --include="*.exs" --include="*.rs" --include="*.toml" . 2>/dev/null && HAS_API=true - IS_LIBRARY=false; [ -f "Cargo.toml" ] && grep -q '\[lib\]' Cargo.toml 2>/dev/null && IS_LIBRARY=true - - echo "Detected: Rust=$HAS_RUST Elixir=$HAS_ELIXIR ReScript=$HAS_RESCRIPT" - echo " Idris=$HAS_IDRIS Zig=$HAS_ZIG Gleam=$HAS_GLEAM" - echo " Container=$HAS_CONTAINER Tests=$HAS_TESTS API=$HAS_API" - echo "" - - # ── ESSENTIAL (removing these breaks RSR compliance) ────────── - echo "── ESSENTIAL (removing breaks Rhodium Standard) ──────────" - echo "" - - for f in LICENSE SECURITY.md CODE_OF_CONDUCT.md CONTRIBUTING.md .editorconfig .gitignore; do - if [ -f "$f" ]; then - echo " ✓ $f — KEEP (RSR required)" - else - echo " ✗ $f — MISSING (RSR violation!)" - fi - done - - if [ -d ".machine_readable/6a2" ]; then - echo " ✓ .machine_readable/6a2/ — KEEP (SCM checkpoint files)" - else - echo " ✗ .machine_readable/6a2/ — MISSING (RSR violation!)" - fi - - if [ -d ".github/workflows" ]; then - WF_COUNT=$(ls .github/workflows/*.yml 2>/dev/null | wc -l) - echo " ✓ .github/workflows/ — KEEP ($WF_COUNT workflows, RSR CI/CD)" - fi - echo "" - - # ── RELEVANT (useful for your project type) ─────────────────── - echo "── RELEVANT (matches your project) ───────────────────────" - echo "" - - if $HAS_IDRIS && { [ -d "src/interface/abi" ] || [ -d "src/interface/Abi" ]; }; then - echo " ✓ src/interface/abi/ — KEEP (Idris2 ABI definitions)" - elif ! $HAS_IDRIS && { [ -d "src/interface/abi" ] || [ -d "src/interface/Abi" ]; }; then - echo " ? src/interface/abi/ — No Idris2 detected." - echo " → KEEP if you plan to add formal verification later." - echo " → SAFE TO REMOVE if this project will never use Idris2." - echo " ⚠ Consequence: no formally verified interface definitions." - fi - - if $HAS_ZIG && [ -d "src/interface/ffi" ]; then - echo " ✓ src/interface/ffi/ — KEEP (Zig FFI bridge)" - elif ! $HAS_ZIG && [ -d "src/interface/ffi" ]; then - echo " ? src/interface/ffi/ — No Zig detected." - echo " → KEEP if you plan C ABI interop later." - echo " → SAFE TO REMOVE if this is a pure web/scripting project." - echo " ⚠ Consequence: no C-compatible FFI bridge." - fi - - if $HAS_API && [ -f ".machine_readable/integrations/groove.a2ml" ]; then - PORT=$(grep '(port ' .machine_readable/integrations/groove.a2ml 2>/dev/null | sed 's/.*(port \([0-9]*\)).*/\1/') - if [ "$PORT" = "0" ]; then - echo " ⚠ groove.a2ml — Port not assigned. Run 'just groove-setup'." - else - echo " ✓ groove.a2ml — KEEP (Groove discovery on port $PORT)" - fi - elif $HAS_API; then - echo " ✗ groove.a2ml — MISSING. Your project has an API but no Groove manifest." - echo " → Run 'just groove-setup' to enable snap-on/snap-off discovery." - fi - - if $HAS_CONTAINER && [ -d "container" ]; then - echo " ✓ container/ — KEEP (Containerfile + compose)" - elif ! $HAS_CONTAINER && [ -d "container" ]; then - echo " ? container/ — No Containerfile detected in use." - echo " → KEEP if you plan to containerise later." - echo " → SAFE TO REMOVE for libraries and CLI tools (run: just no-container)." - fi - - echo "" - - # ── SAFE TO REMOVE (not relevant, no consequences) ──────────── - echo "── SAFE TO REMOVE (no RSR consequences) ──────────────────" - echo "" - - if ! $HAS_RESCRIPT && [ -d "examples" ] && ls examples/*.res >/dev/null 2>&1; then - echo " ○ examples/*.res — Template ReScript examples. Not your code." - fi - - if [ -f ".machine_readable/ai/PLACEHOLDERS.adoc" ]; then - echo " ○ .machine_readable/ai/PLACEHOLDERS.adoc — Template doc. Remove after init." - fi - - if { [ -f "build/flake.nix" ] || [ -f "flake.nix" ]; } && ! command -v nix >/dev/null 2>&1; then - echo " ○ flake.nix — Nix flake. Safe to remove if you don't use Nix." - echo " → KEEP if others might build with Nix." - fi - - if { [ -f "build/guix.scm" ] || [ -f "guix.scm" ]; } && ! command -v guix >/dev/null 2>&1; then - echo " ○ guix.scm — Guix package. Safe to remove if you don't use Guix." - echo " → KEEP if others might build with Guix." - fi - - echo "" - - # ── FUTURE VALUE (not needed now, worth keeping) ────────────── - echo "── KEEP FOR FUTURE (not active, but valuable later) ──────" - echo "" - - if [ -d ".machine_readable/contractiles" ]; then - echo " ◆ contractiles/ — Must/Trust/Dust/Lust contracts." - echo " Not enforced until you configure them, but ready when you need" - echo " automated compliance checking. Zero cost to keep." - fi - - if [ -d ".machine_readable/bot_directives" ]; then - echo " ◆ bot_directives/ — Gitbot fleet configuration." - echo " Not active until gitbot-fleet is connected. Keeps your repo" - echo " ready for automated maintenance when the fleet arrives." - fi - - if [ -d ".machine_readable/bot_directives" ]; then - echo " ◆ bot_directives/ — AI agent methodology config." - echo " Guides Claude/Gemini/etc on how to work in this repo." - echo " No cost to keep. Improves AI assistance quality." - fi - - if [ -d "docs/governance" ]; then - echo " ◆ docs/governance/ — TSDM, CRG, maintenance checklists." - echo " Not needed for solo projects. Essential when you add contributors." - fi - - if [ -d "verification" ]; then - echo " ◆ verification/ — Proofs, benchmarks, fuzzing, safety case." - echo " Empty scaffolds until you add formal verification." - echo " Worth keeping for any project that claims safety properties." - fi - - echo "" - echo "═══════════════════════════════════════════════════" - echo " Assessment complete. No files were modified." - echo "═══════════════════════════════════════════════════" - -# Verify OpenSSF Best Practices prerequisites — fails if any required file is missing -verify: - #!/usr/bin/env bash - set -euo pipefail - - echo "=== OpenSSF Best Practices Verification ===" - ERRORS=0 - - check_file() { - if [ ! -f "$1" ]; then - echo " FAIL: $1 missing" - ERRORS=$((ERRORS + 1)) - else - echo " OK: $1" - fi - } - - # Accept either .md or .adoc for documentation files - check_either() { - if [ ! -f "$1" ] && [ ! -f "$2" ]; then - echo " FAIL: $1 (or $2) missing" - ERRORS=$((ERRORS + 1)) - else - local found="$1" - [ -f "$2" ] && found="$2" - [ -f "$1" ] && found="$1" - echo " OK: $found" - fi - } - - check_either "SECURITY.md" "SECURITY.adoc" - check_file "LICENSE" - check_either "CONTRIBUTING.md" "CONTRIBUTING.adoc" - check_either "README.adoc" "README.md" - check_file ".machine_readable/6a2/STATE.a2ml" - check_file ".machine_readable/6a2/META.a2ml" - check_file ".machine_readable/6a2/ECOSYSTEM.a2ml" - check_either "CHANGELOG.md" "CHANGELOG.adoc" - - # Check at least 1 workflow exists - WORKFLOW_COUNT=$(find .github/workflows -name '*.yml' -o -name '*.yaml' 2>/dev/null | wc -l) - if [ "$WORKFLOW_COUNT" -eq 0 ]; then - echo " FAIL: No workflows in .github/workflows/" - ERRORS=$((ERRORS + 1)) - else - echo " OK: .github/workflows/ ($WORKFLOW_COUNT workflows)" - fi - - echo "" - if [ "$ERRORS" -gt 0 ]; then - echo "FAIL: $ERRORS OpenSSF prerequisites missing — repo cannot ship." - exit 1 - fi - echo "PASS: All OpenSSF Best Practices prerequisites satisfied." diff --git a/build/just/container.just b/build/just/container.just deleted file mode 100644 index c5728a9..0000000 --- a/build/just/container.just +++ /dev/null @@ -1,284 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -# -# CONTAINERS — three-tier containerisation -# -# Imported by ../../Justfile via `import? "build/just/container.just"`. -# Variables (project, OWNER, ...) and `set shell` are inherited from the root. -# -# Tier A — OCI standard: container/Containerfile, container/.containerignore -# Tier B — portable engine: container/compose.yaml (podman | nerdctl | docker) -# Tier C — stapeln sovereign: container/stapeln/ (cerro-torre, svalinn, -# vordr, selur, rokur, k9) -# -# Engine is auto-selected: $CONTAINER_ENGINE, else the first of podman / -# nerdctl / docker found on PATH. Override with: CONTAINER_ENGINE=docker just … -# -# Narrow the template to the tiers you want (see the Narrowing section below): -# just container-keep oci portable # keep image + portable compose, drop the rest -# just no-stapeln | no-devcontainer | no-container # convenience aliases - -# ── Engine detection (shared snippet) ────────────────────────────────────── -# Resolves the OCI engine into $ENGINE. Sourced at the top of each recipe. -_engine := ''' - ENGINE="${CONTAINER_ENGINE:-}" - if [ -z "$ENGINE" ]; then - for e in podman nerdctl docker; do - if command -v "$e" >/dev/null 2>&1; then ENGINE="$e"; break; fi - done - fi - if [ -z "$ENGINE" ]; then - echo "No container engine found (looked for podman, nerdctl, docker)." >&2 - echo "Install one or set CONTAINER_ENGINE." >&2 - exit 1 - fi -''' - -# Initialise container templates — substitute placeholders with project values -container-init: - #!/usr/bin/env bash - set -euo pipefail - - if [ ! -d "container" ]; then - echo "Error: container/ directory not found." - echo "This repo may not have been created from rsr-template-repo," - echo "or containerisation was removed with 'just no-container'." - exit 1 - fi - - echo "=== Container Template Initialisation ===" - echo "" - - # Load RSR defaults if available - DEFAULTS="${XDG_CONFIG_HOME:-$HOME/.config}/rsr/defaults" - if [ -f "$DEFAULTS" ]; then - echo "Loading defaults from $DEFAULTS" - # shellcheck source=/dev/null - source "$DEFAULTS" - echo "" - fi - - # Prompt for container-specific values - read -rp "Service name (e.g. my-api) [{{project}}]: " _SERVICE_NAME - SERVICE_NAME="${_SERVICE_NAME:-{{project}}}" - - read -rp "Primary port [8080]: " _PORT - PORT="${_PORT:-8080}" - - read -rp "Container registry [ghcr.io/${OWNER:-{{OWNER}}}]: " _REGISTRY - REGISTRY="${_REGISTRY:-ghcr.io/${OWNER:-{{OWNER}}}}" - - echo "" - echo " Service: $SERVICE_NAME" - echo " Port: $PORT" - echo " Registry: $REGISTRY" - echo "" - read -rp "Proceed? [Y/n] " CONFIRM - [[ "${CONFIRM:-Y}" =~ ^[Nn] ]] && echo "Aborted." && exit 0 - - echo "" - echo "Replacing container placeholders..." - - # Brace tokens as variables (hex escapes avoid just interpolation) - LB=$(printf '\x7b\x7b') - RB=$(printf '\x7d\x7d') - - SED_ARGS=( - -e "s|${LB}SERVICE_NAME${RB}|${SERVICE_NAME}|g" - -e "s|${LB}PORT${RB}|${PORT}|g" - -e "s|${LB}REGISTRY${RB}|${REGISTRY}|g" - ) - - # Recurses into container/stapeln/ as well. - find container/ -type f | while read -r file; do - if file --brief "$file" | grep -qi 'text\|ascii\|utf'; then - sed -i "${SED_ARGS[@]}" "$file" - fi - done - - echo "Container templates initialised." - echo "" - echo "Next steps:" - echo " 1. Edit container/Containerfile — add your build commands (Tier A)" - echo " 2. Edit container/entrypoint.sh — set your application binary" - echo " 3. Review container/compose.yaml — portable stack (Tier B)" - echo " 4. Review container/stapeln/ — sovereign stack (Tier C)" - echo " 5. Build: just container-build" - -# Build container image (cerro-torre pipeline if present, else plain OCI build) -container-build *args: - #!/usr/bin/env bash - set -euo pipefail - {{_engine}} - if [ -f "container/stapeln/ct-build.sh" ]; then - cd container/stapeln && CONTAINER_ENGINE="$ENGINE" ./ct-build.sh {{args}} - elif [ -f "container/Containerfile" ]; then - "$ENGINE" build -t {{project}}:latest -f container/Containerfile . - elif [ -f "Containerfile" ]; then - "$ENGINE" build -t {{project}}:latest -f Containerfile . - else - echo "No Containerfile found in container/ or project root" - exit 1 - fi - -# Pick the compose path: selur-compose (sovereign) if installed, else portable -_compose action *args: - #!/usr/bin/env bash - set -euo pipefail - {{_engine}} - if command -v selur-compose >/dev/null 2>&1 && [ -f "container/stapeln/compose.toml" ]; then - ( cd container/stapeln && selur-compose {{action}} {{args}} ) - elif [ -f "container/compose.yaml" ]; then - "$ENGINE" compose -f container/compose.yaml {{action}} {{args}} - else - echo "No compose file found (container/stapeln/compose.toml or container/compose.yaml)" - exit 1 - fi - -# Verify compose configuration (selur-compose verify, else compose config) -container-verify: - #!/usr/bin/env bash - set -euo pipefail - {{_engine}} - if command -v selur-compose >/dev/null 2>&1 && [ -f "container/stapeln/compose.toml" ]; then - ( cd container/stapeln && selur-compose verify ) - elif [ -f "container/compose.yaml" ]; then - "$ENGINE" compose -f container/compose.yaml config - else - echo "No compose file found (container/stapeln/compose.toml or container/compose.yaml)" - exit 1 - fi - -# Start the container stack (selur-compose if available, else $ENGINE compose) -container-up *args: - @just _compose up {{args}} - -# Stop the container stack -container-down *args: - @just _compose down {{args}} - -# Sign and verify the container bundle (cerro-torre: build + pack + sign + verify) -container-sign: - #!/usr/bin/env bash - set -euo pipefail - if [ -f "container/stapeln/ct-build.sh" ]; then - cd container/stapeln && ./ct-build.sh - else - echo "No container/stapeln/ct-build.sh found" - exit 1 - fi - -# Push the signed bundle (or plain image) to the registry -container-push: - #!/usr/bin/env bash - set -euo pipefail - {{_engine}} - if [ -f "container/stapeln/ct-build.sh" ]; then - cd container/stapeln && CONTAINER_ENGINE="$ENGINE" ./ct-build.sh --push - else - echo "No container/stapeln/ct-build.sh found — falling back to $ENGINE push" - "$ENGINE" push {{project}}:latest - fi - -# Run the container interactively (for debugging) -container-run *args: - #!/usr/bin/env bash - set -euo pipefail - {{_engine}} - "$ENGINE" run --rm -it {{project}}:latest {{args}} - -# Container matrix: [build|run|push|shell|scan] x [registry] x [tag] -container-matrix action="build" registry="ghcr.io/{{OWNER}}" tag="latest": - @echo "Container matrix: action={{action}} registry={{registry}} tag={{tag}}" - -# ── Narrowing / opt-out ────────────────────────────────────────────────────── -# -# `container-keep` is the workhorse: declare exactly which tiers to KEEP; the -# rest are removed. Tiers: oci (A) · portable (B) · stapeln (C) · devcontainer. -# Idempotent — safe to re-run. The aliases below are thin wrappers. -# -# just container-keep oci # bare OCI image only -# just container-keep oci portable # image + portable compose -# just container-keep oci portable stapeln # full prod stack, no dev container -# just container-keep all # no-op (keep everything) -# just container-keep none # remove everything (= no-container) -# DRY_RUN=1 just container-keep oci # show what would change, do nothing -# FORCE=1 just container-keep oci # skip the confirm prompt -# -# Accepts space- or comma-separated tokens, and aliases: a/A, b/B/compose, -# c/C/sovereign, dev. 'portable'/'stapeln' require 'oci' (they build the image). -container-keep +tiers: - #!/usr/bin/env bash - set -euo pipefail - - sel="$(echo "$@" | tr ',' ' ')" - keep_oci=false keep_port=false keep_stap=false keep_dev=false - for t in $sel; do - case "$t" in - all) keep_oci=true; keep_port=true; keep_stap=true; keep_dev=true ;; - none) : ;; - oci|a|A) keep_oci=true ;; - portable|compose|b|B) keep_port=true ;; - stapeln|sovereign|c|C) keep_stap=true ;; - devcontainer|dev) keep_dev=true ;; - *) echo "Unknown tier '$t'. Valid: oci portable stapeln devcontainer | all | none" >&2; exit 1 ;; - esac - done - - # Coherence: tiers B and C build the OCI image, so they need tier A. - if { $keep_port || $keep_stap; } && ! $keep_oci; then - echo "Incoherent selection: 'portable'/'stapeln' build the OCI image — add 'oci'." >&2 - exit 1 - fi - - # Build the removal plan. - plan=() - $keep_dev || plan+=(".devcontainer/ (dev container)") - if $keep_oci; then - $keep_stap || plan+=("container/stapeln/ (cerro-torre, svalinn, vordr, selur, rokur, k9)") - $keep_port || plan+=("container/compose.yaml + compose.example.yaml (portable stack)") - else - plan+=("container/ (entire image + compose + stapeln)") - plan+=("build/just/container.just (this module) + its Justfile import") - [ -f .github/workflows/container-build.yml ] && plan+=(".github/workflows/container-build.yml") - fi - - echo "Keeping: oci=$keep_oci portable=$keep_port stapeln=$keep_stap devcontainer=$keep_dev" - if [ ${#plan[@]} -eq 0 ]; then echo "Nothing to remove — selection already matches."; exit 0; fi - echo "Will remove:"; printf ' - %s\n' "${plan[@]}" - - if [ "${DRY_RUN:-}" = "1" ]; then echo "(DRY_RUN — no changes made)"; exit 0; fi - if [ "${FORCE:-}" != "1" ]; then - read -rp "Proceed? [y/N] " c; [[ "${c:-N}" =~ ^[Yy] ]] || { echo "Aborted."; exit 0; } - fi - - # Apply. - $keep_dev || rm -rf .devcontainer - if $keep_oci; then - $keep_stap || rm -rf container/stapeln - $keep_port || rm -f container/compose.yaml container/compose.example.yaml - else - rm -rf container - rm -f .machine_readable/configs/selur-compose.toml - rm -f .github/workflows/container-build.yml - rm -f build/just/container.just - [ -f Justfile ] && sed -i '/# >>> container-module/,/# <<< container-module/d' Justfile - for jf in Justfile .machine_readable/contractiles/Justfile; do - [ -f "$jf" ] && sed -i '\|import? "build/just/container.just"|d' "$jf" - done - fi - - echo "" - echo "Done. Review .github/workflows/ for image build/publish jobs you no longer need." - -# Remove ALL containerisation (image, compose, stapeln, dev container) -no-container: - @just container-keep none - -# Drop only the stapeln sovereign tier (keep OCI image + portable compose + dev container) -no-stapeln: - @just container-keep oci portable devcontainer - -# Drop only the dev container (keep the full image/compose/stapeln stack) -no-devcontainer: - @just container-keep oci portable stapeln diff --git a/build/just/groove.just b/build/just/groove.just deleted file mode 100644 index 029a9bd..0000000 --- a/build/just/groove.just +++ /dev/null @@ -1,98 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -# -# GROOVE PROTOCOL -# -# Imported by ../../Justfile via `import? "build/just/groove.just"`. -# Recipes here configure and validate the Groove protocol manifest at -# .machine_readable/integrations/groove.a2ml — port assignment, API surface -# flags (REST/gRPC/GraphQL/WebSocket/SSE), and template-placeholder hygiene. -# The manifest itself is consumed by the Groove bridge / zig-unified-api-adapter. - -# Configure Groove protocol manifest (port assignment, API surfaces) -groove-setup: - #!/usr/bin/env bash - set -euo pipefail - MANIFEST=".machine_readable/integrations/groove.a2ml" - if [ ! -f "$MANIFEST" ]; then - echo "Error: $MANIFEST not found. Run 'just init' first." - exit 1 - fi - - echo "═══════════════════════════════════════════════════" - echo " Groove Protocol Setup" - echo "═══════════════════════════════════════════════════" - echo "" - echo "Check PORT-REGISTRY.md before assigning a port:" - echo " https://github.com/hyperpolymath/standards/blob/main/PORT-REGISTRY.md" - echo "" - - read -rp "Primary port for this service: " PORT - [ -z "$PORT" ] && echo "Error: port required" && exit 1 - - echo "" - echo "Which API surfaces does this project expose?" - read -rp " REST API? [Y/n]: " REST - read -rp " gRPC? [y/N]: " GRPC - read -rp " GraphQL? [y/N]: " GRAPHQL - read -rp " WebSocket? [y/N]: " WS - read -rp " SSE (Server-Sent Events)? [y/N]: " SSE - - # Update port in manifest - sed -i "s/(port 0)/(port ${PORT})/" "$MANIFEST" - - # Update API surface flags - [[ "${GRPC,,}" == "y" ]] && sed -i 's/(grpc.*enabled false)/(grpc (enabled true)/' "$MANIFEST" - [[ "${GRAPHQL,,}" == "y" ]] && sed -i 's/(graphql.*enabled false)/(graphql (enabled true)/' "$MANIFEST" - [[ "${WS,,}" == "y" ]] && sed -i 's/(websocket.*enabled false)/(websocket (enabled true)/' "$MANIFEST" - [[ "${SSE,,}" == "y" ]] && sed -i 's/(sse.*enabled false)/(sse (enabled true)/' "$MANIFEST" - - echo "" - echo "Groove manifest updated: $MANIFEST" - echo "Port ${PORT} assigned. Add to PORT-REGISTRY.md if not already there." - -# Check for template placeholders that haven't been replaced -verify-template: - #!/usr/bin/env bash - set -euo pipefail - echo "Checking for unreplaced template placeholders..." - FOUND=0 - - # Check for double-brace placeholder patterns - HITS=$(grep -rn '{{'{{'}}[A-Z_]*{{'}}'}}' --include="*.adoc" --include="*.md" --include="*.a2ml" \ - --include="*.scm" --include="*.toml" --include="*.yml" --include="*.yaml" \ - . 2>/dev/null | grep -v 'node_modules\|\.git/' | grep -v 'PLACEHOLDERS.adoc' || true) - if [ -n "$HITS" ]; then - echo "" - echo "⚠ Unreplaced placeholders found:" - echo "$HITS" | head -20 - FOUND=1 - fi - - # Check for template defaults still present - if grep -q 'rsr-template-repo' Justfile 2>/dev/null; then - echo "⚠ Justfile still references 'rsr-template-repo' — update project name" - FOUND=1 - fi - - # Check for port 0 in Groove manifest - if grep -q '(port 0)' .machine_readable/integrations/groove.a2ml 2>/dev/null; then - echo "⚠ Groove manifest has port 0 — run 'just groove-setup' to assign a port" - FOUND=1 - fi - - # Check for empty SCM files - for f in .machine_readable/6a2/STATE.a2ml .machine_readable/6a2/META.a2ml .machine_readable/6a2/ECOSYSTEM.a2ml; do - if [ -f "$f" ] && grep -q '{{'{{'}}' "$f" 2>/dev/null; then - echo "⚠ $f still has template placeholders" - FOUND=1 - fi - done - - if [ $FOUND -eq 0 ]; then - echo "✓ No template placeholders found — project is properly customised." - else - echo "" - echo "Run 'just init' to replace placeholders, or edit files manually." - exit 1 - fi diff --git a/build/just/init.just b/build/just/init.just deleted file mode 100644 index 746b4f6..0000000 --- a/build/just/init.just +++ /dev/null @@ -1,214 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -# -# INIT — Bootstrap a new project from this template -# -# Imported by ../../Justfile via `import? "build/just/init.just"`. -# Variables (project, OWNER, REPO, version, tier) and the `set shell` directive -# are inherited from the root Justfile. - -# Interactive project bootstrap — replaces all {{PLACEHOLDER}} tokens -init: - #!/usr/bin/env bash - set -euo pipefail - - echo "═══════════════════════════════════════════════════" - echo " RSR Project Bootstrap" - echo "═══════════════════════════════════════════════════" - echo "" - - # --- Load defaults from config (if exists) --- - # Create yours: ~/.config/rsr/defaults - # Format: OWNER=myorg AUTHOR="My Name" AUTHOR_EMAIL=me@example.org ... - DEFAULTS="${XDG_CONFIG_HOME:-$HOME/.config}/rsr/defaults" - if [ -f "$DEFAULTS" ]; then - echo "Loading defaults from $DEFAULTS" - # shellcheck source=/dev/null - source "$DEFAULTS" - echo "" - fi - - # --- Required values (pre-filled from defaults if available) --- - read -rp "Project name (human-readable, e.g. My Project): " PROJECT_NAME - [ -z "$PROJECT_NAME" ] && echo "Error: project name required" && exit 1 - - read -rp "Repository slug (e.g. my-project): " REPO - [ -z "$REPO" ] && echo "Error: repo slug required" && exit 1 - - read -rp "Owner [${OWNER:-}]: " _OWNER - OWNER="${_OWNER:-${OWNER:-}}" - [ -z "$OWNER" ] && echo "Error: owner required" && exit 1 - - read -rp "Author full name [${AUTHOR:-}]: " _AUTHOR - AUTHOR="${_AUTHOR:-${AUTHOR:-}}" - [ -z "$AUTHOR" ] && echo "Error: author name required" && exit 1 - - read -rp "Author email [${AUTHOR_EMAIL:-}]: " _AUTHOR_EMAIL - AUTHOR_EMAIL="${_AUTHOR_EMAIL:-${AUTHOR_EMAIL:-}}" - [ -z "$AUTHOR_EMAIL" ] && echo "Error: email required" && exit 1 - - # --- Optional values (pre-filled from defaults if available) --- - read -rp "Author organization [${AUTHOR_ORG:-none}]: " _AUTHOR_ORG - AUTHOR_ORG="${_AUTHOR_ORG:-${AUTHOR_ORG:-}}" - - read -rp "Previous/alt email [${AUTHOR_EMAIL_ALT:-none}]: " _AUTHOR_EMAIL_ALT - AUTHOR_EMAIL_ALT="${_AUTHOR_EMAIL_ALT:-${AUTHOR_EMAIL_ALT:-}}" - - read -rp "Project description []: " PROJECT_DESCRIPTION - - read -rp "Forge domain [${FORGE:-github.com}]: " _FORGE - FORGE="${_FORGE:-${FORGE:-github.com}}" - - read -rp "Security contact email [${SECURITY_EMAIL:-$AUTHOR_EMAIL}]: " _SECURITY_EMAIL - SECURITY_EMAIL="${_SECURITY_EMAIL:-${SECURITY_EMAIL:-$AUTHOR_EMAIL}}" - - read -rp "Conduct contact email [${CONDUCT_EMAIL:-$AUTHOR_EMAIL}]: " _CONDUCT_EMAIL - CONDUCT_EMAIL="${_CONDUCT_EMAIL:-${CONDUCT_EMAIL:-$AUTHOR_EMAIL}}" - - read -rp "Project type (library|binary|monorepo|service|website) [library]: " PROJECT_TYPE - PROJECT_TYPE="${PROJECT_TYPE:-library}" - - read -rp "Website URL [https://${FORGE}/${OWNER}/${REPO}]: " WEBSITE - WEBSITE="${WEBSITE:-https://${FORGE}/${OWNER}/${REPO}}" - - # --- Container values (optional — only relevant if container/ exists) --- - if [ -d "container" ]; then - echo "" - echo "── Container configuration (optional) ─────────" - read -rp "Service name [${REPO}]: " _SERVICE_NAME - SERVICE_NAME="${_SERVICE_NAME:-${REPO}}" - read -rp "Primary port [8080]: " _PORT - PORT="${_PORT:-8080}" - read -rp "Container registry [ghcr.io/${OWNER}]: " _REGISTRY - REGISTRY="${_REGISTRY:-ghcr.io/${OWNER}}" - else - SERVICE_NAME="${REPO}" - PORT="8080" - REGISTRY="ghcr.io/${OWNER}" - fi - - # --- Derived values --- - PROJECT_UPPER=$(echo "$REPO" | tr '[:lower:]-' '[:upper:]_') - PROJECT_LOWER=$(echo "$REPO" | tr '[:upper:]-' '[:lower:]_') - CURRENT_YEAR=$(date +%Y) - CURRENT_DATE=$(date +%Y-%m-%d) - VERSION="0.1.0" - - # Derive citation name parts (best-effort split on last space) - AUTHOR_LAST="${AUTHOR##* }" - AUTHOR_FIRST="${AUTHOR% *}" - FIRST_INITIAL="${AUTHOR_FIRST:0:1}." - if [ "$AUTHOR_LAST" = "$AUTHOR_FIRST" ]; then - AUTHOR_FIRST="$AUTHOR" - AUTHOR_LAST="" - FIRST_INITIAL="" - fi - - echo "" - echo "── Summary ──────────────────────────────────────" - echo " Project: $PROJECT_NAME" - echo " Repo: $REPO" - echo " Owner: $OWNER" - echo " Author: $AUTHOR <$AUTHOR_EMAIL>" - [ -n "$AUTHOR_ORG" ] && echo " Organization: $AUTHOR_ORG" - echo " Forge: $FORGE" - echo " Year: $CURRENT_YEAR" - echo "────────────────────────────────────────────────" - echo "" - read -rp "Proceed? [Y/n] " CONFIRM - [[ "${CONFIRM:-Y}" =~ ^[Nn] ]] && echo "Aborted." && exit 0 - - echo "" - echo "Replacing placeholders..." - - # Brace tokens as variables (hex avoids just interpolation) - LB=$(printf '\x7b\x7b') - RB=$(printf '\x7d\x7d') - - # Build the sed expression list - # Note: using | as delimiter since URLs contain / - SED_ARGS=( - -e "s|${LB}PROJECT_NAME${RB}|${PROJECT_NAME}|g" - -e "s|${LB}PROJECT_DESCRIPTION${RB}|${PROJECT_DESCRIPTION}|g" - -e "s|${LB}PROJECT${RB}|${PROJECT_UPPER}|g" - -e "s|${LB}project${RB}|${PROJECT_LOWER}|g" - -e "s|${LB}REPO${RB}|${REPO}|g" - -e "s|${LB}OWNER${RB}|${OWNER}|g" - -e "s|${LB}AUTHOR${RB}|${AUTHOR}|g" - -e "s|${LB}AUTHOR_EMAIL${RB}|${AUTHOR_EMAIL}|g" - -e "s|${LB}AUTHOR_ORG${RB}|${AUTHOR_ORG}|g" - -e "s|${LB}AUTHOR_LAST${RB}|${AUTHOR_LAST}|g" - -e "s|${LB}AUTHOR_FIRST${RB}|${AUTHOR_FIRST}|g" - -e "s|${LB}AUTHOR_INITIALS${RB}|${FIRST_INITIAL}|g" - -e "s|${LB}FORGE${RB}|${FORGE}|g" - -e "s|${LB}CURRENT_YEAR${RB}|${CURRENT_YEAR}|g" - -e "s|${LB}CURRENT_DATE${RB}|${CURRENT_DATE}|g" - -e "s|${LB}DATE${RB}|${CURRENT_DATE}|g" - -e "s|${LB}SECURITY_EMAIL${RB}|${SECURITY_EMAIL}|g" - -e "s|${LB}CONDUCT_EMAIL${RB}|${CONDUCT_EMAIL}|g" - -e "s|${LB}LICENSE${RB}|MPL-2.0|g" - -e "s|${LB}CONDUCT_TEAM${RB}|Code of Conduct Committee|g" - -e "s|${LB}RESPONSE_TIME${RB}|48 hours|g" - -e "s|${LB}MAIN_BRANCH${RB}|main|g" - -e "s|${LB}PROJECT_PURPOSE${RB}|${PROJECT_DESCRIPTION}|g" - -e "s|${LB}PROJECT_ROLE${RB}|${PROJECT_TYPE}|g" - -e "s|${LB}PROJECT_TYPE${RB}|${PROJECT_TYPE}|g" - -e "s|${LB}WEBSITE${RB}|${WEBSITE}|g" - -e "s|${LB}SERVICE_NAME${RB}|${SERVICE_NAME}|g" - -e "s|${LB}PORT${RB}|${PORT}|g" - -e "s|${LB}REGISTRY${RB}|${REGISTRY}|g" - -e "s|${LB}IMAGE${RB}|${REGISTRY}/${SERVICE_NAME}|g" - -e "s|${LB}VERSION${RB}|${VERSION}|g" - -e "s|${LB}EMAIL${RB}|${AUTHOR_EMAIL}|g" - ) - [ -n "$AUTHOR_EMAIL_ALT" ] && SED_ARGS+=(-e "s|${LB}AUTHOR_EMAIL_ALT${RB}|${AUTHOR_EMAIL_ALT}|g") - - # Replace in all text files (skip .git, LICENSE text, and binaries) - find . -type f \ - -not -path './.git/*' \ - -not -name 'MPL-2.0.txt' \ - -not -name '*.png' -not -name '*.jpg' -not -name '*.gif' \ - -not -name '*.woff' -not -name '*.woff2' \ - | while read -r file; do - if file --brief "$file" | grep -qi 'text\|ascii\|utf'; then - sed -i "${SED_ARGS[@]}" "$file" - fi - done - - # Also replace [YOUR-REPO-NAME] and [YOUR-NAME/ORG] in AI manifest - sed -i "s|\[YOUR-REPO-NAME\]|${PROJECT_NAME}|g" 0-AI-MANIFEST.a2ml 2>/dev/null || true - sed -i "s|\[YOUR-NAME/ORG\]|${OWNER}|g" 0-AI-MANIFEST.a2ml 2>/dev/null || true - - echo "" - echo "── Validation ───────────────────────────────────" - - # Check for remaining placeholders - PATTERN="${LB}[A-Z_]*${RB}" - REMAINING=$(grep -rl "$PATTERN" . --include='*.md' --include='*.adoc' --include='*.yml' --include='*.yaml' --include='*.a2ml' --include='*.toml' --include='*.scm' --include='*.ncl' --include='*.nix' --include='*.json' --include='*.sh' 2>/dev/null | grep -v '.git/' | grep -v '.machine_readable/ai/PLACEHOLDERS.adoc' || true) - if [ -n "$REMAINING" ]; then - echo "WARNING: Remaining placeholders in:" - echo "$REMAINING" | sed 's/^/ /' - echo "" - echo "Run: grep -rn '$LB' . --include='*.md' to inspect" - else - echo "All placeholders replaced successfully!" - fi - - # K9-SVC validation (if available) - if command -v k9-svc >/dev/null 2>&1; then - echo "" - echo "Running k9-svc validation..." - k9-svc validate . 2>/dev/null || true - fi - - echo "" - echo "Running OpenSSF compliance verification..." - just verify - - echo "" - echo "Done! Next steps:" - echo " 1. Review changes: git diff" - echo " 2. Remove template cruft: rm .machine_readable/ai/PLACEHOLDERS.adoc" - echo " 3. Customize README.adoc for your project" - echo " 4. Commit: git add -A && git commit -m 'feat: initialize from RSR template'" - echo " 5. Push: git remote add origin git@${FORGE}:${OWNER}/${REPO}.git && git push -u origin main" diff --git a/build/just/proofs.just b/build/just/proofs.just deleted file mode 100644 index b124d7a..0000000 --- a/build/just/proofs.just +++ /dev/null @@ -1,154 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -# -# FORMAL VERIFICATION (PROOFS) -# -# Imported by ../../Justfile via `import? "build/just/proofs.just"`. -# Recipes here check formal proofs across Idris2, Lean4, Agda, and Coq, plus -# scan for dangerous/unsafe constructs and report status. Run via -# `just proof-check-all` for the full sweep. - -# Check all formal proofs (Idris2 + Lean4 + Agda + Coq) -proof-check-all: proof-check-idris2 proof-check-lean4 proof-check-agda proof-check-coq proof-scan-dangerous - @echo "=== All proof checks complete ===" - -# Check Idris2 proofs (ABI, types, dependent type proofs) -proof-check-idris2: - #!/usr/bin/env bash - set -euo pipefail - echo "=== Checking Idris2 proofs ===" - if ! command -v idris2 &>/dev/null; then - echo "SKIP: idris2 not installed" - exit 0 - fi - ERRORS=0 - for f in $(find verification/proofs/idris2 -name '*.idr' 2>/dev/null); do - echo -n " Checking $f ... " - if idris2 --check "$f" 2>/dev/null; then - echo "OK" - else - echo "FAIL" - ERRORS=$((ERRORS + 1)) - fi - done - if [ "$ERRORS" -gt 0 ]; then - echo "FAIL: $ERRORS Idris2 proof(s) failed" - exit 1 - fi - echo "PASS: All Idris2 proofs verified" - -# Check Lean4 proofs -proof-check-lean4: - #!/usr/bin/env bash - set -euo pipefail - echo "=== Checking Lean4 proofs ===" - if ! command -v lean &>/dev/null; then - echo "SKIP: lean not installed" - exit 0 - fi - ERRORS=0 - for f in $(find verification/proofs/lean4 -name '*.lean' 2>/dev/null); do - echo -n " Checking $f ... " - if lean "$f" 2>/dev/null; then - echo "OK" - else - echo "FAIL" - ERRORS=$((ERRORS + 1)) - fi - done - if [ "$ERRORS" -gt 0 ]; then - echo "FAIL: $ERRORS Lean4 proof(s) failed" - exit 1 - fi - echo "PASS: All Lean4 proofs verified" - -# Check Agda proofs -proof-check-agda: - #!/usr/bin/env bash - set -euo pipefail - echo "=== Checking Agda proofs ===" - if ! command -v agda &>/dev/null; then - echo "SKIP: agda not installed" - exit 0 - fi - ERRORS=0 - for f in $(find verification/proofs/agda -name '*.agda' 2>/dev/null); do - echo -n " Checking $f ... " - if agda --safe "$f" 2>/dev/null; then - echo "OK" - else - echo "FAIL" - ERRORS=$((ERRORS + 1)) - fi - done - if [ "$ERRORS" -gt 0 ]; then - echo "FAIL: $ERRORS Agda proof(s) failed" - exit 1 - fi - echo "PASS: All Agda proofs verified" - -# Check Coq proofs -proof-check-coq: - #!/usr/bin/env bash - set -euo pipefail - echo "=== Checking Coq proofs ===" - if ! command -v coqc &>/dev/null; then - echo "SKIP: coqc not installed" - exit 0 - fi - ERRORS=0 - for f in $(find verification/proofs/coq -name '*.v' 2>/dev/null); do - echo -n " Checking $f ... " - if coqc "$f" 2>/dev/null; then - echo "OK" - else - echo "FAIL" - ERRORS=$((ERRORS + 1)) - fi - done - if [ "$ERRORS" -gt 0 ]; then - echo "FAIL: $ERRORS Coq proof(s) failed" - exit 1 - fi - echo "PASS: All Coq proofs verified" - -# Scan for dangerous patterns in proof files (believe_me, sorry, Admitted, etc.) -proof-scan-dangerous: - #!/usr/bin/env bash - set -euo pipefail - echo "=== Scanning for dangerous patterns in proofs ===" - DANGEROUS=0 - PATTERNS="believe_me|assert_total|postulate|sorry|Admitted|unsafeCoerce|Obj\.magic" - for f in $(find verification/proofs -name '*.idr' -o -name '*.lean' -o -name '*.agda' -o -name '*.v' 2>/dev/null); do - MATCHES=$(grep -nE "$PATTERNS" "$f" 2>/dev/null || true) - if [ -n "$MATCHES" ]; then - echo " DANGEROUS: $f" - echo "$MATCHES" | sed 's/^/ /' - DANGEROUS=$((DANGEROUS + 1)) - fi - done - if [ "$DANGEROUS" -gt 0 ]; then - echo "FAIL: $DANGEROUS file(s) contain dangerous patterns" - exit 1 - fi - echo "PASS: No dangerous patterns found in proofs" - -# Show proof status summary -proof-status: - #!/usr/bin/env bash - echo "=== Proof Status ===" - echo "" - echo "Idris2: $(find verification/proofs/idris2 -name '*.idr' 2>/dev/null | wc -l) files" - echo "Lean4: $(find verification/proofs/lean4 -name '*.lean' 2>/dev/null | wc -l) files" - echo "Agda: $(find verification/proofs/agda -name '*.agda' 2>/dev/null | wc -l) files" - echo "Coq: $(find verification/proofs/coq -name '*.v' 2>/dev/null | wc -l) files" - echo "TLA+: $(find verification/proofs/tlaplus -name '*.tla' 2>/dev/null | wc -l) files" - echo "" - # PROOF-STATUS may live at root, docs/status/ (post-#20), .md or .adoc (post-#23) - for candidate in docs/status/PROOF-STATUS.adoc docs/status/PROOF-STATUS.md PROOF-STATUS.adoc PROOF-STATUS.md; do - if [ -f "$candidate" ]; then - grep -E "^\| \*\*Total\*\*|^\| \*Total\*" "$candidate" 2>/dev/null || echo "(No summary row in $candidate)" - exit 0 - fi - done - echo "(No PROOF-STATUS file found at root or docs/status/)" diff --git a/build/just/validate.just b/build/just/validate.just deleted file mode 100644 index 5ef9208..0000000 --- a/build/just/validate.just +++ /dev/null @@ -1,130 +0,0 @@ -# SPDX-License-Identifier: MPL-2.0 -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) -# -# VALIDATION & COMPLIANCE -# -# Imported by ../../Justfile via `import? "build/just/validate.just"`. -# Recipes here check that this repo conforms to the RSR (Rhodium Standard -# Repository) skeleton: required files, METAdata, AI install guide -# completeness, etc. Run via `just validate`. - -# Validate RSR compliance -validate-rsr: - #!/usr/bin/env bash - echo "=== RSR Compliance Check ===" - MISSING="" - for f in .editorconfig .gitignore Justfile README.adoc LICENSE 0-AI-MANIFEST.a2ml; do - [ -f "$f" ] || MISSING="$MISSING $f" - done - for f in .machine_readable/6a2/STATE.a2ml .machine_readable/6a2/META.a2ml .machine_readable/6a2/ECOSYSTEM.a2ml .machine_readable/6a2/anchors/ANCHOR.a2ml .machine_readable/policies/MAINTENANCE-AXES.a2ml .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml; do - [ -f "$f" ] || MISSING="$MISSING $f" - done - for f in licensing/exhibits/EXHIBIT-A-ETHICAL-USE.txt licensing/exhibits/EXHIBIT-B-QUANTUM-SAFE.txt licensing/texts/MPL-2.0.txt; do - [ -f "$f" ] || MISSING="$MISSING $f" - done - if [ ! -d "src/interface/abi" ] && [ ! -d "src/interface/Abi" ]; then - MISSING="$MISSING src/interface/abi" - fi - for f in src/interface/ffi src/interface/generated; do - [ -d "$f" ] || MISSING="$MISSING $f" - done - for f in docs/governance/MAINTENANCE-CHECKLIST.adoc docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc; do - [ -f "$f" ] || MISSING="$MISSING $f" - done - if [ -f ".machine_readable/6a2/META.a2ml" ]; then - grep -q 'axis-1 = "must > intend > like"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-1" - grep -q 'axis-2 = "corrective > adaptive > perfective"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-2" - grep -q 'axis-3 = "systems > compliance > effects"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:axis-3" - grep -q 'scoping-first = true' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:scoping-first" - grep -q 'idris-unsound-scan = "believe_me/assert_total"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:idris-unsound-scan" - grep -q 'audit-focus = "systems in place, documentation explains actual state, safety/security accounted for, observed effects reviewed"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:audit-focus" - grep -q 'compliance-focus = "seams/compromises/exception register, bounded exceptions, anti-drift checks"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:compliance-focus" - grep -q 'effects-evidence = "benchmark execution/results and maintainer status dialogue/review"' .machine_readable/6a2/META.a2ml || MISSING="$MISSING META.a2ml:effects-evidence" - grep -q 'compliance-tooling = "panic-attack"' .machine_readable/policies/MAINTENANCE-AXES.a2ml || MISSING="$MISSING MAINTENANCE-AXES.a2ml:compliance-tooling" - grep -q 'effects-tooling = "ecological checking with sustainabot guidance"' .machine_readable/policies/MAINTENANCE-AXES.a2ml || MISSING="$MISSING MAINTENANCE-AXES.a2ml:effects-tooling" - grep -q 'source-human = "docs/governance/MAINTENANCE-CHECKLIST.adoc"' .machine_readable/policies/MAINTENANCE-CHECKLIST.a2ml || MISSING="$MISSING MAINTENANCE-CHECKLIST.a2ml:source-human" - grep -q 'source-human = "docs/governance/SOFTWARE-DEVELOPMENT-APPROACH.adoc"' .machine_readable/policies/SOFTWARE-DEVELOPMENT-APPROACH.a2ml || MISSING="$MISSING SOFTWARE-DEVELOPMENT-APPROACH.a2ml:source-human" - fi - if [ -n "$MISSING" ]; then - echo "MISSING:$MISSING" - exit 1 - fi - echo "RSR compliance: PASS" - -# Validate STATE.a2ml syntax -validate-state: - @if [ -f ".machine_readable/6a2/STATE.a2ml" ]; then \ - grep -q '^\[metadata\]' .machine_readable/6a2/STATE.a2ml && \ - grep -q 'project\s*=' .machine_readable/6a2/STATE.a2ml && \ - echo "STATE.a2ml: valid" || echo "STATE.a2ml: INVALID (missing required sections)"; \ - else \ - echo "No .machine_readable/6a2/STATE.a2ml found"; \ - fi - -# Validate AI installation guide completeness (finishbot pre-release check) -validate-ai-install: - #!/usr/bin/env bash - echo "=== AI Installation Guide Check ===" - GUIDE="docs/AI_INSTALLATION_GUIDE.adoc" - README="README.adoc" - ERRORS=0 - - # Check guide exists - if [ ! -f "$GUIDE" ]; then - echo "MISSING: $GUIDE (create from template: docs/AI_INSTALLATION_GUIDE.adoc)" - ERRORS=$((ERRORS + 1)) - else - # Check for unfilled TODO markers - TODOS=$(grep -c '\[TODO-AI-INSTALL' "$GUIDE" 2>/dev/null || true) - if [ "$TODOS" -gt 0 ]; then - echo "INCOMPLETE: $GUIDE has $TODOS unfilled [TODO-AI-INSTALL] markers:" - grep -n '\[TODO-AI-INSTALL' "$GUIDE" | head -10 - ERRORS=$((ERRORS + 1)) - else - echo "$GUIDE: complete (no TODO markers)" - fi - - # Check AI implementation section exists - if ! grep -q 'ai-implementation' "$GUIDE" 2>/dev/null; then - echo "MISSING: [[ai-implementation]] anchor in $GUIDE" - ERRORS=$((ERRORS + 1)) - fi - - # Check privacy notice exists - if ! grep -qi 'privacy' "$GUIDE" 2>/dev/null; then - echo "MISSING: Privacy notice in $GUIDE" - ERRORS=$((ERRORS + 1)) - fi - - # Check install commands exist (not just placeholders) - if ! grep -q 'git clone' "$GUIDE" 2>/dev/null; then - echo "WARNING: No git clone command found in $GUIDE -- install commands may be incomplete" - fi - fi - - # Check README has AI install section - if [ -f "$README" ]; then - if ! grep -qi 'AI-Assisted Installation' "$README" 2>/dev/null; then - echo "MISSING: AI-Assisted Installation section in $README" - echo " Copy from docs/AI-INSTALL-README-SECTION.adoc" - ERRORS=$((ERRORS + 1)) - fi - - # Check README for unfilled TODO markers - README_TODOS=$(grep -c '\[TODO-AI-INSTALL' "$README" 2>/dev/null || true) - if [ "$README_TODOS" -gt 0 ]; then - echo "INCOMPLETE: $README has $README_TODOS unfilled [TODO-AI-INSTALL] markers" - ERRORS=$((ERRORS + 1)) - fi - fi - - if [ "$ERRORS" -gt 0 ]; then - echo "" - echo "AI install guide: FAIL ($ERRORS issues)" - exit 1 - fi - echo "AI install guide: PASS" - -# Full validation suite -validate: validate-rsr validate-state validate-ai-install - @echo "All validations passed!" diff --git a/build/setup.sh b/build/setup.sh deleted file mode 100755 index f652bf4..0000000 --- a/build/setup.sh +++ /dev/null @@ -1,294 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: MPL-2.0 -# setup.sh — Universal setup script for rsr-template-repo -# -# Detects your shell, platform, and installs prerequisites. -# Then hands off to `just setup` for project-specific configuration. -# -# hypatia: allow code_safety/shell_download_then_run -- the only remote fetch -# (install_just_upstream) deliberately downloads to a temp file and runs that -# file rather than piping `curl | sh`, so the script can be inspected; the -# upstream just installer is a rolling script that cannot be checksum-pinned. -# -# Usage: -# curl -fsSL https://raw.githubusercontent.com/hyperpolymath/rsr-template-repo/main/setup.sh -o setup.sh && sh setup.sh -# # or after cloning: -# ./setup.sh -# -# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) - -set -eu - -# ── Colours (safe — uses symbols too per ADJUST contractile) ── -if [ -t 1 ] && command -v tput >/dev/null 2>&1; then - RED=$(tput setaf 1 2>/dev/null || true) - GREEN=$(tput setaf 2 2>/dev/null || true) - YELLOW=$(tput setaf 3 2>/dev/null || true) - CYAN=$(tput setaf 6 2>/dev/null || true) - BOLD=$(tput bold 2>/dev/null || true) - RESET=$(tput sgr0 2>/dev/null || true) -else - RED="" GREEN="" YELLOW="" CYAN="" BOLD="" RESET="" -fi - -ok() { printf " %s[OK]%s %s\n" "$GREEN" "$RESET" "$1"; } -fail() { printf " %s[FAIL]%s %s\n" "$RED" "$RESET" "$1"; } -warn() { printf " %s[WARN]%s %s\n" "$YELLOW" "$RESET" "$1"; } -info() { printf " %s[INFO]%s %s\n" "$CYAN" "$RESET" "$1"; } - -# ── Shell Detection ── -detect_shell() { - # Check the actual running shell, not just $SHELL - CURRENT_SHELL="unknown" - - if [ -n "${BASH_VERSION:-}" ]; then CURRENT_SHELL="bash" - elif [ -n "${ZSH_VERSION:-}" ]; then CURRENT_SHELL="zsh" - elif [ -n "${FISH_VERSION:-}" ]; then CURRENT_SHELL="fish" - elif [ -n "${KSH_VERSION:-}" ]; then CURRENT_SHELL="ksh" - # Check by process name for shells that don't set version vars - elif command -v ps >/dev/null 2>&1; then - SHELL_PROC=$(ps -p $$ -o comm= 2>/dev/null || echo "unknown") - case "$SHELL_PROC" in - *dash*) CURRENT_SHELL="dash" ;; - *tcsh*) CURRENT_SHELL="tcsh" ;; - *csh*) CURRENT_SHELL="csh" ;; - *elvish*) CURRENT_SHELL="elvish" ;; - *nu*) CURRENT_SHELL="nushell" ;; - *oil*|*osh*) CURRENT_SHELL="oil" ;; - *xonsh*) CURRENT_SHELL="xonsh" ;; - *murex*) CURRENT_SHELL="murex" ;; - *ion*) CURRENT_SHELL="ion" ;; - *hilbish*) CURRENT_SHELL="hilbish" ;; - *oh*) CURRENT_SHELL="oh" ;; - *vsh*) CURRENT_SHELL="vsh" ;; - *pwsh*|*powershell*) CURRENT_SHELL="powershell" ;; - esac - fi - - # Fallback: check $SHELL env var - if [ "$CURRENT_SHELL" = "unknown" ] && [ -n "${SHELL:-}" ]; then - case "$SHELL" in - */bash) CURRENT_SHELL="bash" ;; - */zsh) CURRENT_SHELL="zsh" ;; - */fish) CURRENT_SHELL="fish" ;; - */dash) CURRENT_SHELL="dash" ;; - */ksh*) CURRENT_SHELL="ksh" ;; - */tcsh) CURRENT_SHELL="tcsh" ;; - */csh) CURRENT_SHELL="csh" ;; - */vsh) CURRENT_SHELL="vsh" ;; - esac - fi - - printf "%s" "$CURRENT_SHELL" -} - -# ── Platform Detection ── -detect_platform() { - OS="unknown" - DISTRO="unknown" - PKG_MGR="unknown" - ARCH=$(uname -m 2>/dev/null || echo "unknown") - - case "$(uname -s 2>/dev/null)" in - Linux*) - OS="linux" - if [ -f /etc/os-release ]; then - DISTRO=$(. /etc/os-release && echo "$ID") - elif [ -f /etc/redhat-release ]; then - DISTRO="rhel" - elif [ -f /etc/debian_version ]; then - DISTRO="debian" - fi - # Detect package manager - if command -v dnf >/dev/null 2>&1; then PKG_MGR="dnf" - elif command -v apt-get >/dev/null 2>&1; then PKG_MGR="apt" - elif command -v pacman >/dev/null 2>&1; then PKG_MGR="pacman" - elif command -v apk >/dev/null 2>&1; then PKG_MGR="apk" - elif command -v zypper >/dev/null 2>&1; then PKG_MGR="zypper" - elif command -v rpm-ostree >/dev/null 2>&1; then PKG_MGR="rpm-ostree" - elif command -v guix >/dev/null 2>&1; then PKG_MGR="guix" - fi - ;; - Darwin*) - OS="macos" - DISTRO="macos" - if command -v brew >/dev/null 2>&1; then PKG_MGR="brew" - elif command -v port >/dev/null 2>&1; then PKG_MGR="macports" - fi - ;; - CYGWIN*|MINGW*|MSYS*) - OS="windows" - DISTRO="msys" - if command -v winget >/dev/null 2>&1; then PKG_MGR="winget" - elif command -v scoop >/dev/null 2>&1; then PKG_MGR="scoop" - elif command -v choco >/dev/null 2>&1; then PKG_MGR="choco" - fi - ;; - FreeBSD*) - OS="freebsd" - DISTRO="freebsd" - PKG_MGR="pkg" - ;; - esac -} - -# ── Install just ── -# Fetch-then-run rather than `curl | sh`: piping a remote script straight into a -# shell executes whatever the network returns with no chance to inspect or -# verify it (CWE-494). Download to a temp file first, then run that file. -install_just_upstream() { - _ji_tmp=$(mktemp 2>/dev/null || echo "/tmp/just-install.$$.sh") - if curl -fsSL https://just.systems/install.sh -o "$_ji_tmp"; then - sh "$_ji_tmp" --to /usr/local/bin - _ji_rc=$? - else - fail "Could not download the just installer." - _ji_rc=1 - fi - rm -f "$_ji_tmp" - return $_ji_rc -} - -install_just() { - if command -v just >/dev/null 2>&1; then - ok "just already installed: $(just --version 2>/dev/null | head -1)" - return 0 - fi - - info "Installing just (task runner)..." - - case "$PKG_MGR" in - dnf) sudo dnf install -y just ;; - apt) sudo apt-get install -y just 2>/dev/null || install_just_upstream ;; - pacman) sudo pacman -S --noconfirm just ;; - apk) sudo apk add just ;; - brew) brew install just ;; - scoop) scoop install just ;; - winget) winget install Casey.Just ;; - rpm-ostree) sudo rpm-ostree install just ;; - guix) guix install just ;; - *) - info "Using just installer script..." - install_just_upstream - ;; - esac - - if command -v just >/dev/null 2>&1; then - ok "just installed: $(just --version 2>/dev/null | head -1)" - else - fail "Could not install just. Install manually: https://just.systems/" - return 1 - fi -} - -# ── Main ── -main() { - printf "%s=== rsr-template-repo Setup ===%s\n\n" "$BOLD" "$RESET" - - # Detect environment - SHELL_NAME=$(detect_shell) - detect_platform - - info "Shell: $SHELL_NAME" - info "Platform: $OS ($DISTRO)" - info "Arch: $ARCH" - info "Packages: $PKG_MGR" - printf "\n" - - # Warn about exotic shells - case "$SHELL_NAME" in - vsh) - info "Valence Shell detected — experimental support" - info "Falling back to POSIX sh for setup, vsh for post-setup" - ;; - nushell|elvish|murex|ion|hilbish|oil|xonsh|oh) - info "$SHELL_NAME detected — using POSIX sh for setup" - ;; - esac - - # Step 1: Install just - printf "%sStep 1: Install task runner%s\n" "$BOLD" "$RESET" - install_just || { fail "Cannot proceed without just"; exit 1; } - printf "\n" - - # Step 2: Check if we're in the repo directory - if [ ! -f "Justfile" ] && [ ! -f "justfile" ]; then - warn "Not in a repo directory (no Justfile found)" - info "Clone first: git clone https://github.com/hyperpolymath/rsr-template-repo.git" - info "Then: cd rsr-template-repo && ./setup.sh" - exit 1 - fi - - # Step 3: Run just setup - printf "%sStep 2: Project setup%s\n" "$BOLD" "$RESET" - if just --list 2>/dev/null | grep -q "^setup "; then - just setup - elif just --list 2>/dev/null | grep -q "^setup-dev "; then - just setup-dev - else - warn "No 'setup' recipe in Justfile — running 'just doctor' instead" - just doctor 2>/dev/null || true - fi - printf "\n" - - # Step 4: Post-install security snapshot - printf "%sStep 3: Security snapshot%s\n" "$BOLD" "$RESET" - if command -v firewall-cmd >/dev/null 2>&1; then - if firewall-cmd --state 2>/dev/null | grep -q running; then - ok "Firewall: firewalld active" - else - warn "Firewall: firewalld installed but not running" - info " Enable: sudo systemctl enable --now firewalld" - fi - elif command -v ufw >/dev/null 2>&1; then - if ufw status 2>/dev/null | grep -q "Status: active"; then - ok "Firewall: ufw active" - else - warn "Firewall: ufw installed but not active" - info " Enable: sudo ufw enable" - fi - else - warn "Firewall: none detected" - case "$PKG_MGR" in - dnf|rpm-ostree) info " Install: sudo dnf install firewalld && sudo systemctl enable --now firewalld" ;; - apt) info " Install: sudo apt install ufw && sudo ufw enable" ;; - *) info " Install a firewall for your platform" ;; - esac - fi - - if command -v getenforce >/dev/null 2>&1; then - SE_STATUS=$(getenforce 2>/dev/null || echo "unknown") - case "$SE_STATUS" in - Enforcing) ok "SELinux: Enforcing" ;; - Permissive) warn "SELinux: Permissive (recommend Enforcing: sudo setenforce 1)" ;; - *) warn "SELinux: $SE_STATUS" ;; - esac - fi - - # Write report - REPORT_FILE="INSTALL-SECURITY-REPORT.adoc" - { - printf "// SPDX-License-Identifier: MPL-2.0\n" - printf "= Install Security Report\n" - printf ":date: %s\n\n" "$(date -Iseconds 2>/dev/null || date)" - printf "== Platform\n" - printf "* OS: %s (%s)\n" "$OS" "$DISTRO" - printf "* Arch: %s\n" "$ARCH" - printf "* Package manager: %s\n" "$PKG_MGR" - printf "* Shell: %s\n\n" "$SHELL_NAME" - printf "== Security Status\n" - printf "Run \`just doctor\` for full diagnostic.\n" - } > "$REPORT_FILE" - info "Security report: $REPORT_FILE" - printf "\n" - - # Done - printf "%s=== Setup Complete ===%s\n\n" "${BOLD}${GREEN}" "$RESET" - printf "Next steps:\n" - printf " just doctor — verify everything works\n" - printf " just tour — guided tour of the project\n" - printf " just build — build the project\n" - printf " just help-me — get help if stuck\n" -} - -main "$@" From 60287d8b85ed98acd09e1940907abbffc9122739 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 21 Jul 2026 07:19:27 +0100 Subject: [PATCH 2/6] feat(kernel): L2 grade-algebra interface + affine/exact instances + L1 graded checker Phases 2-3 of route-to-mvp, no longer scaffolding: - Anytype.Grade.Algebra: GradeAlgebra record whose semiring and order laws are proof fields -- an unlawful algebra is unrepresentable. - Anytype.Grade.Affine: {0,1,omega} mirroring affinescript lib/quantity.ml cell-for-cell (1+1=omega saturation, omega*1=omega); all laws discharged by exhaustive enumeration, %default total, no believe_me/assert_total/holes anywhere. - Anytype.Grade.Exact: exact-usage Nat instance (order = equality), the same-rules-distinct-disciplines demonstration systemet requires. - Anytype.Core.*: bidirectional simply-graded lambda calculus with usage counting; TNat index language total by construction (the MVP L1 totality gate); conversion = normalise-and-compare at a single mode-switch site. - Golden matrix (19 cases): affine accepts drop where exact rejects it; omega-arrow scaling rejection; TBits conversion accept/reject. - scripts/check-idris2-proofs.sh: manifest-driven hard-fail proof gate (missing toolchain = FAIL; unlisted .idr = FAIL; quarantined template modules must keep failing). Adapted from ideas-to-alphas. - Justfile: test / test-smoke / proof-check-idris2 are real commands, replacing the template echo placeholders. All gates watched failing (toolchain absent, sabotaged proof, flipped golden expectation) before being made green. Co-Authored-By: Claude Fable 5 --- Justfile | 32 +- anytype-tests.ipkg | 12 + anytype.ipkg | 20 + build/exec/anytype-tests | 15 + build/exec/anytype-tests_app/anytype-tests.so | Bin 0 -> 28880 bytes build/exec/anytype-tests_app/anytype-tests.ss | 763 ++++++++++++++++++ build/exec/anytype-tests_app/compileChez | 1 + .../anytype-tests_app/libidris2_support.so | Bin 0 -> 50080 bytes scripts/check-idris2-proofs.sh | 164 ++++ src/kernel/Anytype/Core/Check.idr | 97 +++ src/kernel/Anytype/Core/Conversion.idr | 35 + src/kernel/Anytype/Core/Normalise.idr | 41 + src/kernel/Anytype/Core/Syntax.idr | 71 ++ src/kernel/Anytype/Grade/Affine.idr | 465 +++++++++++ src/kernel/Anytype/Grade/Algebra.idr | 54 ++ src/kernel/Anytype/Grade/Exact.idr | 66 ++ src/kernel/Anytype/Kernel.idr | 37 + verification/tests/kernel/Tests/Main.idr | 111 +++ 18 files changed, 1971 insertions(+), 13 deletions(-) create mode 100644 anytype-tests.ipkg create mode 100644 anytype.ipkg create mode 100755 build/exec/anytype-tests create mode 100755 build/exec/anytype-tests_app/anytype-tests.so create mode 100755 build/exec/anytype-tests_app/anytype-tests.ss create mode 100755 build/exec/anytype-tests_app/compileChez create mode 100644 build/exec/anytype-tests_app/libidris2_support.so create mode 100755 scripts/check-idris2-proofs.sh create mode 100644 src/kernel/Anytype/Core/Check.idr create mode 100644 src/kernel/Anytype/Core/Conversion.idr create mode 100644 src/kernel/Anytype/Core/Normalise.idr create mode 100644 src/kernel/Anytype/Core/Syntax.idr create mode 100644 src/kernel/Anytype/Grade/Affine.idr create mode 100644 src/kernel/Anytype/Grade/Algebra.idr create mode 100644 src/kernel/Anytype/Grade/Exact.idr create mode 100644 src/kernel/Anytype/Kernel.idr create mode 100644 verification/tests/kernel/Tests/Main.idr diff --git a/Justfile b/Justfile index c6c157e..8023d65 100644 --- a/Justfile +++ b/Justfile @@ -129,26 +129,25 @@ clean-all: clean # TEST & QUALITY # ═══════════════════════════════════════════════════════════════════════════════ -# Run all tests +# Hard-fails if idris2 is absent -- a gate that cannot fail is not a gate +# (see scripts/check-idris2-proofs.sh for the history). +# Typecheck the ABI seam, build the kernel, run the golden matrix test *args: - @echo "Running tests..." - # TODO: Replace with your test command - # Examples: - # cargo test {{args}} - # mix test {{args}} - # zig build test {{args}} - # deno test {{args}} - @echo "Tests passed!" + @command -v idris2 >/dev/null || { echo "FAIL: idris2 not on PATH (install Idris2 0.7.0)"; exit 1; } + idris2 --typecheck abi.ipkg + idris2 --install anytype.ipkg + idris2 --build anytype-tests.ipkg + ./build/exec/anytype-tests # Run tests with verbose output test-verbose: @echo "Running tests (verbose)..." # TODO: Replace with verbose test command -# Smoke test +# Smoke test: does the kernel package typecheck at all? test-smoke: - @echo "Smoke test..." - # TODO: Add basic sanity checks + @command -v idris2 >/dev/null || { echo "FAIL: idris2 not on PATH"; exit 1; } + idris2 --typecheck anytype.ipkg # Run end-to-end tests (full pipeline: build → run → verify) e2e: @@ -593,7 +592,14 @@ help-me: # FORMAL VERIFICATION (PROOFS) — see build/just/proofs.just # ═══════════════════════════════════════════════════════════════════════════════ -import? "build/just/proofs.just" +# Proof gates replace the deleted build/just/proofs.just, whose recipes +# exited 0 when the prover was absent (the estate fake-gate flaw). +# Type-check every Idris2 module against the MANIFEST (hard-fail gate) +proof-check-idris2: + ./scripts/check-idris2-proofs.sh + +# Run all proof gates +proof-check: proof-check-idris2 # ═══════════════════════════════════════════════════════════════════════════════ # SESSION MANAGEMENT (THIN BINDINGS TO CENTRAL STANDARDS) diff --git a/anytype-tests.ipkg b/anytype-tests.ipkg new file mode 100644 index 0000000..54e86d2 --- /dev/null +++ b/anytype-tests.ipkg @@ -0,0 +1,12 @@ +package anytype-tests +version = 0.1.0 +authors = "hyperpolymath" +license = "MPL-2.0" +brief = "Golden matrix for the anytype kernel" + +sourcedir = "verification/tests/kernel" +depends = base, anytype + +modules = Tests.Main +main = Tests.Main +executable = anytype-tests diff --git a/anytype.ipkg b/anytype.ipkg new file mode 100644 index 0000000..df90e63 --- /dev/null +++ b/anytype.ipkg @@ -0,0 +1,20 @@ +-- anytype kernel package. +-- Module namespace matches the physical path under src/kernel exactly +-- (case-sensitive on every filesystem) — see abi.ipkg for the lesson. +package anytype +version = 0.1.0 +authors = "hyperpolymath" +license = "MPL-2.0" +brief = "Parameterised graded type checker: pick the algebra, get the discipline" + +sourcedir = "src/kernel" +depends = base + +modules = Anytype.Grade.Algebra + , Anytype.Grade.Affine + , Anytype.Grade.Exact + , Anytype.Core.Syntax + , Anytype.Core.Normalise + , Anytype.Core.Conversion + , Anytype.Core.Check + , Anytype.Kernel diff --git a/build/exec/anytype-tests b/build/exec/anytype-tests new file mode 100755 index 0000000..50701c4 --- /dev/null +++ b/build/exec/anytype-tests @@ -0,0 +1,15 @@ +#!/bin/sh +# @generated by Idris 0.7.0, Chez backend + +set -e # exit on any error + +if [ "$(uname)" = Darwin ]; then + DIR=$(zsh -c 'printf %s "$0:A:h"' "$0") +else + DIR=$(dirname "$(readlink -f -- "$0")") +fi +export LD_LIBRARY_PATH="$DIR/anytype-tests_app:$LD_LIBRARY_PATH" +export DYLD_LIBRARY_PATH="$DIR/anytype-tests_app:$DYLD_LIBRARY_PATH" +export IDRIS2_INC_SRC="$DIR/anytype-tests_app" + +"$DIR/anytype-tests_app/anytype-tests.so" "$@" \ No newline at end of file diff --git a/build/exec/anytype-tests_app/anytype-tests.so b/build/exec/anytype-tests_app/anytype-tests.so new file mode 100755 index 0000000000000000000000000000000000000000..ebd62c27a57c1a0a24a63d10a8030c9de73d91ad GIT binary patch literal 28880 zcmaI82Y6J~7AU;-snbuH$z*0y&ZJN3ne+mr03j1dNC6UhNSPE!W0Fv%OhOB}2qISz z5fQ|$2sT8$Vxfo%h*&RrxmX}zK|}-u^H#j~```Qj|Gme@+OzjMd#~NsUVE*z6A`BN zbotb}mUgwi*}J3*gEp@-F|pIv(d4Ub(*gb){%~sLN(gtwM)_ls8vN=XIU)l#8zq5V zqRl3sx4xsTv!&IW*wWtEVQXyfS+rnY&w{S3Meap)^%+^ssm*N}iOJ>KAYdp1Cj&U# z;OGSh05uAJO#q%^Scy<{V`~GYZ)xl7@O3Bpyz}D>oJ3K^|1>JGqi(LZzS|))tV}3F zOM885PlGoGu5dEt2scE7Ljy7m1`aT8h>rBaMHzwWns)cV~Aknb)4ZsI4ibZIOFkq8ob<#UwNsOp*StNc zBBZpoEWlW$2nD{*mM#&F)cr5BM8mJV#4rFdgZ~ZD#eMC~q+2aM00bgDZ)zbGieJ~l z6+M&=+!e`sjvl6PDHaShL>i0x4r@FcjLvA-)L#mo14H;P4pN5BZBB&ktEZ9;s8gW(A!P4;$mca2F*OE0Z$X-{nE>2z?2)~I(`Zl`o{a4^}O=`dl+LCNuOg>7tE;B|AT!ya zi2{p3fdVYU;Wv>3i$%uSbRoU^?!*)$Y>K70p2Wnu+J-`yBlRwzxW>sKxkI3Uqey2p z{6cdM3oz4dE=JPWCB2#Vb^eRGYO*!?va&L2y_qdN3)2>MXE%1IEm*X;ZFu*~yp0~K z0Y|xwW-=iec;;DZKG)IM*yZisOA(rmmbHIUE?M_GRnS)3HBSWd=+7uoZ>Fw?I%p5r zoU~-HOGY!-)zRat_u8837S?w!bhp(u_xS31TD(o2nLYDU6Wv>2tN|SPTY%0Ou7+-b zadcN>!zQSr=(@(vdm)vgy#k0SYakyNpm7a2C2@5y{Wr-7i84? z>UTjt@+4swT$Qwbi`v}L=2e>)cY1xD9j%MoYP*}&2JZrIYX@R%a4ig(MQ2BsT2oRm zv1m#`QQ;(K&7{J~YHj=CZY-oG)wkB-a!?m`_~v!vF6(l@Z+v3gg3iQwUSGSnRmCA_ zZBV_7y!D|VcE`};Yic_?W%$*W)YSzJ?ORvC!N0cy9CSCri^$9*iIQ78Y8w)}nrnUD zh6wf}saUIRZKgq_!SVr79yR#@K{W(S52$BsTi%7zWumDTTk~Cgx!Q3qkzLu_( zny#MCVaAO`M?y>hGZNg|Hy3OIk?VtBBbuqe`i|CCWZ=Uru?M$HVsmYKL#x*()$)uK zL2<3MZFLQ`hG?k{*L5DntI%MG#!Y11#l-k}9%I~HhG+`LV X0BK7u^{XxoyD*nB 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 literal 0 HcmV?d00001 diff --git a/build/exec/anytype-tests_app/anytype-tests.ss b/build/exec/anytype-tests_app/anytype-tests.ss new file mode 100755 index 0000000..9cfcfb0 --- /dev/null +++ b/build/exec/anytype-tests_app/anytype-tests.ss @@ -0,0 +1,763 @@ +#!/usr/bin/chezscheme --program + +;; @generated by Idris 0.7.0, Chez backend +(import (chezscheme)) +(case (machine-type) + [(i3fb ti3fb a6fb ta6fb) #f] + [(i3le ti3le a6le ta6le tarm64le) (load-shared-object "libc.so.6")] + [(i3osx ti3osx a6osx ta6osx tarm64osx) (load-shared-object "libc.dylib")] + [(i3nt ti3nt a6nt ta6nt) (load-shared-object "msvcrt.dll")] + [else (load-shared-object "libc.so")]) + +(load-shared-object "libidris2_support.so") + +(let () +(define (blodwen-os) + (case (machine-type) + [(i3le ti3le a6le ta6le tarm64le) "unix"] ; GNU/Linux + [(i3ob ti3ob a6ob ta6ob tarm64ob) "unix"] ; OpenBSD + [(i3fb ti3fb a6fb ta6fb tarm64fb) "unix"] ; FreeBSD + [(i3nb ti3nb a6nb ta6nb tarm64nb) "unix"] ; NetBSD + [(i3osx ti3osx a6osx ta6osx tarm64osx) "darwin"] + [(i3nt ti3nt a6nt ta6nt tarm64nt) "windows"] + [else "unknown"])) + +(define blodwen-lazy + (lambda (f) + (let ([evaluated #f] [res void]) + (lambda () + (if (not evaluated) + (begin (set! evaluated #t) + (set! res (f)) + (set! f void)) + (void)) + res)))) + +(define (blodwen-toSignedInt x bits) + (if (logbit? bits x) + (logor x (ash -1 bits)) + (logand x (sub1 (ash 1 bits))))) + +(define (blodwen-toUnsignedInt x bits) + (logand x (sub1 (ash 1 bits)))) + +(define (blodwen-euclidDiv a b) + (let ((q (quotient a b)) + (r (remainder a b))) + (if (< r 0) + (if (> b 0) (- q 1) (+ q 1)) + q))) + +(define (blodwen-euclidMod a b) + (let ((r (remainder a b))) + (if (< r 0) + (if (> b 0) (+ r b) (- r b)) + r))) + +; flonum constants + +(define (blodwen-calcFlonumUnitRoundoff) + (let loop [(uro 1.0)] + (if (fl= 1.0 (fl+ 1.0 uro)) + uro + (loop (fl/ uro 2.0))))) + +(define (blodwen-calcFlonumEpsilon) + (fl* (blodwen-calcFlonumUnitRoundoff) 2.0)) + +(define (blodwen-flonumNaN) + +nan.0) + +(define (blodwen-flonumInf) + +inf.0) + +; Bits + +(define bu+ (lambda (x y bits) (blodwen-toUnsignedInt (+ x y) bits))) +(define bu- (lambda (x y bits) (blodwen-toUnsignedInt (- x y) bits))) +(define bu* (lambda (x y bits) (blodwen-toUnsignedInt (* x y) bits))) +(define bu/ (lambda (x y bits) (blodwen-toUnsignedInt (quotient x y) bits))) + +(define bs+ (lambda (x y bits) (blodwen-toSignedInt (+ x y) bits))) +(define bs- (lambda (x y bits) (blodwen-toSignedInt (- x y) bits))) +(define bs* (lambda (x y bits) (blodwen-toSignedInt (* x y) bits))) +(define bs/ (lambda (x y bits) (blodwen-toSignedInt (blodwen-euclidDiv x y) bits))) + +(define (integer->bits8 x) (logand x (sub1 (ash 1 8)))) +(define (integer->bits16 x) (logand x (sub1 (ash 1 16)))) +(define (integer->bits32 x) (logand x (sub1 (ash 1 32)))) +(define (integer->bits64 x) (logand x (sub1 (ash 1 64)))) + +(define (bits16->bits8 x) (logand x (sub1 (ash 1 8)))) +(define (bits32->bits8 x) (logand x (sub1 (ash 1 8)))) +(define (bits64->bits8 x) (logand x (sub1 (ash 1 8)))) +(define (bits32->bits16 x) (logand x (sub1 (ash 1 16)))) +(define (bits64->bits16 x) (logand x (sub1 (ash 1 16)))) +(define (bits64->bits32 x) (logand x (sub1 (ash 1 32)))) + +(define (blodwen-bits-shl-signed x y bits) (blodwen-toSignedInt (ash x y) bits)) + +(define (blodwen-bits-shl x y bits) (logand (ash x y) (sub1 (ash 1 bits)))) + +(define blodwen-shl (lambda (x y) (ash x y))) +(define blodwen-shr (lambda (x y) (ash x (- y)))) +(define blodwen-and (lambda (x y) (logand x y))) +(define blodwen-or (lambda (x y) (logor x y))) +(define blodwen-xor (lambda (x y) (logxor x y))) + +(define cast-num + (lambda (x) + (if (number? x) x 0))) +(define destroy-prefix + (lambda (x) + (cond + ((equal? x "") "") + ((equal? (string-ref x 0) #\#) "") + (else x)))) + +(define exact-floor + (lambda (x) + (inexact->exact (floor x)))) + +(define exact-truncate + (lambda (x) + (inexact->exact (truncate x)))) + +(define exact-truncate-boundedInt + (lambda (x y) + (blodwen-toSignedInt (exact-truncate x) y))) + +(define exact-truncate-boundedUInt + (lambda (x y) + (blodwen-toUnsignedInt (exact-truncate x) y))) + +(define cast-char-boundedInt + (lambda (x y) + (blodwen-toSignedInt (char->integer x) y))) + +(define cast-char-boundedUInt + (lambda (x y) + (blodwen-toUnsignedInt (char->integer x) y))) + +(define cast-string-int + (lambda (x) + (exact-truncate (cast-num (string->number (destroy-prefix x)))))) + +(define cast-string-boundedInt + (lambda (x y) + (blodwen-toSignedInt (cast-string-int x) y))) + +(define cast-string-boundedUInt + (lambda (x y) + (blodwen-toUnsignedInt (cast-string-int x) y))) + +(define cast-int-char + (lambda (x) + (if (or + (and (>= x 0) (<= x #xd7ff)) + (and (>= x #xe000) (<= x #x10ffff))) + (integer->char x) + (integer->char 0)))) + +(define cast-string-double + (lambda (x) + (exact->inexact (cast-num (string->number (destroy-prefix x)))))) + + +(define (string-concat xs) (apply string-append xs)) +(define (string-unpack s) (string->list s)) +(define (string-pack xs) (list->string xs)) + +(define string-cons (lambda (x y) (string-append (string x) y))) +(define string-reverse (lambda (x) + (list->string (reverse (string->list x))))) +(define (string-substr off len s) + (let* ((l (string-length s)) + (b (max 0 off)) + (x (max 0 len)) + (end (min l (+ b x)))) + (if (> b l) + "" + (substring s b end)))) + +(define (blodwen-string-iterator-new s) + 0) + +(define (blodwen-string-iterator-to-string _ s ofs f) + (f (substring s ofs (string-length s)))) + +(define (blodwen-string-iterator-next s ofs) + (if (>= ofs (string-length s)) + '() ; EOF + (cons (string-ref s ofs) (+ ofs 1)))) + +(define either-left + (lambda (x) + (vector 0 x))) + +(define either-right + (lambda (x) + (vector 1 x))) + +(define blodwen-error-quit + (lambda (msg) + (display msg) + (newline) + (exit 1))) + +(define (blodwen-get-line p) + (if (port? p) + (let ((str (get-line p))) + (if (eof-object? str) + "" + str)) + void)) + +(define (blodwen-get-char p) + (if (port? p) + (let ((chr (get-char p))) + (if (eof-object? chr) + #\nul + chr)) + void)) + +;; Buffers + +(define (blodwen-new-buffer size) + (make-bytevector size 0)) + +(define (blodwen-buffer-size buf) + (bytevector-length buf)) + +(define (blodwen-buffer-setbyte buf loc val) + (bytevector-u8-set! buf loc val)) + +(define (blodwen-buffer-getbyte buf loc) + (bytevector-u8-ref buf loc)) + +(define (blodwen-buffer-setbits16 buf loc val) + (bytevector-u16-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getbits16 buf loc) + (bytevector-u16-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setbits32 buf loc val) + (bytevector-u32-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getbits32 buf loc) + (bytevector-u32-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setbits64 buf loc val) + (bytevector-u64-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getbits64 buf loc) + (bytevector-u64-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setint8 buf loc val) + (bytevector-s8-set! buf loc val)) + +(define (blodwen-buffer-getint8 buf loc) + (bytevector-s8-ref buf loc)) + +(define (blodwen-buffer-setint16 buf loc val) + (bytevector-s16-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getint16 buf loc) + (bytevector-s16-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setint32 buf loc val) + (bytevector-s32-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getint32 buf loc) + (bytevector-s32-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setint buf loc val) + (bytevector-s64-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getint buf loc) + (bytevector-s64-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setint64 buf loc val) + (bytevector-s64-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getint64 buf loc) + (bytevector-s64-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setdouble buf loc val) + (bytevector-ieee-double-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getdouble buf loc) + (bytevector-ieee-double-ref buf loc (native-endianness))) + +(define (blodwen-stringbytelen str) + (bytevector-length (string->utf8 str))) + +(define (blodwen-buffer-setstring buf loc val) + (let* [(strvec (string->utf8 val)) + (len (bytevector-length strvec))] + (bytevector-copy! strvec 0 buf loc len))) + +(define (blodwen-buffer-getstring buf loc len) + (let [(newvec (make-bytevector len))] + (bytevector-copy! buf loc newvec 0 len) + (utf8->string newvec))) + +(define (blodwen-buffer-copydata buf start len dest loc) + (bytevector-copy! buf start dest loc len)) + +;; Threads + +(define-record thread-handle (semaphore)) + +(define (blodwen-thread proc) + (let [(sema (blodwen-make-semaphore 0))] + (fork-thread (lambda () (proc (vector 0)) (blodwen-semaphore-post sema))) + (make-thread-handle sema) + )) + +(define (blodwen-thread-wait handle) + (blodwen-semaphore-wait (thread-handle-semaphore handle))) + +;; Thread mailboxes + +(define blodwen-thread-data + (make-thread-parameter #f)) + +(define (blodwen-get-thread-data ty) + (blodwen-thread-data)) + +(define (blodwen-set-thread-data ty a) + (blodwen-thread-data a)) + +;; Semaphore + +(define-record semaphore (box mutex condition)) + +(define (blodwen-make-semaphore init) + (make-semaphore (box init) (make-mutex) (make-condition))) + +(define (blodwen-semaphore-post sema) + (with-mutex (semaphore-mutex sema) + (let [(sema-box (semaphore-box sema))] + (set-box! sema-box (+ (unbox sema-box) 1)) + (condition-signal (semaphore-condition sema)) + ))) + +(define (blodwen-semaphore-wait sema) + (with-mutex (semaphore-mutex sema) + (let [(sema-box (semaphore-box sema))] + (when (= (unbox sema-box) 0) + (condition-wait (semaphore-condition sema) (semaphore-mutex sema))) + (set-box! sema-box (- (unbox sema-box) 1)) + ))) + +;; Barrier + +(define-record barrier (count-box num-threads mutex cond)) + +(define (blodwen-make-barrier num-threads) + (make-barrier (box 0) num-threads (make-mutex) (make-condition))) + +(define (blodwen-barrier-wait barrier) + (let [(count-box (barrier-count-box barrier)) + (num-threads (barrier-num-threads barrier)) + (mutex (barrier-mutex barrier)) + (condition (barrier-cond barrier))] + (with-mutex mutex + (let* [(count-old (unbox count-box)) + (count-new (+ count-old 1))] + (set-box! count-box count-new) + (if (= count-new num-threads) + (condition-broadcast condition) + (condition-wait condition mutex)) + )))) + +;; Channel +; With thanks to Alain Zscheile (@zseri) for help with understanding condition +; variables, and figuring out where the problems were and how to solve them. + +(define-record channel (read-mut read-cv read-box val-cv val-box)) + +(define (blodwen-make-channel ty) + (make-channel + (make-mutex) + (make-condition) + (box #t) + (make-condition) + (box '()) + )) + +; block on the read status using read-cv until the value has been read +(define (channel-put-while-helper chan) + (let ([read-mut (channel-read-mut chan)] + [read-box (channel-read-box chan)] + [read-cv (channel-read-cv chan)] + ) + (if (unbox read-box) + (void) ; val has been read, so everything is fine + (begin ; otherwise, block/spin with cv + (condition-wait read-cv read-mut) + (channel-put-while-helper chan) + ) + ))) + +(define (blodwen-channel-put ty chan val) + (with-mutex (channel-read-mut chan) + (channel-put-while-helper chan) + (let ([read-box (channel-read-box chan)] + [val-box (channel-val-box chan)] + ) + (set-box! val-box val) + (set-box! read-box #f) + )) + (condition-signal (channel-val-cv chan)) + ) + +; block on the value until it has been set +(define (channel-get-while-helper chan) + (let ([read-mut (channel-read-mut chan)] + [read-box (channel-read-box chan)] + [val-cv (channel-val-cv chan)] + ) + (if (unbox read-box) + (begin + (condition-wait val-cv read-mut) + (channel-get-while-helper chan) + ) + (void) + ))) + +(define (blodwen-channel-get ty chan) + (mutex-acquire (channel-read-mut chan)) + (channel-get-while-helper chan) + (let* ([val-box (channel-val-box chan)] + [read-box (channel-read-box chan)] + [read-cv (channel-read-cv chan)] + [the-val (unbox val-box)] + ) + (set-box! val-box '()) + (set-box! read-box #t) + (mutex-release (channel-read-mut chan)) + (condition-signal read-cv) + the-val)) + +;; Mutex + +(define (blodwen-make-mutex) + (make-mutex)) +(define (blodwen-mutex-acquire mutex) + (mutex-acquire mutex)) +(define (blodwen-mutex-release mutex) + (mutex-release mutex)) + +;; Condition variable + +(define (blodwen-make-condition) + (make-condition)) +(define (blodwen-condition-wait condition mutex) + (condition-wait condition mutex)) +(define (blodwen-condition-wait-timeout condition mutex timeout) + (let* [(sec (div timeout 1000000)) + (micro (mod timeout 1000000))] + (condition-wait condition mutex (make-time 'time-duration (* 1000 micro) sec)))) +(define (blodwen-condition-signal condition) + (condition-signal condition)) +(define (blodwen-condition-broadcast condition) + (condition-broadcast condition)) + +;; Future + +(define-record future-internal (result ready mutex signal)) +(define (blodwen-make-future work) + (let ([future (make-future-internal #f #f (make-mutex) (make-condition))]) + (fork-thread (lambda () + (let ([result (work)]) + (with-mutex (future-internal-mutex future) + (set-future-internal-result! future result) + (set-future-internal-ready! future #t) + (condition-broadcast (future-internal-signal future)))))) + future)) +(define (blodwen-await-future ty future) + (let ([mutex (future-internal-mutex future)]) + (with-mutex mutex + (if (not (future-internal-ready future)) + (condition-wait (future-internal-signal future) mutex)) + (future-internal-result future)))) + +(define (blodwen-sleep s) (sleep (make-time 'time-duration 0 s))) +(define (blodwen-usleep s) + (let ((sec (div s 1000000)) + (micro (mod s 1000000))) + (sleep (make-time 'time-duration (* 1000 micro) sec)))) + +(define (blodwen-clock-time-utc) (current-time 'time-utc)) +(define (blodwen-clock-time-monotonic) (current-time 'time-monotonic)) +(define (blodwen-clock-time-duration) (current-time 'time-duration)) +(define (blodwen-clock-time-process) (current-time 'time-process)) +(define (blodwen-clock-time-thread) (current-time 'time-thread)) +(define (blodwen-clock-time-gccpu) (current-time 'time-collector-cpu)) +(define (blodwen-clock-time-gcreal) (current-time 'time-collector-real)) +(define (blodwen-is-time? clk) (if (time? clk) 1 0)) +(define (blodwen-clock-second time) (time-second time)) +(define (blodwen-clock-nanosecond time) (time-nanosecond time)) + + +(define (blodwen-arg-count) + (length (command-line))) + +(define (blodwen-arg n) + (if (< n (length (command-line))) (list-ref (command-line) n) "")) + +(define (blodwen-hasenv var) + (if (eq? (getenv var) #f) 0 1)) + +;; Randoms +(define random-seed-register 0) +(define (initialize-random-seed-once) + (if (= (virtual-register random-seed-register) 0) + (let ([seed (time-nanosecond (current-time))]) + (set-virtual-register! random-seed-register seed) + (random-seed seed)))) + +(define (blodwen-random-seed seed) + (set-virtual-register! random-seed-register seed) + (random-seed seed)) +(define blodwen-random + (case-lambda + ;; no argument, pick a real value from [0, 1.0) + [() (begin + (initialize-random-seed-once) + (random 1.0))] + ;; single argument k, pick an integral value from [0, k) + [(k) + (begin + (initialize-random-seed-once) + (if (> k 0) + (random k) + (assertion-violationf 'blodwen-random "invalid range argument ~a" k)))])) + +;; For finalisers + +(define blodwen-finaliser (make-guardian)) +(define (blodwen-register-object obj proc) + (let [(x (cons obj proc))] + (blodwen-finaliser x) + x)) +(define blodwen-run-finalisers + (lambda () + (let run () + (let ([x (blodwen-finaliser)]) + (when x + (((cdr x) (car x)) 'erased) + (run)))))) + +;; For creating and reading back scheme objects + +; read a scheme string and evaluate it, returning 'Just result' on success +; TODO: catch exception! +(define (blodwen-eval-scheme str) + (guard + (x [#t '()]) ; Nothing on failure + (box (eval (read (open-input-string str))))) + ); box == Just + +(define (blodwen-eval-okay obj) + (if (null? obj) + 0 + 1)) + +(define (blodwen-get-eval-result obj) + (unbox obj)) + +(define (blodwen-debug-scheme obj) + (display obj) (newline)) + +(define (blodwen-is-number obj) + (if (number? obj) 1 0)) + +(define (blodwen-is-integer obj) + (if (and (number? obj) (exact? obj)) 1 0)) + +(define (blodwen-is-float obj) + (if (flonum? obj) 1 0)) + +(define (blodwen-is-char obj) + (if (char? obj) 1 0)) + +(define (blodwen-is-string obj) + (if (string? obj) 1 0)) + +(define (blodwen-is-procedure obj) + (if (procedure? obj) 1 0)) + +(define (blodwen-is-symbol obj) + (if (symbol? obj) 1 0)) + +(define (blodwen-is-vector obj) + (if (vector? obj) 1 0)) + +(define (blodwen-is-nil obj) + (if (null? obj) 1 0)) + +(define (blodwen-is-pair obj) + (if (pair? obj) 1 0)) + +(define (blodwen-is-box obj) + (if (box? obj) 1 0)) + +(define (blodwen-make-symbol str) + (string->symbol str)) + +; The below rely on checking that the objects are the right type first. + +(define (blodwen-vector-ref obj i) + (vector-ref obj i)) + +(define (blodwen-vector-length obj) + (vector-length obj)) + +(define (blodwen-vector-list obj) + (vector->list obj)) + +(define (blodwen-unbox obj) + (unbox obj)) + +(define (blodwen-apply obj arg) + (obj arg)) + +(define (blodwen-force obj) + (obj)) + +(define (blodwen-read-symbol sym) + (symbol->string sym)) + +(define (blodwen-id x) x) +(define PreludeC-45IO-prim__putStr (lambda (farg-0 farg-1) ((foreign-procedure "idris2_putStr" (string) void) farg-0))) +(define System-prim__exit (lambda (farg-0 farg-1) ((foreign-procedure "exit" (int) void) farg-0))) +(define PreludeC-45IO-u--map_Functor_IO (lambda (arg-2 arg-3 ext-0) (let ((act-2 (arg-3 ext-0))) (arg-2 act-2)))) +(define csegen-6 (vector (lambda (u--b) (lambda (u--a) (lambda (u--func) (lambda (arg-8885) (lambda (eta-0) (PreludeC-45IO-u--map_Functor_IO u--func arg-8885 eta-0)))))) (lambda (u--a) (lambda (arg-9931) (lambda (eta-0) arg-9931))) (lambda (u--b) (lambda (u--a) (lambda (arg-9937) (lambda (arg-9944) (lambda (world-4) (let ((act-5 (arg-9937 world-4))) (let ((act-3 (arg-9944 world-4))) (act-5 act-3)))))))))) +(define TestsC-45Main-dup (vector 3 (vector 0 0) (vector 0 0))) +(define csegen-67 (vector 1 2 (vector 1 ) TestsC-45Main-dup)) +(define csegen-81 (vector 2 csegen-67 (vector 0 0))) +(define TestsC-45Main-two (vector 1 (vector 1 (vector 0 )))) +(define TestsC-45Main-three (vector 1 TestsC-45Main-two)) +(define csegen-107 (vector 7 (vector 2 TestsC-45Main-two TestsC-45Main-three))) +(define u--prim__sub_Integer (lambda (arg-0 arg-1) (- arg-0 arg-1))) +(define PreludeC-45EqOrd-u--C-61C-61_Eq_Bool (lambda (arg-0 arg-1) (cond ((equal? arg-0 1) (cond ((equal? arg-1 1) 1)(else 0))) ((equal? arg-0 0) (cond ((equal? arg-1 0) 1)(else 0)))(else 0)))) +(define PreludeC-45Show-u--show_Show_Bool (lambda (arg-0) (cond ((equal? arg-0 1) "True") (else "False")))) +(define TestsC-45Main-report (lambda (arg-0) (let ((e-2 (car arg-0))) (let ((e-3 (cdr arg-0))) (lambda (clam-0) (let ((e-6 (car e-3))) (let ((e-7 (cdr e-3))) (let ((sc2 (PreludeC-45EqOrd-u--C-61C-61_Eq_Bool e-6 e-7))) (cond ((equal? sc2 1) (PreludeC-45IO-u--map_Functor_IO (lambda (eta-0) 1) (lambda (eta-0) (PreludeC-45IO-prim__putStr (string-append (string-append " PASS " e-2) "\xa;") eta-0)) clam-0)) (else (PreludeC-45IO-u--map_Functor_IO (lambda (eta-0) 0) (lambda (eta-0) (PreludeC-45IO-prim__putStr (string-append (string-append " FAIL " (string-append e-2 (string-append " (expected accept=" (string-append (PreludeC-45Show-u--show_Show_Bool e-6) (string-append ", got accept=" (string-append (PreludeC-45Show-u--show_Show_Bool e-7) ")")))))) "\xa;") eta-0)) clam-0))))))))))) +(define AnytypeC-45GradeC-45Affine-qadd (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 2))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 1) ((equal? arg-1 1) 2) (else 2))) (else (cond ((equal? arg-1 0) 2) ((equal? arg-1 1) 2) (else 2)))))) +(define AnytypeC-45GradeC-45Affine-qaddAssoc (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qaddComm (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 ))))))) +(define PreludeC-45Uninhabited-void (lambda (ext-0) (display "Error: Executed 'void'"))) +(define PreludeC-45Uninhabited-absurd (lambda (arg-2 arg-3) (PreludeC-45Uninhabited-void 'erased))) +(define DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Affine-qaddMono (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 ))))))))))) +(define AnytypeC-45GradeC-45Affine-qaddZeroL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-q0NotQ1 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Affine-q0NotQW (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Affine-q1NotQW (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Affine-qdec (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 (vector 0 ))) ((equal? arg-1 1) (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q0NotQ1 eta-0)))) (else (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q0NotQW eta-0)))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q0NotQ1 (vector 0 ))))) ((equal? arg-1 1) (vector 0 (vector 0 ))) (else (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q1NotQW eta-0)))))) (else (cond ((equal? arg-1 0) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q0NotQW (vector 0 ))))) ((equal? arg-1 1) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q1NotQW (vector 0 ))))) (else (vector 0 (vector 0 )))))))) +(define AnytypeC-45GradeC-45Affine-qdistribL (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qdistribR (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qleq (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 1) ((equal? arg-1 1) 1) (else 1))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 1))) (else (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 0) (else 1)))))) +(define AnytypeC-45GradeC-45Affine-qleqAntisym (lambda (arg-0 arg-1 arg-2 arg-3) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) ((equal? arg-1 1) (vector 0 )) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) (else (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) ((equal? arg-1 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) (else (vector 0 ))))))) +(define AnytypeC-45GradeC-45Affine-qleqRefl (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-qleqTrans (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qmul (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 0) (else 0))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 2))) (else (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 2) (else 2)))))) +(define AnytypeC-45GradeC-45Affine-qmulAssoc (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qmulMono (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 ))))))))))) +(define AnytypeC-45GradeC-45Affine-qmulOneL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-qmulOneR (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-qmulZeroL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-qmulZeroR (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-AffineAlgebra (lambda () (vector 0 1 (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qadd eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qmul eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qleq eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qdec eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qaddAssoc eta-0 eta-1 eta-2)))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qaddComm eta-0 eta-1))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qaddZeroL eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qmulAssoc eta-0 eta-1 eta-2)))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulOneL eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulOneR eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulZeroL eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulZeroR eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qdistribL eta-0 eta-1 eta-2)))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qdistribR eta-0 eta-1 eta-2)))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qleqRefl eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (AnytypeC-45GradeC-45Affine-qleqTrans eta-0 eta-1 eta-2 eta-3 eta-4)))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (AnytypeC-45GradeC-45Affine-qleqAntisym eta-0 eta-1 eta-2 eta-3))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Affine-qaddMono eta-0 eta-1 eta-2 eta-3 eta-4 eta-5))))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Affine-qmulMono eta-0 eta-1 eta-2 eta-3 eta-4 eta-5)))))))))) +(define TestsC-45Main-accepts (lambda (arg-1) (case (vector-ref arg-1 0) ((1) 1) (else 0)))) +(define AnytypeC-45CoreC-45Normalise-nval (lambda (arg-0) (case (vector-ref arg-0 0) ((0) 0) ((1) (let ((e-0 (vector-ref arg-0 1))) (+ (AnytypeC-45CoreC-45Normalise-nval e-0) 1))) ((2) (let ((e-1 (vector-ref arg-0 1))) (let ((e-2 (vector-ref arg-0 2))) (+ (AnytypeC-45CoreC-45Normalise-nval e-1) (AnytypeC-45CoreC-45Normalise-nval e-2))))) (else (let ((e-3 (vector-ref arg-0 1))) (let ((e-4 (vector-ref arg-0 2))) (* (AnytypeC-45CoreC-45Normalise-nval e-3) (AnytypeC-45CoreC-45Normalise-nval e-4)))))))) +(define AnytypeC-45CoreC-45Normalise-tnatOfNat (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else (let ((e-0 (- arg-0 1))) (vector 1 (AnytypeC-45CoreC-45Normalise-tnatOfNat e-0))))))) +(define AnytypeC-45CoreC-45Normalise-nnorm (lambda (ext-0) (AnytypeC-45CoreC-45Normalise-tnatOfNat (AnytypeC-45CoreC-45Normalise-nval ext-0)))) +(define AnytypeC-45CoreC-45Normalise-normalise (lambda (arg-1) (case (vector-ref arg-1 0) ((0) (vector 0 )) ((1) (vector 1 )) ((2) (let ((e-3 (vector-ref arg-1 1))) (vector 2 (AnytypeC-45CoreC-45Normalise-nnorm e-3)))) ((3) (let ((e-5 (vector-ref arg-1 1))) (let ((e-6 (vector-ref arg-1 2))) (let ((e-7 (vector-ref arg-1 3))) (vector 3 e-5 (AnytypeC-45CoreC-45Normalise-normalise e-6) (AnytypeC-45CoreC-45Normalise-normalise e-7)))))) (else (let ((e-9 (vector-ref arg-1 1))) (let ((e-10 (vector-ref arg-1 2))) (vector 4 (AnytypeC-45CoreC-45Normalise-normalise e-9) (AnytypeC-45CoreC-45Normalise-normalise e-10)))))))) +(define AnytypeC-45CoreC-45Conversion-tnatEq (lambda (arg-0 arg-1) (case (vector-ref arg-0 0) ((0) (case (vector-ref arg-1 0) ((0) 1)(else 0))) ((1) (let ((e-0 (vector-ref arg-0 1))) (case (vector-ref arg-1 0) ((1) (let ((e-1 (vector-ref arg-1 1))) (AnytypeC-45CoreC-45Conversion-tnatEq e-0 e-1)))(else 0))))(else 0)))) +(define AnytypeC-45CoreC-45Conversion-structEq (lambda (arg-1 arg-2 arg-3) (case (vector-ref arg-2 0) ((0) (case (vector-ref arg-3 0) ((0) 1)(else 0))) ((1) (case (vector-ref arg-3 0) ((1) 1)(else 0))) ((2) (let ((e-3 (vector-ref arg-2 1))) (case (vector-ref arg-3 0) ((2) (let ((e-14 (vector-ref arg-3 1))) (AnytypeC-45CoreC-45Conversion-tnatEq e-3 e-14)))(else 0)))) ((3) (let ((e-5 (vector-ref arg-2 1))) (let ((e-6 (vector-ref arg-2 2))) (let ((e-7 (vector-ref arg-2 3))) (case (vector-ref arg-3 0) ((3) (let ((e-16 (vector-ref arg-3 1))) (let ((e-17 (vector-ref arg-3 2))) (let ((e-18 (vector-ref arg-3 3))) (let ((e-26 (vector-ref arg-1 5))) (let ((sc2 ((e-26 e-5) e-16))) (case (vector-ref sc2 0) ((0) (let ((sc3 (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-6 e-17))) (cond ((equal? sc3 1) (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-7 e-18)) (else 0)))) (else 0))))))))(else 0)))))) ((4) (let ((e-9 (vector-ref arg-2 1))) (let ((e-10 (vector-ref arg-2 2))) (case (vector-ref arg-3 0) ((4) (let ((e-20 (vector-ref arg-3 1))) (let ((e-21 (vector-ref arg-3 2))) (let ((sc2 (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-9 e-20))) (cond ((equal? sc2 1) (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-10 e-21)) (else 0))))))(else 0)))))(else 0)))) +(define AnytypeC-45CoreC-45Conversion-convertible (lambda (arg-1 arg-2 arg-3) (AnytypeC-45CoreC-45Conversion-structEq arg-1 (AnytypeC-45CoreC-45Normalise-normalise arg-2) (AnytypeC-45CoreC-45Normalise-normalise arg-3)))) +(define DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 (lambda (arg-4 arg-5 arg-6) (if (null? arg-5) '() (let ((e-3 (car arg-5))) (let ((e-4 (cdr arg-5))) (let ((e-8 (car arg-6))) (let ((e-9 (cdr arg-6))) (cons ((arg-4 e-3) e-8) (DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 arg-4 e-4 e-9))))))))) +(define AnytypeC-45CoreC-45Check-addU (lambda (arg-2 ext-0 ext-1) (DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 (let ((e-3 (vector-ref arg-2 2))) e-3) ext-0 ext-1))) +(define DataC-45Vect-index (lambda (arg-2 arg-3) (cond ((equal? arg-2 0) (let ((e-5 (car arg-3))) e-5))(else (let ((e-2 (- arg-2 1))) (let ((e-10 (cdr arg-3))) (DataC-45Vect-index e-2 e-10))))))) +(define DataC-45Vect-replicate (lambda (arg-1 arg-2) (cond ((equal? arg-1 0) '())(else (let ((e-0 (- arg-1 1))) (cons arg-2 (DataC-45Vect-replicate e-0 arg-2))))))) +(define AnytypeC-45CoreC-45Check-zeroU (lambda (arg-1 arg-2) (DataC-45Vect-replicate arg-2 (let ((e-1 (vector-ref arg-1 0))) e-1)))) +(define AnytypeC-45CoreC-45Check-oneAt (lambda (arg-1 arg-2 arg-3) (cond ((equal? arg-2 0) (blodwen-error-quit "Nat case not covered"))(else (let ((e-0 (- arg-2 1))) (cond ((equal? arg-3 0) (cons (let ((e-2 (vector-ref arg-1 1))) e-2) (AnytypeC-45CoreC-45Check-zeroU arg-1 e-0)))(else (let ((e-3 (- arg-3 1))) (cons (let ((e-1 (vector-ref arg-1 0))) e-1) (AnytypeC-45CoreC-45Check-oneAt arg-1 e-0 e-3)))))))))) +(define DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 (lambda (arg-3 arg-4) (if (null? arg-4) '() (let ((e-3 (car arg-4))) (let ((e-4 (cdr arg-4))) (cons (arg-3 e-3) (DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 arg-3 e-4))))))) +(define AnytypeC-45CoreC-45Check-scaleU (lambda (arg-2 arg-3 ext-0) (DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 (let ((e-4 (vector-ref arg-2 3))) (e-4 arg-3)) ext-0))) +(define PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (lambda (arg-3 arg-4) (case (vector-ref arg-3 0) ((0) (let ((e-2 (vector-ref arg-3 1))) (vector 0 e-2))) (else (let ((e-5 (vector-ref arg-3 1))) (arg-4 e-5)))))) +(define AnytypeC-45CoreC-45Check-infer (lambda (arg-1 arg-2 arg-3 arg-4) (case (vector-ref arg-4 0) ((0) (let ((e-2 (vector-ref arg-4 1))) (vector 1 (cons (DataC-45Vect-index e-2 arg-3) (AnytypeC-45CoreC-45Check-oneAt arg-1 arg-2 e-2))))) ((1) (let ((e-5 (vector-ref arg-4 1))) (let ((e-6 (vector-ref arg-4 2))) (let ((e-7 (vector-ref arg-4 3))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 (+ arg-2 1) (cons e-6 arg-3) e-7) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (let ((e-8 (car e-3))) (let ((e-4 (cdr e-3))) (let ((sc3 (let ((e-25 (vector-ref arg-1 4))) ((e-25 e-8) e-5)))) (cond ((equal? sc3 1) (vector 1 (cons (vector 3 e-5 e-6 e-2) e-4))) (else (vector 0 3)))))))))))))) ((2) (let ((e-10 (vector-ref arg-4 1))) (let ((e-11 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-10) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (case (vector-ref e-2 0) ((3) (let ((e-1 (vector-ref e-2 1))) (let ((e-5 (vector-ref e-2 2))) (let ((e-4 (vector-ref e-2 3))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-check arg-1 arg-2 arg-3 e-11 e-5) (lambda (u--ux) (vector 1 (cons e-4 (AnytypeC-45CoreC-45Check-addU arg-1 e-3 (AnytypeC-45CoreC-45Check-scaleU arg-1 e-1 u--ux))))))))))(else (vector 0 0)))))))))) ((3) (let ((e-14 (vector-ref arg-4 1))) (let ((e-15 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-14) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-15) (lambda (_-1) (let ((e-5 (car _-1))) (let ((e-4 (cdr _-1))) (vector 1 (cons (vector 4 e-2 e-5) (AnytypeC-45CoreC-45Check-addU arg-1 e-3 e-4)))))))))))))) ((4) (let ((e-18 (vector-ref arg-4 1))) (let ((e-19 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-18) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (case (vector-ref e-2 0) ((4) (let ((e-1 (vector-ref e-2 1))) (let ((e-4 (vector-ref e-2 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 (+ (+ arg-2 1) 1) (cons e-4 (cons e-1 arg-3)) e-19) (lambda (_-1) (let ((e-6 (car _-1))) (let ((e-5 (cdr _-1))) (let ((e-8 (car e-5))) (let ((e-7 (cdr e-5))) (let ((e-10 (car e-7))) (let ((e-9 (cdr e-7))) (let ((sc6 (let ((sc7 (let ((e-29 (vector-ref arg-1 4))) ((e-29 e-10) (let ((e-53 (vector-ref arg-1 1))) e-53))))) (cond ((equal? sc7 1) (let ((e-29 (vector-ref arg-1 4))) ((e-29 e-8) (let ((e-53 (vector-ref arg-1 1))) e-53)))) (else 0))))) (cond ((equal? sc6 1) (vector 1 (cons e-6 (AnytypeC-45CoreC-45Check-addU arg-1 e-3 e-9)))) (else (vector 0 3)))))))))))))))(else (vector 0 1)))))))))) ((5) (vector 1 (cons (vector 0 ) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))) ((6) (vector 1 (cons (vector 1 ) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))) (else (let ((e-27 (vector-ref arg-4 1))) (vector 1 (cons (vector 2 e-27) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))))))) +(define AnytypeC-45CoreC-45Check-check (lambda (arg-1 arg-2 arg-3 arg-4 arg-5) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 arg-4) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (let ((sc1 (AnytypeC-45CoreC-45Conversion-convertible arg-1 e-2 arg-5))) (cond ((equal? sc1 1) (vector 1 e-3)) (else (vector 0 2)))))))))) +(define AnytypeC-45Kernel-checkAgainst (lambda (arg-1 arg-2 arg-3) (let ((sc0 (AnytypeC-45CoreC-45Check-check arg-1 0 '() arg-2 arg-3))) (case (vector-ref sc0 0) ((0) (let ((e-2 (vector-ref sc0 1))) (vector 0 e-2))) (else (vector 1 (vector 0 ))))))) +(define Builtin-fst (lambda (arg-2) (let ((e-2 (car arg-2))) e-2))) +(define AnytypeC-45Kernel-checkClosed (lambda (arg-1 arg-2) (let ((sc0 (AnytypeC-45CoreC-45Check-infer arg-1 0 '() arg-2))) (case (vector-ref sc0 0) ((0) (let ((e-2 (vector-ref sc0 1))) (vector 0 e-2))) (else (let ((e-5 (vector-ref sc0 1))) (vector 1 (AnytypeC-45CoreC-45Normalise-normalise (Builtin-fst e-5))))))))) +(define TestsC-45Main-four (vector 1 TestsC-45Main-three)) +(define TestsC-45Main-five (vector 1 TestsC-45Main-four)) +(define TestsC-45Main-affineCases (lambda () (cons (cons "affine: use once at 1" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 1 ) (vector 0 0)))))) (cons (cons "affine: drop at 1 (weakening allowed)" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 1 ) (vector 5 )))))) (cons (cons "affine: double use at 1" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 1 ) TestsC-45Main-dup))))) (cons (cons "affine: double use at omega" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) csegen-67)))) (cons (cons "affine: erased binder unused" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 0 (vector 1 ) (vector 5 )))))) (cons (cons "affine: erased binder used" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 0 (vector 1 ) (vector 0 0)))))) (cons (cons "affine: omega-arrow scales usage past 1 (BUG-001 rule)" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 1 ) csegen-81))))) (cons (cons "affine: omega-arrow scaling admitted at omega" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 2 (vector 1 ) csegen-81))))) (cons (cons "affine: let-pair, each component once" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 4 (vector 1 ) (vector 0 )) (vector 4 (vector 0 0) (vector 3 (vector 0 1) (vector 0 0)))))))) (cons (cons "affine: let-pair, first component twice" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 4 (vector 1 ) (vector 0 )) (vector 4 (vector 0 0) (vector 3 (vector 0 1) (vector 0 1)))))))) (cons (cons "affine: conversion Bits(2+3) against Bits 5" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkAgainst (AnytypeC-45GradeC-45Affine-AffineAlgebra) csegen-107 (vector 2 TestsC-45Main-five))))) (cons (cons "affine: conversion Bits(2+2) against Bits 5" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkAgainst (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 7 (vector 2 TestsC-45Main-two TestsC-45Main-two)) (vector 2 TestsC-45Main-five))))) (cons (cons "affine: application converts Bits(2+3) argument at Bits 5" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 2 (vector 1 1 (vector 2 TestsC-45Main-five) (vector 0 0)) csegen-107))))) '()))))))))))))))) +(define AnytypeC-45GradeC-45Exact-eqRefl (lambda (arg-0) (vector 0 ))) +(define AnytypeC-45GradeC-45Exact-addMonoC-39 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (AnytypeC-45GradeC-45Exact-eqRefl (+ arg-1 arg-3)))) +(define AnytypeC-45GradeC-45Exact-eqTrans (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (AnytypeC-45GradeC-45Exact-eqRefl arg-2))) +(define AnytypeC-45GradeC-45Exact-mulMonoC-39 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (AnytypeC-45GradeC-45Exact-eqRefl (* arg-1 arg-3)))) +(define PreludeC-45Basics-irrelevantEq (vector 0 )) +(define DataC-45Nat-multAssociative (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-multDistributesOverPlusLeft (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-multDistributesOverPlusRight (lambda (arg-0 arg-1 arg-2) PreludeC-45Basics-irrelevantEq)) +(define DataC-45Nat-plusZeroRightNeutral (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-multOneLeftNeutral (lambda (arg-0) (DataC-45Nat-plusZeroRightNeutral arg-0))) +(define DataC-45Nat-multOneRightNeutral (lambda (arg-0) PreludeC-45Basics-irrelevantEq)) +(define DataC-45Nat-multZeroLeftZero (lambda (arg-0) (vector 0 ))) +(define DataC-45Nat-multZeroRightZero (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else (let ((e-0 (- arg-0 1))) (DataC-45Nat-multZeroRightZero e-0)))))) +(define DataC-45Nat-plusAssociative (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-plusCommutative (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) PreludeC-45Basics-irrelevantEq)(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-plusZeroLeftNeutral (lambda (arg-0) (vector 0 ))) +(define PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Exact-natEqSound (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 ))(else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 eta-0)) arg-2))))(else (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 eta-0)) arg-2))(else (vector 0 ))))))) +(define DataC-45So-soToEq (lambda (arg-1) (vector 0 ))) +(define AnytypeC-45GradeC-45Exact-soSound (lambda (arg-0 arg-1 arg-2) (AnytypeC-45GradeC-45Exact-natEqSound arg-0 arg-1 (DataC-45So-soToEq arg-2)))) +(define DecidableC-45EqualityC-45Core-decEqCong (lambda (arg-6) (case (vector-ref arg-6 0) ((0) (vector 0 (vector 0 ))) (else (let ((e-3 (vector-ref arg-6 1))) (vector 1 (lambda (u--c) (e-3 PreludeC-45Basics-irrelevantEq)))))))) +(define DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define DecidableC-45Equality-u--decEq_DecEq_Nat (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 (vector 0 )))(else (vector 1 (lambda (eta-0) (PreludeC-45Uninhabited-absurd (lambda (eta-1) (DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-124C-41 eta-1)) eta-0))))))(else (let ((e-0 (- arg-0 1))) (cond ((equal? arg-1 0) (vector 1 (lambda (eta-0) (PreludeC-45Uninhabited-absurd (lambda (eta-1) (DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-124C-41 eta-1)) eta-0))))(else (let ((e-2 (- arg-1 1))) (DecidableC-45EqualityC-45Core-decEqCong (DecidableC-45Equality-u--decEq_DecEq_Nat e-0 e-2)))))))))) +(define AnytypeC-45GradeC-45Exact-ExactAlgebra (lambda () (vector 0 1 (lambda (eta-0) (lambda (eta-1) (+ eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (* eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (or (and (= eta-0 eta-1) 1) 0))) (lambda (eta-0) (lambda (eta-1) (DecidableC-45Equality-u--decEq_DecEq_Nat eta-0 eta-1))) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-plusAssociative u--a u--b u--c)))) (lambda (eta-0) (lambda (eta-1) (DataC-45Nat-plusCommutative eta-0 eta-1))) (lambda (eta-0) (DataC-45Nat-plusZeroLeftNeutral eta-0)) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multAssociative u--a u--b u--c)))) (lambda (eta-0) (DataC-45Nat-multOneLeftNeutral eta-0)) (lambda (eta-0) (DataC-45Nat-multOneRightNeutral eta-0)) (lambda (eta-0) (DataC-45Nat-multZeroLeftZero eta-0)) (lambda (eta-0) (DataC-45Nat-multZeroRightZero eta-0)) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multDistributesOverPlusRight u--a u--b u--c)))) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multDistributesOverPlusLeft u--a u--b u--c)))) (lambda (eta-0) (AnytypeC-45GradeC-45Exact-eqRefl eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (AnytypeC-45GradeC-45Exact-eqTrans eta-0 eta-1 eta-2 eta-3 eta-4)))))) (lambda (u--a) (lambda (u--b) (lambda (u--s1) (lambda (_-3986) (AnytypeC-45GradeC-45Exact-soSound u--a u--b u--s1))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Exact-addMonoC-39 eta-0 eta-1 eta-2 eta-3 eta-4 eta-5))))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Exact-mulMonoC-39 eta-0 eta-1 eta-2 eta-3 eta-4 eta-5)))))))))) +(define TestsC-45Main-exactCases (lambda () (cons (cons "exact: use once at 1" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 1 (vector 1 ) (vector 0 0)))))) (cons (cons "exact: drop at 1 REJECTED (the discipline split)" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 1 (vector 1 ) (vector 5 )))))) (cons (cons "exact: double use at 1" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 1 (vector 1 ) TestsC-45Main-dup))))) (cons (cons "exact: double use at exactly 2" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 2 (vector 1 ) TestsC-45Main-dup))))) (cons (cons "exact: zero binder unused" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 0 (vector 1 ) (vector 5 )))))) (cons (cons "exact: zero binder used" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 0 (vector 1 ) (vector 0 0)))))) '())))))))) +(define System-exitWith (lambda (arg-2 arg-3) (if (null? arg-3) (let ((e-2 (cdr arg-2))) ((e-2 'erased) (lambda (eta-0) (System-prim__exit 0 eta-0)))) (let ((e-0 (car arg-3))) (let ((e-2 (cdr arg-2))) ((e-2 'erased) (lambda (eta-0) (System-prim__exit e-0 eta-0)))))))) +(define System-exitFailure (lambda (arg-2) (System-exitWith arg-2 (cons 1 (vector 0 ))))) +(define PreludeC-45TypesC-45SnocList-C-60C-62C-62 (lambda (arg-1 arg-2) (if (null? arg-1) arg-2 (let ((e-2 (car arg-1))) (let ((e-3 (cdr arg-1))) (PreludeC-45TypesC-45SnocList-C-60C-62C-62 e-2 (cons e-3 arg-2))))))) +(define PreludeC-45TypesC-45List-filterAppend (lambda (arg-1 arg-2 arg-3) (if (null? arg-3) (PreludeC-45TypesC-45SnocList-C-60C-62C-62 arg-1 '()) (let ((e-1 (car arg-3))) (let ((e-2 (cdr arg-3))) (let ((sc1 (arg-2 e-1))) (cond ((equal? sc1 1) (PreludeC-45TypesC-45List-filterAppend (cons arg-1 e-1) arg-2 e-2)) (else (PreludeC-45TypesC-45List-filterAppend arg-1 arg-2 e-2))))))))) +(define PreludeC-45TypesC-45List-lengthPlus (lambda (arg-1 arg-2) (if (null? arg-2) arg-1 (let ((e-3 (cdr arg-2))) (PreludeC-45TypesC-45List-lengthPlus (+ arg-1 1) e-3))))) +(define PreludeC-45TypesC-45List-lengthTR (lambda (ext-0) (PreludeC-45TypesC-45List-lengthPlus 0 ext-0))) +(define PreludeC-45TypesC-45List-reverseOnto (lambda (arg-1 arg-2) (if (null? arg-2) arg-1 (let ((e-2 (car arg-2))) (let ((e-3 (cdr arg-2))) (PreludeC-45TypesC-45List-reverseOnto (cons e-2 arg-1) e-3)))))) +(define PreludeC-45TypesC-45List-reverse (lambda (ext-0) (PreludeC-45TypesC-45List-reverseOnto '() ext-0))) +(define PreludeC-45TypesC-45List-tailRecAppend (lambda (arg-1 arg-2) (PreludeC-45TypesC-45List-reverseOnto arg-2 (PreludeC-45TypesC-45List-reverse arg-1)))) +(define PreludeC-45Interfaces-when (lambda (arg-1 arg-2 arg-3) (cond ((equal? arg-2 1) (arg-3)) (else (let ((e-2 (vector-ref arg-1 1))) ((e-2 'erased) (vector 0 ))))))) +(define PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 1)(else 0))) ((equal? arg-0 1) (cond ((equal? arg-1 1) 1)(else 0))) ((equal? arg-0 2) (cond ((equal? arg-1 2) 1)(else 0)))(else 0)))) +(define PreludeC-45EqOrd-u--C-60_Ord_Integer (lambda (arg-0 arg-1) (let ((sc0 (or (and (< arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-61C-61_Eq_Integer (lambda (arg-0 arg-1) (let ((sc0 (or (and (= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--compare_Ord_Integer (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-60_Ord_Integer arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else (let ((sc1 (PreludeC-45EqOrd-u--C-61C-61_Eq_Integer arg-0 arg-1))) (cond ((equal? sc1 1) 1) (else 2)))))))) +(define PreludeC-45Types-u--C-62_Ord_Nat (lambda (arg-0 arg-1) (PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering (PreludeC-45EqOrd-u--compare_Ord_Integer arg-0 arg-1) 2))) +(define PreludeC-45Show-firstCharIs (lambda (arg-0 arg-1) (cond ((equal? arg-1 "") 0)(else (arg-0 (string-ref arg-1 0)))))) +(define PreludeC-45Show-showParens (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) arg-1) (else (string-append "(" (string-append arg-1 ")")))))) +(define PreludeC-45EqOrd-u--C-61C-61_Eq_Char (lambda (arg-0 arg-1) (let ((sc0 (or (and (char=? arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-47C-61_Eq_Ordering (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else 1))))) +(define PreludeC-45Show-precCon (lambda (arg-0) (case (vector-ref arg-0 0) ((0) 0) ((1) 1) ((2) 2) ((3) 3) ((4) 4) ((5) 5) (else 6)))) +(define PreludeC-45Show-u--compare_Ord_Prec (lambda (arg-0 arg-1) (case (vector-ref arg-0 0) ((4) (let ((e-0 (vector-ref arg-0 1))) (case (vector-ref arg-1 0) ((4) (let ((e-1 (vector-ref arg-1 1))) (PreludeC-45EqOrd-u--compare_Ord_Integer e-0 e-1)))(else (PreludeC-45EqOrd-u--compare_Ord_Integer (PreludeC-45Show-precCon arg-0) (PreludeC-45Show-precCon arg-1))))))(else (PreludeC-45EqOrd-u--compare_Ord_Integer (PreludeC-45Show-precCon arg-0) (PreludeC-45Show-precCon arg-1)))))) +(define PreludeC-45Show-u--C-62C-61_Ord_Prec (lambda (arg-0 arg-1) (PreludeC-45EqOrd-u--C-47C-61_Eq_Ordering (PreludeC-45Show-u--compare_Ord_Prec arg-0 arg-1) 0))) +(define PreludeC-45Show-primNumShow (lambda (arg-1 arg-2 arg-3) (let ((u--str (arg-1 arg-3))) (PreludeC-45Show-showParens (let ((sc0 (PreludeC-45Show-u--C-62C-61_Ord_Prec arg-2 (vector 5 )))) (cond ((equal? sc0 1) (PreludeC-45Show-firstCharIs (lambda (arg-0) (PreludeC-45EqOrd-u--C-61C-61_Eq_Char arg-0 #\-)) u--str)) (else 0))) u--str)))) +(define PreludeC-45Show-u--showPrec_Show_Integer (lambda (ext-0 ext-1) (PreludeC-45Show-primNumShow (lambda (eta-0) (number->string eta-0)) ext-0 ext-1))) +(define PreludeC-45Show-u--show_Show_Integer (lambda (arg-0) (PreludeC-45Show-u--showPrec_Show_Integer (vector 0 ) arg-0))) +(define PreludeC-45Show-u--show_Show_Nat (lambda (arg-0) (PreludeC-45Show-u--show_Show_Integer arg-0))) +(define PreludeC-45Types-u--traverse_Traversable_List (lambda (arg-3 arg-4 arg-5) (if (null? arg-5) (let ((e-2 (vector-ref arg-3 1))) ((e-2 'erased) '())) (let ((e-2 (car arg-5))) (let ((e-3 (cdr arg-5))) (let ((e-4 (vector-ref arg-3 2))) ((((e-4 'erased) 'erased) (let ((e-6 (vector-ref arg-3 2))) ((((e-6 'erased) 'erased) (let ((e-10 (vector-ref arg-3 1))) ((e-10 'erased) (lambda (eta-0) (lambda (eta-1) (cons eta-0 eta-1)))))) (arg-4 e-2)))) (PreludeC-45Types-u--traverse_Traversable_List arg-3 arg-4 e-3)))))))) +(define TestsC-45Main-main (lambda (ext-0) (let ((act-1 (PreludeC-45IO-prim__putStr "=== anytype kernel golden matrix ===\xa;" ext-0))) (let ((act-2 ((PreludeC-45Types-u--traverse_Traversable_List csegen-6 (lambda (eta-0) (TestsC-45Main-report eta-0)) (PreludeC-45TypesC-45List-tailRecAppend (TestsC-45Main-affineCases) (TestsC-45Main-exactCases))) ext-0))) (let ((u--bad (PreludeC-45TypesC-45List-lengthTR (PreludeC-45TypesC-45List-filterAppend '() (lambda (eta-0) (cond ((equal? eta-0 1) 0) (else 1))) act-2)))) (let ((act-3 (PreludeC-45IO-prim__putStr (string-append (string-append "=== " (string-append (PreludeC-45Show-u--show_Show_Nat (PreludeC-45TypesC-45List-lengthTR act-2)) (string-append " cases, " (string-append (PreludeC-45Show-u--show_Show_Nat u--bad) " failure(s) ===")))) "\xa;") ext-0))) ((PreludeC-45Interfaces-when csegen-6 (PreludeC-45Types-u--C-62_Ord_Nat u--bad 0) (lambda () (System-exitFailure (cons (vector csegen-6 (lambda (u--b) (lambda (u--a) (lambda (arg-10411) (lambda (arg-10414) (lambda (world-0) (let ((act-4 (arg-10411 world-0))) ((arg-10414 act-4) world-0))))))) (lambda (u--a) (lambda (arg-10425) (lambda (world-0) (let ((act-4 (arg-10425 world-0))) (act-4 world-0)))))) (lambda (u--a) (lambda (arg-13095) arg-13095)))))) ext-0))))))) +(define PreludeC-45Types-prim__integerToNat (lambda (arg-0) (let ((sc0 (or (and (<= 0 arg-0) 1) 0))) (cond ((equal? sc0 0) 0)(else arg-0))))) +(define PreludeC-45EqOrd-compareInteger (lambda (ext-0 ext-1) (PreludeC-45EqOrd-u--compare_Ord_Integer ext-0 ext-1))) +(define PrimIO-unsafeCreateWorld (lambda (arg-1) (arg-1 #f))) +(define PrimIO-unsafePerformIO (lambda (arg-1) (PrimIO-unsafeCreateWorld (lambda (u--w) (let ((eff-0 (arg-1 u--w))) eff-0))))) +(collect-request-handler (lambda () (collect) (blodwen-run-finalisers))) +(PrimIO-unsafePerformIO (lambda (eta-0) (TestsC-45Main-main eta-0))) + (collect 4) + (blodwen-run-finalisers) + + ) \ No newline at end of file diff --git a/build/exec/anytype-tests_app/compileChez b/build/exec/anytype-tests_app/compileChez new file mode 100755 index 0000000..814d2ed --- /dev/null +++ b/build/exec/anytype-tests_app/compileChez @@ -0,0 +1 @@ +(parameterize ([optimize-level 3] [compile-file-message #f]) (compile-program "/home/hyperpolymath/developer/hyper-repos/_LANGUAGES _SET/anytype/.claude/worktrees/anytype-mvp-kernel/build/exec/anytype-tests_app/anytype-tests.ss")) \ No newline at end of file diff --git a/build/exec/anytype-tests_app/libidris2_support.so b/build/exec/anytype-tests_app/libidris2_support.so new file mode 100644 index 0000000000000000000000000000000000000000..8c45d9fb9f1e7d1d52f644f6c20f46ed0bf4ead8 GIT binary patch literal 50080 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 bRYx(d>Q}P#8OTuOAOEeC_(%ydHJ1NB$wCl! literal 0 HcmV?d00001 diff --git a/scripts/check-idris2-proofs.sh b/scripts/check-idris2-proofs.sh new file mode 100755 index 0000000..7bd1c4a --- /dev/null +++ b/scripts/check-idris2-proofs.sh @@ -0,0 +1,164 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: MPL-2.0 +# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <6759885+hyperpolymath@users.noreply.github.com> +# +# Type-check every Idris2 module in the repository. +# +# This script is the single source of truth for "does the Idris2 in this repo +# compile?". Both CI (.github/workflows/idris2-proof.yml) and the Justfile +# (`just proof-check-idris2`) call it, so a green local run and a green CI run +# mean the same thing. +# +# Adapted from ideas-to-alphas scripts/check-idris2-proofs.sh, which documents +# why each rule exists. The estate-wide failure mode it replaces: the old +# build/just/proofs.just recipe did `exit 0` when idris2 was absent, so every +# proof in this repo reported green on machines where nothing could check them. +# If you extend this script, the test to apply is not "does it pass?" but +# "have I watched it fail?". +# +# Three rules: +# * A missing toolchain is a FAILURE, never a skip. +# * Every module is checked from its own source root (module ABI.Foreign +# lives at /ABI/Foreign.idr; a wrong root fails on the name, not on +# the real errors). +# * A module that is not in the MANIFEST is an error. New Idris2 anywhere +# in the tree is gated by default; you cannot add an unchecked proof. +# +# Exit codes: 0 = all gated modules check and all quarantined modules still +# fail as expected; 1 = otherwise. + +set -euo pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")/.." +ROOT="$PWD" + +# --- MANIFEST ----------------------------------------------------------------- +# Format: |||| +# +# gated -- must type-check. A failure fails this script and CI. +# quarantine -- known-broken RSR template stock, kept for reference. Must +# CONTINUE to fail; if one starts passing the script fails and +# tells you to promote it, so the list cannot silently rot. +# Verdicts measured 2026-07-21 under Idris2 0.7.0. +MANIFEST=( + "src/kernel|Anytype/Grade/Algebra.idr|gated||L2 grade-algebra interface: laws are proof fields" + "src/kernel|Anytype/Grade/Affine.idr|gated||{0,1,omega} instance mirroring affinescript lib/quantity.ml" + "src/kernel|Anytype/Grade/Exact.idr|gated||exact-usage Nat instance: the distinct-discipline demo" + "src/kernel|Anytype/Core/Syntax.idr|gated||graded STLC syntax; TNat total by construction" + "src/kernel|Anytype/Core/Normalise.idr|gated||the L1 totality artefact" + "src/kernel|Anytype/Core/Conversion.idr|gated||normalise-and-compare" + "src/kernel|Anytype/Core/Check.idr|gated||usage-counting bidirectional checker" + "src/kernel|Anytype/Kernel.idr|gated||public API" + "src/interface|Abi/Types.idr|gated||ABI seam types" + "src/interface|Abi/Layout.idr|gated||ABI layout proofs" + "src/interface|Abi/Foreign.idr|gated||ABI FFI declarations" + ".machine_readable/coaptation/core|Coaptation.idr|gated||coaptation skeleton; compiles, semantically a placeholder" + "verification/tests/kernel|Tests/Main.idr|gated|-p anytype|golden matrix; needs anytype installed (just test does this)" + "verification/proofs/idris2|ABI/Foreign.idr|gated||the one template verification module that compiles" + "verification/proofs/idris2|Types.idr|quarantine||RSR template stock, never compiled: LTE needs Data.Nat" + "verification/proofs/idris2|ABI/Platform.idr|quarantine||template stock: LTE needs Data.Nat, then undefined lteRefl" + "verification/proofs/idris2|ABI/Layout.idr|quarantine||template stock: NonZero/modNatNZ need Data.Nat" + "verification/proofs/idris2|ABI/Pointers.idr|quarantine||template stock: erased .nonNull projected into a value position" + "verification/proofs/idris2|ABI/Compliance.idr|quarantine||depends on quarantined ABI.Layout" +) + +# --- toolchain: absent means FAIL, never skip --------------------------------- +if ! command -v idris2 >/dev/null 2>&1; then + cat >&2 <<'EOF' +FAIL: idris2 not found on PATH. + +This is deliberately fatal. The recipe this script replaces did `exit 0` here +with "SKIP: idris2 not installed", which meant every proof in this repo +reported green on machines where nothing could check them. An unrunnable gate +that reports success is worse than no gate: it manufactures false confidence. + +Install Idris2 0.7.0, or run this in CI where the workflow installs it. +EOF + exit 1 +fi + +echo "=== Idris2 proof check ===" +idris2 --version +echo + +# --- verdict ------------------------------------------------------------------ +# `idris2 --check` EXITS 0 ON A MISSING IMPORT while printing "Error: Module X +# not found". Testing $? alone is therefore unsound. We require BOTH a zero +# exit AND no "Error:" in the output. +check_module() { + local root="$1" rel="$2" args="$3" out rc + set +e + # shellcheck disable=SC2086 + out="$(cd "$ROOT/$root" && idris2 $args --check "$rel" 2>&1)" + rc=$? + set -e + if [ "$rc" -eq 0 ] && ! grep -q '^Error:' <<<"$out"; then + LAST_OUT="" + return 0 + fi + LAST_OUT="$out" + return 1 +} + +fails=0 +unexpected_pass=0 + +for entry in "${MANIFEST[@]}"; do + IFS='|' read -r root rel status args note <<<"$entry" + printf ' %-34s %-22s ' "$root" "$rel" + + if check_module "$root" "$rel" "$args"; then + if [ "$status" = "gated" ]; then + echo "PASS" + else + echo "PASS -- UNEXPECTED" + echo " This module is marked 'quarantine' but now type-checks." + echo " Promote it to 'gated' in the MANIFEST and update PROOF-STATUS." + unexpected_pass=$((unexpected_pass + 1)) + fi + else + if [ "$status" = "gated" ]; then + echo "FAIL" + printf '%s\n' "${LAST_OUT//$'\n'/$'\n '}" | sed '1s/^/ /' + fails=$((fails + 1)) + else + echo "fail (quarantined, expected)" + echo " reason: $note" + fi + fi +done + +# --- no unlisted Idris2 anywhere in the tree ---------------------------------- +# The anti-recurrence rule: a module absent from the MANIFEST is an error, so +# new Idris2 is gated by default rather than by remembering. +echo +echo "=== manifest coverage ===" +listed="$(for e in "${MANIFEST[@]}"; do IFS='|' read -r r m _ _ _ <<<"$e"; echo "$r/$m"; done | sort)" +found="$(find . -name '*.idr' -not -path './.git/*' -not -path '*/build/*' -not -path './.claude/*' \ + | sed 's|^\./||' | sort)" +unlisted="$(comm -13 <(echo "$listed") <(echo "$found") || true)" +missing="$(comm -23 <(echo "$listed") <(echo "$found") || true)" + +if [ -n "$unlisted" ]; then + echo "FAIL: Idris2 modules present on disk but absent from the MANIFEST:" + printf ' %s\n' "${unlisted//$'\n'/$'\n '}" + echo + echo " Every .idr in this repo must be listed in scripts/check-idris2-proofs.sh," + echo " as 'gated' (it must compile) or 'quarantine' (known-broken, tracked)." + fails=$((fails + 1)) +fi + +if [ -n "$missing" ]; then + echo "FAIL: MANIFEST lists modules that do not exist (stale entries):" + printf ' %s\n' "${missing//$'\n'/$'\n '}" + fails=$((fails + 1)) +fi + +[ -z "$unlisted$missing" ] && echo " all $(echo "$found" | wc -l | tr -d ' ') .idr files accounted for" + +echo +if [ "$fails" -gt 0 ] || [ "$unexpected_pass" -gt 0 ]; then + echo "RESULT: FAIL ($fails failure(s), $unexpected_pass unexpected pass(es))" + exit 1 +fi +echo "RESULT: PASS -- all gated modules type-check; quarantined modules still fail as recorded" diff --git a/src/kernel/Anytype/Core/Check.idr b/src/kernel/Anytype/Core/Check.idr new file mode 100644 index 0000000..41a3980 --- /dev/null +++ b/src/kernel/Anytype/Core/Check.idr @@ -0,0 +1,97 @@ +||| anytype L1+L2: the usage-counting bidirectional checker. +||| +||| Output-usage formulation (Atkey/QTT style): `infer` returns the type +||| together with a usage vector saying how heavily each free variable +||| was used. Grade accounting: +||| Var i — usage gone at i, gzero elsewhere +||| App f x — Uf `gadd` (q `gmul` Ux), scaling through the arrow +||| Lam q A b — admit iff computed usage of the binder `gleq` q +||| That single inequality is what makes the discipline pluggable: +||| under the affine order dropping a grade-1 binder passes (0 <= 1), +||| under the exact order it fails (0 /= 1). Same rule, distinct +||| disciplines. +||| +||| Conversion is invoked at exactly one place: the check/infer mode +||| switch in `check`. +module Anytype.Core.Check + +import Data.Fin +import Data.Vect +import Anytype.Grade.Algebra +import Anytype.Core.Syntax +import Anytype.Core.Conversion + +%default total + +||| Typing context: declared types of the free variables (grades live +||| on binders; usage is computed, not declared, for the context). +public export +Ctx : Type -> Nat -> Type +Ctx g n = Vect n (Ty g) + +||| Computed usage: one grade per free variable. +public export +Usage : Type -> Nat -> Type +Usage g n = Vect n g + +zeroU : GradeAlgebra g -> (n : Nat) -> Usage g n +zeroU alg n = replicate n alg.gzero + +oneAt : GradeAlgebra g -> {n : Nat} -> Fin n -> Usage g n +oneAt alg FZ = alg.gone :: zeroU alg _ +oneAt alg (FS i) = alg.gzero :: oneAt alg i + +addU : GradeAlgebra g -> Usage g n -> Usage g n -> Usage g n +addU alg = zipWith alg.gadd + +scaleU : GradeAlgebra g -> g -> Usage g n -> Usage g n +scaleU alg q = map (alg.gmul q) + +mutual + ||| Synthesise a type and a usage vector. + public export + infer : GradeAlgebra g -> {n : Nat} -> Ctx g n -> Term g n -> + Either CheckError (Ty g, Usage g n) + infer alg ctx (Var i) = Right (index i ctx, oneAt alg i) + infer alg ctx (Lam q a body) = do + (tb, u) <- infer alg (a :: ctx) body + let (u0 :: rest) = u + if alg.gleq u0 q + then Right (TArr q a tb, rest) + else Left UsageViolation + infer alg ctx (App f x) = do + (tf, uf) <- infer alg ctx f + case tf of + TArr q a b => do + ux <- check alg ctx x a + Right (b, addU alg uf (scaleU alg q ux)) + _ => Left NotAFunction + infer alg ctx (Pair s t) = do + (ts, us) <- infer alg ctx s + (tt, ut) <- infer alg ctx t + Right (TProd ts tt, addU alg us ut) + infer alg ctx (LetPair p body) = do + (tp, up) <- infer alg ctx p + case tp of + TProd a b => do + -- components bound at grade gone: FS FZ = first, FZ = second + (tr, u) <- infer alg (b :: a :: ctx) body + let (u1 :: u0 :: rest) = u + if alg.gleq u0 alg.gone && alg.gleq u1 alg.gone + then Right (tr, addU alg up rest) + else Left UsageViolation + _ => Left NotAPair + infer alg ctx TT = Right (TUnit, zeroU alg n) + infer alg ctx (BLit _) = Right (TBool, zeroU alg n) + infer alg ctx (WordLit w) = Right (TBits w, zeroU alg n) + + ||| Check against an expected type: infer, then normalise-and-compare. + ||| This is the single conversion site. + public export + check : GradeAlgebra g -> {n : Nat} -> Ctx g n -> Term g n -> Ty g -> + Either CheckError (Usage g n) + check alg ctx t ty = do + (ty', u) <- infer alg ctx t + if convertible alg ty' ty + then Right u + else Left TypeMismatch diff --git a/src/kernel/Anytype/Core/Conversion.idr b/src/kernel/Anytype/Core/Conversion.idr new file mode 100644 index 0000000..3444011 --- /dev/null +++ b/src/kernel/Anytype/Core/Conversion.idr @@ -0,0 +1,35 @@ +||| anytype L1: conversion is normalise-and-compare — one primitive +||| relation (equality of normal forms), no coercion machinery. Grades +||| on arrows are compared with the algebra's decidable equality; there +||| is no grade subtyping in conversion. +module Anytype.Core.Conversion + +import Anytype.Grade.Algebra +import Anytype.Core.Syntax +import Anytype.Core.Normalise + +%default total + +||| Structural equality of canonical type-level naturals. +tnatEq : TNat -> TNat -> Bool +tnatEq NZ NZ = True +tnatEq (NS a) (NS b) = tnatEq a b +tnatEq _ _ = False + +||| Structural equality of normalised types. +structEq : GradeAlgebra g -> Ty g -> Ty g -> Bool +structEq _ TUnit TUnit = True +structEq _ TBool TBool = True +structEq _ (TBits v) (TBits w) = tnatEq v w +structEq alg (TArr q a b) (TArr q' a' b') = + case alg.gdec q q' of + Yes _ => structEq alg a a' && structEq alg b b' + No _ => False +structEq alg (TProd a b) (TProd a' b') = + structEq alg a a' && structEq alg b b' +structEq _ _ _ = False + +||| Are two types equal up to type-level computation? +public export +convertible : GradeAlgebra g -> Ty g -> Ty g -> Bool +convertible alg s t = structEq alg (normalise s) (normalise t) diff --git a/src/kernel/Anytype/Core/Normalise.idr b/src/kernel/Anytype/Core/Normalise.idr new file mode 100644 index 0000000..8a17ea5 --- /dev/null +++ b/src/kernel/Anytype/Core/Normalise.idr @@ -0,0 +1,41 @@ +||| anytype L1: normalisation of type-level computation. +||| +||| `TNat` has no recursion constructor, so evaluation is structural and +||| this whole module is `%default total` with no escape hatches — this +||| machine-checked totality IS the MVP totality gate: conversion below +||| is decidable because everything here terminates by construction. +module Anytype.Core.Normalise + +import Anytype.Core.Syntax + +%default total + +||| Evaluate a type-level natural. +public export +nval : TNat -> Nat +nval NZ = 0 +nval (NS t) = S (nval t) +nval (NPlus a b) = nval a + nval b +nval (NMul a b) = nval a * nval b + +||| Canonical (NZ/NS-only) form of a Nat. +public export +tnatOfNat : Nat -> TNat +tnatOfNat Z = NZ +tnatOfNat (S k) = NS (tnatOfNat k) + +||| Canonical form of a type-level natural: normalise-and-compare's +||| "normalise" half at the index level. +public export +nnorm : TNat -> TNat +nnorm = tnatOfNat . nval + +||| Normalise a type: canonicalise every `TBits` index, recurse +||| structurally everywhere else. +public export +normalise : Ty g -> Ty g +normalise TUnit = TUnit +normalise TBool = TBool +normalise (TBits w) = TBits (nnorm w) +normalise (TArr q a b) = TArr q (normalise a) (normalise b) +normalise (TProd a b) = TProd (normalise a) (normalise b) diff --git a/src/kernel/Anytype/Core/Syntax.idr b/src/kernel/Anytype/Core/Syntax.idr new file mode 100644 index 0000000..2a5b624 --- /dev/null +++ b/src/kernel/Anytype/Core/Syntax.idr @@ -0,0 +1,71 @@ +||| anytype L1: syntax of the MVP core — a bidirectional simply-graded +||| lambda calculus. +||| +||| The type-index language `TNat` deliberately has NO fixpoint or +||| recursion constructor: type-level computation is total *by +||| construction*, which is the MVP discharge of systemet's L1 totality +||| gate (a syntactic gate, not a termination analysis — see EXPLAINME). +||| +||| Terms are intrinsically scoped (de Bruijn via `Fin`), parameterised +||| by the grade carrier `g` because binders and arrows carry grades. +module Anytype.Core.Syntax + +import Data.Fin + +%default total + +||| Total type-level naturals: the index language for `TBits`. +public export +data TNat : Type where + NZ : TNat + NS : TNat -> TNat + NPlus : TNat -> TNat -> TNat + NMul : TNat -> TNat -> TNat + +||| Types, parameterised by the grade carrier. +public export +data Ty : Type -> Type where + TUnit : Ty g + TBool : Ty g + ||| An indexed family so conversion has real work to do: + ||| `TBits (NPlus 2 3)` and `TBits 5` are convertible, not equal. + TBits : TNat -> Ty g + ||| Graded function arrow q : A -> B. + TArr : g -> Ty g -> Ty g -> Ty g + ||| Multiplicative pair. + TProd : Ty g -> Ty g -> Ty g + +||| Intrinsically scoped terms. No `if`: branching needs a join on +||| grades beyond systemet's stated semiring+order laws (post-MVP). +public export +data Term : Type -> Nat -> Type where + Var : Fin n -> Term g n + ||| Binder carries its declared grade and domain type. + Lam : g -> Ty g -> Term g (S n) -> Term g n + App : Term g n -> Term g n -> Term g n + Pair : Term g n -> Term g n -> Term g n + ||| Pattern-match consumption of a pair. The body sees the components + ||| at de Bruijn indices FS FZ (first) and FZ (second), each bound at + ||| grade `gone` (multiplicative elimination). + LetPair : Term g n -> Term g (S (S n)) -> Term g n + TT : Term g n + BLit : Bool -> Term g n + ||| Type-indexed word literal: `WordLit w : TBits w`, usage zero. + ||| Exists so closed terms can exercise conversion at `TBits`. + WordLit : TNat -> Term g n + +||| Why the checker rejected a term. +public export +data CheckError : Type where + NotAFunction : CheckError + NotAPair : CheckError + TypeMismatch : CheckError + ||| Computed usage of a binder exceeds its declared grade. + UsageViolation : CheckError + +public export +Show CheckError where + show NotAFunction = "not a function" + show NotAPair = "not a pair" + show TypeMismatch = "type mismatch" + show UsageViolation = "usage violation" diff --git a/src/kernel/Anytype/Grade/Affine.idr b/src/kernel/Anytype/Grade/Affine.idr new file mode 100644 index 0000000..fc7b8a0 --- /dev/null +++ b/src/kernel/Anytype/Grade/Affine.idr @@ -0,0 +1,465 @@ +||| The affine+erasure grade algebra {0, 1, omega} — AffineScript's +||| discipline, mirrored cell-for-cell from affinescript/lib/quantity.ml +||| (q_add / q_mul / q_le): addition saturates (1+1 = omega), omega +||| absorbs, multiplication scales usage through application (the +||| omega*1 = omega rule, AffineScript's BUG-001 fix). `QVar` from the +||| AffineScript elaborator is unification machinery, not part of the +||| algebra, and is deliberately absent here. +||| +||| Law proofs are exhaustive constructor enumerations; the coverage +||| checker forces completeness and `%default total` forbids escape +||| hatches. +module Anytype.Grade.Affine + +import Data.So +import Anytype.Grade.Algebra + +%default total + +public export +data Q = Q0 | Q1 | QW + +public export +Show Q where + show Q0 = "0" + show Q1 = "1" + show QW = "w" + +||| quantity.ml q_add: 0 identity; 1+1 saturates to omega; omega absorbs. +public export +qadd : Q -> Q -> Q +qadd Q0 Q0 = Q0 +qadd Q0 Q1 = Q1 +qadd Q0 QW = QW +qadd Q1 Q0 = Q1 +qadd Q1 Q1 = QW +qadd Q1 QW = QW +qadd QW Q0 = QW +qadd QW Q1 = QW +qadd QW QW = QW + +||| quantity.ml q_mul: 0 annihilates; 1 identity; omega*omega = omega. +public export +qmul : Q -> Q -> Q +qmul Q0 Q0 = Q0 +qmul Q0 Q1 = Q0 +qmul Q0 QW = Q0 +qmul Q1 Q0 = Q0 +qmul Q1 Q1 = Q1 +qmul Q1 QW = QW +qmul QW Q0 = Q0 +qmul QW Q1 = QW +qmul QW QW = QW + +||| quantity.ml q_le: the total order 0 <= 1 <= omega. +public export +qleq : Q -> Q -> Bool +qleq Q0 Q0 = True +qleq Q0 Q1 = True +qleq Q0 QW = True +qleq Q1 Q0 = False +qleq Q1 Q1 = True +qleq Q1 QW = True +qleq QW Q0 = False +qleq QW Q1 = False +qleq QW QW = True + +q0NotQ1 : Q0 = Q1 -> Void +q0NotQ1 Refl impossible + +q0NotQW : Q0 = QW -> Void +q0NotQW Refl impossible + +q1NotQW : Q1 = QW -> Void +q1NotQW Refl impossible + +public export +qdec : (a, b : Q) -> Dec (a = b) +qdec Q0 Q0 = Yes Refl +qdec Q0 Q1 = No q0NotQ1 +qdec Q0 QW = No q0NotQW +qdec Q1 Q0 = No (\p => q0NotQ1 (sym p)) +qdec Q1 Q1 = Yes Refl +qdec Q1 QW = No q1NotQW +qdec QW Q0 = No (\p => q0NotQW (sym p)) +qdec QW Q1 = No (\p => q1NotQW (sym p)) +qdec QW QW = Yes Refl + +-- Exhaustive law proofs (generated; verified by the typechecker). + +qaddAssoc : (a, b, c : Q) -> qadd a (qadd b c) = qadd (qadd a b) c +qmulAssoc : (a, b, c : Q) -> qmul a (qmul b c) = qmul (qmul a b) c +qdistribL : (a, b, c : Q) -> qmul a (qadd b c) = qadd (qmul a b) (qmul a c) +qdistribR : (a, b, c : Q) -> qmul (qadd a b) c = qadd (qmul a c) (qmul b c) +qaddComm : (a, b : Q) -> qadd a b = qadd b a +qaddZeroL : (a : Q) -> qadd Q0 a = a +qmulOneL : (a : Q) -> qmul Q1 a = a +qmulOneR : (a : Q) -> qmul a Q1 = a +qmulZeroL : (a : Q) -> qmul Q0 a = Q0 +qmulZeroR : (a : Q) -> qmul a Q0 = Q0 +qleqRefl : (a : Q) -> So (qleq a a) +qleqTrans : (a, b, c : Q) -> So (qleq a b) -> So (qleq b c) -> So (qleq a c) +qleqAntisym : (a, b : Q) -> So (qleq a b) -> So (qleq b a) -> a = b +qaddMono : (a, b, c, d : Q) -> + So (qleq a b) -> So (qleq c d) -> So (qleq (qadd a c) (qadd b d)) +qmulMono : (a, b, c, d : Q) -> + So (qleq a b) -> So (qleq c d) -> So (qleq (qmul a c) (qmul b d)) + +qaddAssoc Q0 Q0 Q0 = Refl +qaddAssoc Q0 Q0 Q1 = Refl +qaddAssoc Q0 Q0 QW = Refl +qaddAssoc Q0 Q1 Q0 = Refl +qaddAssoc Q0 Q1 Q1 = Refl +qaddAssoc Q0 Q1 QW = Refl +qaddAssoc Q0 QW Q0 = Refl +qaddAssoc Q0 QW Q1 = Refl +qaddAssoc Q0 QW QW = Refl +qaddAssoc Q1 Q0 Q0 = Refl +qaddAssoc Q1 Q0 Q1 = Refl +qaddAssoc Q1 Q0 QW = Refl +qaddAssoc Q1 Q1 Q0 = Refl +qaddAssoc Q1 Q1 Q1 = Refl +qaddAssoc Q1 Q1 QW = Refl +qaddAssoc Q1 QW Q0 = Refl +qaddAssoc Q1 QW Q1 = Refl +qaddAssoc Q1 QW QW = Refl +qaddAssoc QW Q0 Q0 = Refl +qaddAssoc QW Q0 Q1 = Refl +qaddAssoc QW Q0 QW = Refl +qaddAssoc QW Q1 Q0 = Refl +qaddAssoc QW Q1 Q1 = Refl +qaddAssoc QW Q1 QW = Refl +qaddAssoc QW QW Q0 = Refl +qaddAssoc QW QW Q1 = Refl +qaddAssoc QW QW QW = Refl + +qmulAssoc Q0 Q0 Q0 = Refl +qmulAssoc Q0 Q0 Q1 = Refl +qmulAssoc Q0 Q0 QW = Refl +qmulAssoc Q0 Q1 Q0 = Refl +qmulAssoc Q0 Q1 Q1 = Refl +qmulAssoc Q0 Q1 QW = Refl +qmulAssoc Q0 QW Q0 = Refl +qmulAssoc Q0 QW Q1 = Refl +qmulAssoc Q0 QW QW = Refl +qmulAssoc Q1 Q0 Q0 = Refl +qmulAssoc Q1 Q0 Q1 = Refl +qmulAssoc Q1 Q0 QW = Refl +qmulAssoc Q1 Q1 Q0 = Refl +qmulAssoc Q1 Q1 Q1 = Refl +qmulAssoc Q1 Q1 QW = Refl +qmulAssoc Q1 QW Q0 = Refl +qmulAssoc Q1 QW Q1 = Refl +qmulAssoc Q1 QW QW = Refl +qmulAssoc QW Q0 Q0 = Refl +qmulAssoc QW Q0 Q1 = Refl +qmulAssoc QW Q0 QW = Refl +qmulAssoc QW Q1 Q0 = Refl +qmulAssoc QW Q1 Q1 = Refl +qmulAssoc QW Q1 QW = Refl +qmulAssoc QW QW Q0 = Refl +qmulAssoc QW QW Q1 = Refl +qmulAssoc QW QW QW = Refl + +qdistribL Q0 Q0 Q0 = Refl +qdistribL Q0 Q0 Q1 = Refl +qdistribL Q0 Q0 QW = Refl +qdistribL Q0 Q1 Q0 = Refl +qdistribL Q0 Q1 Q1 = Refl +qdistribL Q0 Q1 QW = Refl +qdistribL Q0 QW Q0 = Refl +qdistribL Q0 QW Q1 = Refl +qdistribL Q0 QW QW = Refl +qdistribL Q1 Q0 Q0 = Refl +qdistribL Q1 Q0 Q1 = Refl +qdistribL Q1 Q0 QW = Refl +qdistribL Q1 Q1 Q0 = Refl +qdistribL Q1 Q1 Q1 = Refl +qdistribL Q1 Q1 QW = Refl +qdistribL Q1 QW Q0 = Refl +qdistribL Q1 QW Q1 = Refl +qdistribL Q1 QW QW = Refl +qdistribL QW Q0 Q0 = Refl +qdistribL QW Q0 Q1 = Refl +qdistribL QW Q0 QW = Refl +qdistribL QW Q1 Q0 = Refl +qdistribL QW Q1 Q1 = Refl +qdistribL QW Q1 QW = Refl +qdistribL QW QW Q0 = Refl +qdistribL QW QW Q1 = Refl +qdistribL QW QW QW = Refl + +qdistribR Q0 Q0 Q0 = Refl +qdistribR Q0 Q0 Q1 = Refl +qdistribR Q0 Q0 QW = Refl +qdistribR Q0 Q1 Q0 = Refl +qdistribR Q0 Q1 Q1 = Refl +qdistribR Q0 Q1 QW = Refl +qdistribR Q0 QW Q0 = Refl +qdistribR Q0 QW Q1 = Refl +qdistribR Q0 QW QW = Refl +qdistribR Q1 Q0 Q0 = Refl +qdistribR Q1 Q0 Q1 = Refl +qdistribR Q1 Q0 QW = Refl +qdistribR Q1 Q1 Q0 = Refl +qdistribR Q1 Q1 Q1 = Refl +qdistribR Q1 Q1 QW = Refl +qdistribR Q1 QW Q0 = Refl +qdistribR Q1 QW Q1 = Refl +qdistribR Q1 QW QW = Refl +qdistribR QW Q0 Q0 = Refl +qdistribR QW Q0 Q1 = Refl +qdistribR QW Q0 QW = Refl +qdistribR QW Q1 Q0 = Refl +qdistribR QW Q1 Q1 = Refl +qdistribR QW Q1 QW = Refl +qdistribR QW QW Q0 = Refl +qdistribR QW QW Q1 = Refl +qdistribR QW QW QW = Refl + +qaddComm Q0 Q0 = Refl +qaddComm Q0 Q1 = Refl +qaddComm Q0 QW = Refl +qaddComm Q1 Q0 = Refl +qaddComm Q1 Q1 = Refl +qaddComm Q1 QW = Refl +qaddComm QW Q0 = Refl +qaddComm QW Q1 = Refl +qaddComm QW QW = Refl + +qaddZeroL Q0 = Refl +qaddZeroL Q1 = Refl +qaddZeroL QW = Refl + +qmulOneL Q0 = Refl +qmulOneL Q1 = Refl +qmulOneL QW = Refl + +qmulOneR Q0 = Refl +qmulOneR Q1 = Refl +qmulOneR QW = Refl + +qmulZeroL Q0 = Refl +qmulZeroL Q1 = Refl +qmulZeroL QW = Refl + +qmulZeroR Q0 = Refl +qmulZeroR Q1 = Refl +qmulZeroR QW = Refl + +qleqRefl Q0 = Oh +qleqRefl Q1 = Oh +qleqRefl QW = Oh + +qleqTrans Q0 Q0 Q0 _ _ = Oh +qleqTrans Q0 Q0 Q1 _ _ = Oh +qleqTrans Q0 Q0 QW _ _ = Oh +qleqTrans Q0 Q1 Q0 _ y = absurd y +qleqTrans Q0 Q1 Q1 _ _ = Oh +qleqTrans Q0 Q1 QW _ _ = Oh +qleqTrans Q0 QW Q0 _ y = absurd y +qleqTrans Q0 QW Q1 _ y = absurd y +qleqTrans Q0 QW QW _ _ = Oh +qleqTrans Q1 Q0 Q0 x _ = absurd x +qleqTrans Q1 Q0 Q1 x _ = absurd x +qleqTrans Q1 Q0 QW x _ = absurd x +qleqTrans Q1 Q1 Q0 _ y = absurd y +qleqTrans Q1 Q1 Q1 _ _ = Oh +qleqTrans Q1 Q1 QW _ _ = Oh +qleqTrans Q1 QW Q0 _ y = absurd y +qleqTrans Q1 QW Q1 _ y = absurd y +qleqTrans Q1 QW QW _ _ = Oh +qleqTrans QW Q0 Q0 x _ = absurd x +qleqTrans QW Q0 Q1 x _ = absurd x +qleqTrans QW Q0 QW x _ = absurd x +qleqTrans QW Q1 Q0 x _ = absurd x +qleqTrans QW Q1 Q1 x _ = absurd x +qleqTrans QW Q1 QW x _ = absurd x +qleqTrans QW QW Q0 _ y = absurd y +qleqTrans QW QW Q1 _ y = absurd y +qleqTrans QW QW QW _ _ = Oh + +qleqAntisym Q0 Q0 _ _ = Refl +qleqAntisym Q0 Q1 _ y = absurd y +qleqAntisym Q0 QW _ y = absurd y +qleqAntisym Q1 Q0 x _ = absurd x +qleqAntisym Q1 Q1 _ _ = Refl +qleqAntisym Q1 QW _ y = absurd y +qleqAntisym QW Q0 x _ = absurd x +qleqAntisym QW Q1 x _ = absurd x +qleqAntisym QW QW _ _ = Refl + +qaddMono Q0 Q0 Q0 Q0 _ _ = Oh +qaddMono Q0 Q0 Q0 Q1 _ _ = Oh +qaddMono Q0 Q0 Q0 QW _ _ = Oh +qaddMono Q0 Q0 Q1 Q0 _ y = absurd y +qaddMono Q0 Q0 Q1 Q1 _ _ = Oh +qaddMono Q0 Q0 Q1 QW _ _ = Oh +qaddMono Q0 Q0 QW Q0 _ y = absurd y +qaddMono Q0 Q0 QW Q1 _ y = absurd y +qaddMono Q0 Q0 QW QW _ _ = Oh +qaddMono Q0 Q1 Q0 Q0 _ _ = Oh +qaddMono Q0 Q1 Q0 Q1 _ _ = Oh +qaddMono Q0 Q1 Q0 QW _ _ = Oh +qaddMono Q0 Q1 Q1 Q0 _ y = absurd y +qaddMono Q0 Q1 Q1 Q1 _ _ = Oh +qaddMono Q0 Q1 Q1 QW _ _ = Oh +qaddMono Q0 Q1 QW Q0 _ y = absurd y +qaddMono Q0 Q1 QW Q1 _ y = absurd y +qaddMono Q0 Q1 QW QW _ _ = Oh +qaddMono Q0 QW Q0 Q0 _ _ = Oh +qaddMono Q0 QW Q0 Q1 _ _ = Oh +qaddMono Q0 QW Q0 QW _ _ = Oh +qaddMono Q0 QW Q1 Q0 _ y = absurd y +qaddMono Q0 QW Q1 Q1 _ _ = Oh +qaddMono Q0 QW Q1 QW _ _ = Oh +qaddMono Q0 QW QW Q0 _ y = absurd y +qaddMono Q0 QW QW Q1 _ y = absurd y +qaddMono Q0 QW QW QW _ _ = Oh +qaddMono Q1 Q0 Q0 Q0 x _ = absurd x +qaddMono Q1 Q0 Q0 Q1 x _ = absurd x +qaddMono Q1 Q0 Q0 QW x _ = absurd x +qaddMono Q1 Q0 Q1 Q0 x _ = absurd x +qaddMono Q1 Q0 Q1 Q1 x _ = absurd x +qaddMono Q1 Q0 Q1 QW x _ = absurd x +qaddMono Q1 Q0 QW Q0 x _ = absurd x +qaddMono Q1 Q0 QW Q1 x _ = absurd x +qaddMono Q1 Q0 QW QW x _ = absurd x +qaddMono Q1 Q1 Q0 Q0 _ _ = Oh +qaddMono Q1 Q1 Q0 Q1 _ _ = Oh +qaddMono Q1 Q1 Q0 QW _ _ = Oh +qaddMono Q1 Q1 Q1 Q0 _ y = absurd y +qaddMono Q1 Q1 Q1 Q1 _ _ = Oh +qaddMono Q1 Q1 Q1 QW _ _ = Oh +qaddMono Q1 Q1 QW Q0 _ y = absurd y +qaddMono Q1 Q1 QW Q1 _ y = absurd y +qaddMono Q1 Q1 QW QW _ _ = Oh +qaddMono Q1 QW Q0 Q0 _ _ = Oh +qaddMono Q1 QW Q0 Q1 _ _ = Oh +qaddMono Q1 QW Q0 QW _ _ = Oh +qaddMono Q1 QW Q1 Q0 _ y = absurd y +qaddMono Q1 QW Q1 Q1 _ _ = Oh +qaddMono Q1 QW Q1 QW _ _ = Oh +qaddMono Q1 QW QW Q0 _ y = absurd y +qaddMono Q1 QW QW Q1 _ y = absurd y +qaddMono Q1 QW QW QW _ _ = Oh +qaddMono QW Q0 Q0 Q0 x _ = absurd x +qaddMono QW Q0 Q0 Q1 x _ = absurd x +qaddMono QW Q0 Q0 QW x _ = absurd x +qaddMono QW Q0 Q1 Q0 x _ = absurd x +qaddMono QW Q0 Q1 Q1 x _ = absurd x +qaddMono QW Q0 Q1 QW x _ = absurd x +qaddMono QW Q0 QW Q0 x _ = absurd x +qaddMono QW Q0 QW Q1 x _ = absurd x +qaddMono QW Q0 QW QW x _ = absurd x +qaddMono QW Q1 Q0 Q0 x _ = absurd x +qaddMono QW Q1 Q0 Q1 x _ = absurd x +qaddMono QW Q1 Q0 QW x _ = absurd x +qaddMono QW Q1 Q1 Q0 x _ = absurd x +qaddMono QW Q1 Q1 Q1 x _ = absurd x +qaddMono QW Q1 Q1 QW x _ = absurd x +qaddMono QW Q1 QW Q0 x _ = absurd x +qaddMono QW Q1 QW Q1 x _ = absurd x +qaddMono QW Q1 QW QW x _ = absurd x +qaddMono QW QW Q0 Q0 _ _ = Oh +qaddMono QW QW Q0 Q1 _ _ = Oh +qaddMono QW QW Q0 QW _ _ = Oh +qaddMono QW QW Q1 Q0 _ y = absurd y +qaddMono QW QW Q1 Q1 _ _ = Oh +qaddMono QW QW Q1 QW _ _ = Oh +qaddMono QW QW QW Q0 _ y = absurd y +qaddMono QW QW QW Q1 _ y = absurd y +qaddMono QW QW QW QW _ _ = Oh + +qmulMono Q0 Q0 Q0 Q0 _ _ = Oh +qmulMono Q0 Q0 Q0 Q1 _ _ = Oh +qmulMono Q0 Q0 Q0 QW _ _ = Oh +qmulMono Q0 Q0 Q1 Q0 _ y = absurd y +qmulMono Q0 Q0 Q1 Q1 _ _ = Oh +qmulMono Q0 Q0 Q1 QW _ _ = Oh +qmulMono Q0 Q0 QW Q0 _ y = absurd y +qmulMono Q0 Q0 QW Q1 _ y = absurd y +qmulMono Q0 Q0 QW QW _ _ = Oh +qmulMono Q0 Q1 Q0 Q0 _ _ = Oh +qmulMono Q0 Q1 Q0 Q1 _ _ = Oh +qmulMono Q0 Q1 Q0 QW _ _ = Oh +qmulMono Q0 Q1 Q1 Q0 _ y = absurd y +qmulMono Q0 Q1 Q1 Q1 _ _ = Oh +qmulMono Q0 Q1 Q1 QW _ _ = Oh +qmulMono Q0 Q1 QW Q0 _ y = absurd y +qmulMono Q0 Q1 QW Q1 _ y = absurd y +qmulMono Q0 Q1 QW QW _ _ = Oh +qmulMono Q0 QW Q0 Q0 _ _ = Oh +qmulMono Q0 QW Q0 Q1 _ _ = Oh +qmulMono Q0 QW Q0 QW _ _ = Oh +qmulMono Q0 QW Q1 Q0 _ y = absurd y +qmulMono Q0 QW Q1 Q1 _ _ = Oh +qmulMono Q0 QW Q1 QW _ _ = Oh +qmulMono Q0 QW QW Q0 _ y = absurd y +qmulMono Q0 QW QW Q1 _ y = absurd y +qmulMono Q0 QW QW QW _ _ = Oh +qmulMono Q1 Q0 Q0 Q0 x _ = absurd x +qmulMono Q1 Q0 Q0 Q1 x _ = absurd x +qmulMono Q1 Q0 Q0 QW x _ = absurd x +qmulMono Q1 Q0 Q1 Q0 x _ = absurd x +qmulMono Q1 Q0 Q1 Q1 x _ = absurd x +qmulMono Q1 Q0 Q1 QW x _ = absurd x +qmulMono Q1 Q0 QW Q0 x _ = absurd x +qmulMono Q1 Q0 QW Q1 x _ = absurd x +qmulMono Q1 Q0 QW QW x _ = absurd x +qmulMono Q1 Q1 Q0 Q0 _ _ = Oh +qmulMono Q1 Q1 Q0 Q1 _ _ = Oh +qmulMono Q1 Q1 Q0 QW _ _ = Oh +qmulMono Q1 Q1 Q1 Q0 _ y = absurd y +qmulMono Q1 Q1 Q1 Q1 _ _ = Oh +qmulMono Q1 Q1 Q1 QW _ _ = Oh +qmulMono Q1 Q1 QW Q0 _ y = absurd y +qmulMono Q1 Q1 QW Q1 _ y = absurd y +qmulMono Q1 Q1 QW QW _ _ = Oh +qmulMono Q1 QW Q0 Q0 _ _ = Oh +qmulMono Q1 QW Q0 Q1 _ _ = Oh +qmulMono Q1 QW Q0 QW _ _ = Oh +qmulMono Q1 QW Q1 Q0 _ y = absurd y +qmulMono Q1 QW Q1 Q1 _ _ = Oh +qmulMono Q1 QW Q1 QW _ _ = Oh +qmulMono Q1 QW QW Q0 _ y = absurd y +qmulMono Q1 QW QW Q1 _ y = absurd y +qmulMono Q1 QW QW QW _ _ = Oh +qmulMono QW Q0 Q0 Q0 x _ = absurd x +qmulMono QW Q0 Q0 Q1 x _ = absurd x +qmulMono QW Q0 Q0 QW x _ = absurd x +qmulMono QW Q0 Q1 Q0 x _ = absurd x +qmulMono QW Q0 Q1 Q1 x _ = absurd x +qmulMono QW Q0 Q1 QW x _ = absurd x +qmulMono QW Q0 QW Q0 x _ = absurd x +qmulMono QW Q0 QW Q1 x _ = absurd x +qmulMono QW Q0 QW QW x _ = absurd x +qmulMono QW Q1 Q0 Q0 x _ = absurd x +qmulMono QW Q1 Q0 Q1 x _ = absurd x +qmulMono QW Q1 Q0 QW x _ = absurd x +qmulMono QW Q1 Q1 Q0 x _ = absurd x +qmulMono QW Q1 Q1 Q1 x _ = absurd x +qmulMono QW Q1 Q1 QW x _ = absurd x +qmulMono QW Q1 QW Q0 x _ = absurd x +qmulMono QW Q1 QW Q1 x _ = absurd x +qmulMono QW Q1 QW QW x _ = absurd x +qmulMono QW QW Q0 Q0 _ _ = Oh +qmulMono QW QW Q0 Q1 _ _ = Oh +qmulMono QW QW Q0 QW _ _ = Oh +qmulMono QW QW Q1 Q0 _ y = absurd y +qmulMono QW QW Q1 Q1 _ _ = Oh +qmulMono QW QW Q1 QW _ _ = Oh +qmulMono QW QW QW Q0 _ y = absurd y +qmulMono QW QW QW Q1 _ y = absurd y +qmulMono QW QW QW QW _ _ = Oh + +||| AffineScript's discipline as a lawful algebra: an instance of this +||| record exists, therefore every law above is discharged. +public export +AffineAlgebra : GradeAlgebra Q +AffineAlgebra = MkGradeAlgebra + Q0 Q1 qadd qmul qleq qdec + qaddAssoc qaddComm qaddZeroL + qmulAssoc qmulOneL qmulOneR qmulZeroL qmulZeroR + qdistribL qdistribR + qleqRefl qleqTrans qleqAntisym qaddMono qmulMono diff --git a/src/kernel/Anytype/Grade/Algebra.idr b/src/kernel/Anytype/Grade/Algebra.idr new file mode 100644 index 0000000..71b105c --- /dev/null +++ b/src/kernel/Anytype/Grade/Algebra.idr @@ -0,0 +1,54 @@ +||| anytype L2: the grade-algebra interface. +||| +||| systemet's resource layer (L2) requires an ordered semiring: the +||| discipline of a language is chosen by choosing this algebra. The laws +||| are proof fields, so a `GradeAlgebra` value cannot be constructed +||| without discharging every one of them — an unlawful algebra is +||| unrepresentable, which is how "pins systemet upstream" is enforced +||| mechanically rather than by policy. +||| +||| The carrier is a record *parameter* (not an erased field): erased +||| carrier fields projected into value positions are the documented +||| failure mode of the quarantined template proofs. +module Anytype.Grade.Algebra + +import Data.So + +%default total + +public export +record GradeAlgebra (g : Type) where + constructor MkGradeAlgebra + ||| Additive identity: the grade of an unused variable. + gzero : g + ||| Multiplicative identity: the grade of a single use. + gone : g + ||| Combine usages from independent subterms. + gadd : g -> g -> g + ||| Scale a usage through an application at a graded arrow. + gmul : g -> g -> g + ||| Decidable order: `gleq computed declared` admits a binder. + gleq : g -> g -> Bool + ||| Decidable equality, used by conversion on arrow grades. + gdec : (a, b : g) -> Dec (a = b) + + -- Semiring laws (systemet L2: the stated algebra laws). + addAssoc : (a, b, c : g) -> gadd a (gadd b c) = gadd (gadd a b) c + addComm : (a, b : g) -> gadd a b = gadd b a + addZeroL : (a : g) -> gadd gzero a = a + mulAssoc : (a, b, c : g) -> gmul a (gmul b c) = gmul (gmul a b) c + mulOneL : (a : g) -> gmul gone a = a + mulOneR : (a : g) -> gmul a gone = a + mulZeroL : (a : g) -> gmul gzero a = gzero + mulZeroR : (a : g) -> gmul a gzero = gzero + distribL : (a, b, c : g) -> gmul a (gadd b c) = gadd (gmul a b) (gmul a c) + distribR : (a, b, c : g) -> gmul (gadd a b) c = gadd (gmul a c) (gmul b c) + + -- Order laws, and compatibility of the order with the semiring ops. + leqRefl : (a : g) -> So (gleq a a) + leqTrans : (a, b, c : g) -> So (gleq a b) -> So (gleq b c) -> So (gleq a c) + leqAntisym : (a, b : g) -> So (gleq a b) -> So (gleq b a) -> a = b + addMono : (a, b, c, d : g) -> + So (gleq a b) -> So (gleq c d) -> So (gleq (gadd a c) (gadd b d)) + mulMono : (a, b, c, d : g) -> + So (gleq a b) -> So (gleq c d) -> So (gleq (gmul a c) (gmul b d)) diff --git a/src/kernel/Anytype/Grade/Exact.idr b/src/kernel/Anytype/Grade/Exact.idr new file mode 100644 index 0000000..056d3b2 --- /dev/null +++ b/src/kernel/Anytype/Grade/Exact.idr @@ -0,0 +1,66 @@ +||| The exact-usage grade algebra over Nat: `gleq` is *equality*, so a +||| binder's computed usage must equal its declared grade — dropping a +||| grade-1 value is rejected, unlike the affine order where 0 <= 1. +||| +||| This instance is systemet's required demonstration that the same +||| checking rules instantiate distinct disciplines: the checker code +||| never changes, only the algebra passed to it. +module Anytype.Grade.Exact + +import Data.Nat +import Data.So +import Decidable.Equality +import Anytype.Grade.Algebra + +%default total + +natEqRefl : (n : Nat) -> (n == n) = True +natEqRefl Z = Refl +natEqRefl (S k) = natEqRefl k + +natEqSound : (a, b : Nat) -> (a == b) = True -> a = b +natEqSound Z Z _ = Refl +natEqSound Z (S _) prf = absurd prf +natEqSound (S _) Z prf = absurd prf +natEqSound (S a) (S b) prf = cong S (natEqSound a b prf) + +soSound : (a, b : Nat) -> So (a == b) -> a = b +soSound a b s = natEqSound a b (soToEq s) + +eqRefl : (a : Nat) -> So (a == a) +eqRefl a = rewrite natEqRefl a in Oh + +eqTrans : (a, b, c : Nat) -> So (a == b) -> So (b == c) -> So (a == c) +eqTrans a b c s1 s2 = + rewrite soSound a b s1 in rewrite soSound b c s2 in eqRefl c + +addMono' : (a, b, c, d : Nat) -> + So (a == b) -> So (c == d) -> So ((a + c) == (b + d)) +addMono' a b c d s1 s2 = + rewrite soSound a b s1 in rewrite soSound c d s2 in eqRefl (b + d) + +mulMono' : (a, b, c, d : Nat) -> + So (a == b) -> So (c == d) -> So ((a * c) == (b * d)) +mulMono' a b c d s1 s2 = + rewrite soSound a b s1 in rewrite soSound c d s2 in eqRefl (b * d) + +||| Exact usage: semiring laws come from Data.Nat; the order is equality. +public export +ExactAlgebra : GradeAlgebra Nat +ExactAlgebra = MkGradeAlgebra + 0 1 (+) (*) (==) decEq + (\a, b, c => plusAssociative a b c) + plusCommutative + plusZeroLeftNeutral + (\a, b, c => multAssociative a b c) + multOneLeftNeutral + multOneRightNeutral + multZeroLeftZero + multZeroRightZero + (\a, b, c => multDistributesOverPlusRight a b c) + (\a, b, c => multDistributesOverPlusLeft a b c) + eqRefl + eqTrans + (\a, b, s1, _ => soSound a b s1) + addMono' + mulMono' diff --git a/src/kernel/Anytype/Kernel.idr b/src/kernel/Anytype/Kernel.idr new file mode 100644 index 0000000..9277ff9 --- /dev/null +++ b/src/kernel/Anytype/Kernel.idr @@ -0,0 +1,37 @@ +||| anytype public API: pick the algebra, get the discipline. +||| +||| `checkClosed AffineAlgebra t` and `checkClosed ExactAlgebra t'` +||| run the identical rules under different grade algebras — the +||| discipline is an input, not something hardwired. +module Anytype.Kernel + +import Data.Vect +import public Anytype.Grade.Algebra +import public Anytype.Grade.Affine +import public Anytype.Grade.Exact +import public Anytype.Core.Syntax +import public Anytype.Core.Normalise +import public Anytype.Core.Conversion +import public Anytype.Core.Check + +%default total + +||| Type a closed term under the chosen grade algebra. +public export +checkClosed : GradeAlgebra g -> Term g 0 -> Either CheckError (Ty g) +checkClosed alg t = map (normalise . fst) (infer alg (the (Ctx g 0) []) t) + +||| Check a closed term against an expected type (conversion included). +public export +checkAgainst : GradeAlgebra g -> Term g 0 -> Ty g -> Either CheckError () +checkAgainst alg t ty = map (const ()) (check alg (the (Ctx g 0) []) t ty) + +||| Render a type, given a renderer for grades. +public export +showTy : (g -> String) -> Ty g -> String +showTy _ TUnit = "Unit" +showTy _ TBool = "Bool" +showTy _ (TBits w) = "Bits " ++ show (nval w) +showTy sg (TArr q a b) = + "(" ++ showTy sg a ++ " " ++ sg q ++ "-> " ++ showTy sg b ++ ")" +showTy sg (TProd a b) = "(" ++ showTy sg a ++ " * " ++ showTy sg b ++ ")" diff --git a/verification/tests/kernel/Tests/Main.idr b/verification/tests/kernel/Tests/Main.idr new file mode 100644 index 0000000..28367eb --- /dev/null +++ b/verification/tests/kernel/Tests/Main.idr @@ -0,0 +1,111 @@ +||| Golden matrix for the anytype kernel: the same terms, checked under +||| the affine and the exact grade algebras, must produce the recorded +||| verdicts. The drop row (grade-1 binder, body TT) is the load-bearing +||| demonstration: affine ACCEPTS (0 <= 1), exact REJECTS (0 /= 1) — +||| same rules, distinct disciplines. +module Tests.Main + +import Data.Fin +import System +import Anytype.Kernel + +%default total + +-- Data.Fin.Equality's Pointwise constructors shadow Fin's FZ/FS. +%hide Data.Fin.Equality.FZ +%hide Data.Fin.Equality.FS + +two : TNat +two = NS (NS NZ) + +three : TNat +three = NS two + +four : TNat +four = NS three + +five : TNat +five = NS four + +accepts : Either CheckError a -> Bool +accepts (Right _) = True +accepts (Left _) = False + +||| (name, expected-accept, actual-accept) +Case : Type +Case = (String, Bool, Bool) + +dup : Term g (S n) +dup = Pair (Var FZ) (Var FZ) + +affineCases : List Case +affineCases = + [ ("affine: use once at 1", + True, accepts (checkClosed AffineAlgebra (Lam Q1 TBool (Var FZ)))) + , ("affine: drop at 1 (weakening allowed)", + True, accepts (checkClosed AffineAlgebra (Lam Q1 TBool TT))) + , ("affine: double use at 1", + False, accepts (checkClosed AffineAlgebra (Lam Q1 TBool dup))) + , ("affine: double use at omega", + True, accepts (checkClosed AffineAlgebra (Lam QW TBool dup))) + , ("affine: erased binder unused", + True, accepts (checkClosed AffineAlgebra (Lam Q0 TBool TT))) + , ("affine: erased binder used", + False, accepts (checkClosed AffineAlgebra (Lam Q0 TBool (Var FZ)))) + , ("affine: omega-arrow scales usage past 1 (BUG-001 rule)", + False, accepts (checkClosed AffineAlgebra + (Lam Q1 TBool (App (Lam QW TBool dup) (Var FZ))))) + , ("affine: omega-arrow scaling admitted at omega", + True, accepts (checkClosed AffineAlgebra + (Lam QW TBool (App (Lam QW TBool dup) (Var FZ))))) + , ("affine: let-pair, each component once", + True, accepts (checkClosed AffineAlgebra + (Lam Q1 (TProd TBool TUnit) + (LetPair (Var FZ) (Pair (Var (FS FZ)) (Var FZ)))))) + , ("affine: let-pair, first component twice", + False, accepts (checkClosed AffineAlgebra + (Lam Q1 (TProd TBool TUnit) + (LetPair (Var FZ) (Pair (Var (FS FZ)) (Var (FS FZ))))))) + , ("affine: conversion Bits(2+3) against Bits 5", + True, accepts (checkAgainst AffineAlgebra (WordLit (NPlus two three)) + (TBits five))) + , ("affine: conversion Bits(2+2) against Bits 5", + False, accepts (checkAgainst AffineAlgebra (WordLit (NPlus two two)) + (TBits five))) + , ("affine: application converts Bits(2+3) argument at Bits 5", + True, accepts (checkClosed AffineAlgebra + (App (Lam Q1 (TBits five) (Var FZ)) (WordLit (NPlus two three))))) + ] + +exactCases : List Case +exactCases = + [ ("exact: use once at 1", + True, accepts (checkClosed ExactAlgebra (Lam 1 TBool (Var FZ)))) + , ("exact: drop at 1 REJECTED (the discipline split)", + False, accepts (checkClosed ExactAlgebra (Lam 1 TBool TT))) + , ("exact: double use at 1", + False, accepts (checkClosed ExactAlgebra (Lam 1 TBool dup))) + , ("exact: double use at exactly 2", + True, accepts (checkClosed ExactAlgebra (Lam 2 TBool dup))) + , ("exact: zero binder unused", + True, accepts (checkClosed ExactAlgebra (Lam 0 TBool TT))) + , ("exact: zero binder used", + False, accepts (checkClosed ExactAlgebra (Lam 0 TBool (Var FZ)))) + ] + +report : Case -> IO Bool +report (name, expected, actual) = + if expected == actual + then putStrLn (" PASS " ++ name) $> True + else putStrLn (" FAIL " ++ name + ++ " (expected accept=" ++ show expected + ++ ", got accept=" ++ show actual ++ ")") $> False + +main : IO () +main = do + putStrLn "=== anytype kernel golden matrix ===" + results <- traverse report (affineCases ++ exactCases) + let bad = length (filter not results) + putStrLn ("=== " ++ show (length results) ++ " cases, " + ++ show bad ++ " failure(s) ===") + when (bad > 0) exitFailure From f1fec39e4dfd79ebe61cd016648e270879ae7028 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 21 Jul 2026 07:26:15 +0100 Subject: [PATCH 3/6] feat(seam): anytype-specific ABI wire types, layout proofs, and anytype-check CLI Phase 4 (Idris half): replaces the RSR template's generic librsr demo with anytype's actual seam: - Abi.Types: Discipline/Verdict wire types; codes proven injective, decode proven inverse of encode. - Abi.Layout: template's Divides/StructLayout machinery re-scoped to the real anytype_request_t / anytype_response_t layouts (16 bytes, align 8), both proven CABICompliant. abi.ipkg renamed anytype-abi. - Abi.Foreign: seam contract for the Zig-exported anytype_check symbol; MVP transport is a spawned process (Zig binding pending). - Anytype.Sexp (total S-expression reader, fuel-bounded, scope-checked de Bruijn) + Anytype.Main: the anytype-check executable. Exit codes are verdictCode values: 0 accept, 1 reject, 2 ill-formed. - scripts/check-cli.sh: 8 seam golden tests (verdict line + exit code); wired into just test and CI alongside the proof sweep. - Proof MANIFEST extended to the CLI modules (coverage rule caught them first, as designed). Co-Authored-By: Claude Fable 5 --- .github/workflows/idris2-proof.yml | 95 +++ Justfile | 4 +- abi.ipkg | 2 +- anytype-cli.ipkg | 13 + build/exec/anytype-check | 15 + build/exec/anytype-check_app/anytype-check.so | Bin 0 -> 43350 bytes build/exec/anytype-check_app/anytype-check.ss | 807 ++++++++++++++++++ build/exec/anytype-check_app/compileChez | 1 + .../anytype-check_app/libidris2_support.so | Bin 0 -> 50080 bytes build/exec/anytype-tests_app/anytype-tests.so | Bin 28880 -> 28880 bytes scripts/check-cli.sh | 44 + scripts/check-idris2-proofs.sh | 2 + src/cli/Anytype/Main.idr | 56 ++ src/cli/Anytype/Sexp.idr | 127 +++ src/interface/Abi/Foreign.idr | 94 +- src/interface/Abi/Layout.idr | 73 +- src/interface/Abi/Types.idr | 142 ++- 17 files changed, 1291 insertions(+), 184 deletions(-) create mode 100644 .github/workflows/idris2-proof.yml create mode 100644 anytype-cli.ipkg create mode 100755 build/exec/anytype-check create mode 100755 build/exec/anytype-check_app/anytype-check.so create mode 100755 build/exec/anytype-check_app/anytype-check.ss create mode 100755 build/exec/anytype-check_app/compileChez create mode 100644 build/exec/anytype-check_app/libidris2_support.so create mode 100755 scripts/check-cli.sh create mode 100644 src/cli/Anytype/Main.idr create mode 100644 src/cli/Anytype/Sexp.idr diff --git a/.github/workflows/idris2-proof.yml b/.github/workflows/idris2-proof.yml new file mode 100644 index 0000000..8b18838 --- /dev/null +++ b/.github/workflows/idris2-proof.yml @@ -0,0 +1,95 @@ +# SPDX-License-Identifier: MPL-2.0 +# Idris2 proof + kernel test gate — type-checks EVERY Idris2 module via +# scripts/check-idris2-proofs.sh (the same script `just proof-check-idris2` +# runs, so local green and CI green mean the same thing), then builds the +# kernel and runs the golden matrix (the same pipeline as `just test`). +# +# This is the first workflow in this repository that checks any Idris2 at +# all: the other workflows validate repo shape and run security scanners, +# and the recipe this gate replaces (build/just/proofs.just) exited 0 when +# the prover was absent. The script fails when idris2 is missing rather +# than skipping, so a broken install step can never render as a green +# proof run. +# +# Adapted from ideas-to-alphas .github/workflows/idris2-proof.yml, which +# documents the estate history behind each rule. +name: Idris2 Proof + +on: + push: + branches: [main] + paths: + - '**.idr' + - '*.ipkg' + - 'scripts/check-idris2-proofs.sh' + - 'scripts/check-cli.sh' + - '.github/workflows/idris2-proof.yml' + pull_request: + paths: + - '**.idr' + - '*.ipkg' + - 'scripts/check-idris2-proofs.sh' + - 'scripts/check-cli.sh' + - '.github/workflows/idris2-proof.yml' + workflow_dispatch: + +# Estate guardrail: one run per ref, cancel superseded runs. Read-only check. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +env: + IDRIS2_VERSION: "0.7.0" + +jobs: + idris2-check: + runs-on: ubuntu-latest + timeout-minutes: 30 + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Install Chez Scheme (Idris2 backend) + run: | + set -euo pipefail + sudo apt-get update -qq + sudo apt-get install -y --no-install-recommends chezscheme libgmp-dev + + - name: Build & install Idris2 ${{ env.IDRIS2_VERSION }} + run: | + set -euo pipefail + # Build OUTSIDE the checkout. The proof gate sweeps the working tree + # for every *.idr and errors on any not in its manifest -- that + # breadth is the point. The Idris2 source tarball ships hundreds of + # .idr files; extracting it into the checkout makes the gate fail on + # the compiler's own sources. Keep the tree the gate scans clean. + build_dir="$(mktemp -d)" + cd "$build_dir" + tarball="idris2-${IDRIS2_VERSION}.tar.gz" + curl -fsSL -o "$tarball" \ + "https://codeload.github.com/idris-lang/Idris2/tar.gz/refs/tags/v${IDRIS2_VERSION}" + tar xzf "$tarball" + cd "Idris2-${IDRIS2_VERSION}" + make bootstrap SCHEME=chezscheme + make install SCHEME=chezscheme + echo "${HOME}/.idris2/bin" >> "$GITHUB_PATH" + + - name: Build kernel, run golden matrix and seam tests + # Runs first so the anytype/anytype-abi packages are installed before + # the proof sweep checks modules that use -p flags. + run: | + set -euo pipefail + idris2 --install anytype.ipkg + idris2 --install abi.ipkg + idris2 --build anytype-tests.ipkg + ./build/exec/anytype-tests + idris2 --build anytype-cli.ipkg + ./scripts/check-cli.sh + + - name: Type-check every Idris2 module + run: ./scripts/check-idris2-proofs.sh diff --git a/Justfile b/Justfile index 8023d65..42cbe59 100644 --- a/Justfile +++ b/Justfile @@ -134,10 +134,12 @@ clean-all: clean # Typecheck the ABI seam, build the kernel, run the golden matrix test *args: @command -v idris2 >/dev/null || { echo "FAIL: idris2 not on PATH (install Idris2 0.7.0)"; exit 1; } - idris2 --typecheck abi.ipkg idris2 --install anytype.ipkg + idris2 --install abi.ipkg idris2 --build anytype-tests.ipkg ./build/exec/anytype-tests + idris2 --build anytype-cli.ipkg + ./scripts/check-cli.sh # Run tests with verbose output test-verbose: diff --git a/abi.ipkg b/abi.ipkg index 4b62c0b..66f55d8 100644 --- a/abi.ipkg +++ b/abi.ipkg @@ -19,7 +19,7 @@ -- The RSR validators accept either Abi/ (canonical, case-consistent) or a -- lowercase abi/ for downstream repos that ship lowercase — but never both. -package abi +package anytype-abi version = 0.1.0 diff --git a/anytype-cli.ipkg b/anytype-cli.ipkg new file mode 100644 index 0000000..d30b603 --- /dev/null +++ b/anytype-cli.ipkg @@ -0,0 +1,13 @@ +package anytype-cli +version = 0.1.0 +authors = "hyperpolymath" +license = "MPL-2.0" +brief = "anytype-check: process-boundary entry point for the kernel" + +sourcedir = "src/cli" +depends = base, anytype, anytype-abi + +modules = Anytype.Sexp + , Anytype.Main +main = Anytype.Main +executable = anytype-check diff --git a/build/exec/anytype-check b/build/exec/anytype-check new file mode 100755 index 0000000..280f8ce --- /dev/null +++ b/build/exec/anytype-check @@ -0,0 +1,15 @@ +#!/bin/sh +# @generated by Idris 0.7.0, Chez backend + +set -e # exit on any error + +if [ "$(uname)" = Darwin ]; then + DIR=$(zsh -c 'printf %s "$0:A:h"' "$0") +else + DIR=$(dirname "$(readlink -f -- "$0")") +fi +export LD_LIBRARY_PATH="$DIR/anytype-check_app:$LD_LIBRARY_PATH" +export DYLD_LIBRARY_PATH="$DIR/anytype-check_app:$DYLD_LIBRARY_PATH" +export IDRIS2_INC_SRC="$DIR/anytype-check_app" + +"$DIR/anytype-check_app/anytype-check.so" "$@" \ No newline at end of file diff --git a/build/exec/anytype-check_app/anytype-check.so b/build/exec/anytype-check_app/anytype-check.so new file mode 100755 index 0000000000000000000000000000000000000000..3dfaee77406c2b79f9f343a0372a41e24a37a1f9 GIT binary patch literal 43350 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 b 0) (- q 1) (+ q 1)) + q))) + +(define (blodwen-euclidMod a b) + (let ((r (remainder a b))) + (if (< r 0) + (if (> b 0) (+ r b) (- r b)) + r))) + +; flonum constants + +(define (blodwen-calcFlonumUnitRoundoff) + (let loop [(uro 1.0)] + (if (fl= 1.0 (fl+ 1.0 uro)) + uro + (loop (fl/ uro 2.0))))) + +(define (blodwen-calcFlonumEpsilon) + (fl* (blodwen-calcFlonumUnitRoundoff) 2.0)) + +(define (blodwen-flonumNaN) + +nan.0) + +(define (blodwen-flonumInf) + +inf.0) + +; Bits + +(define bu+ (lambda (x y bits) (blodwen-toUnsignedInt (+ x y) bits))) +(define bu- (lambda (x y bits) (blodwen-toUnsignedInt (- x y) bits))) +(define bu* (lambda (x y bits) (blodwen-toUnsignedInt (* x y) bits))) +(define bu/ (lambda (x y bits) (blodwen-toUnsignedInt (quotient x y) bits))) + +(define bs+ (lambda (x y bits) (blodwen-toSignedInt (+ x y) bits))) +(define bs- (lambda (x y bits) (blodwen-toSignedInt (- x y) bits))) +(define bs* (lambda (x y bits) (blodwen-toSignedInt (* x y) bits))) +(define bs/ (lambda (x y bits) (blodwen-toSignedInt (blodwen-euclidDiv x y) bits))) + +(define (integer->bits8 x) (logand x (sub1 (ash 1 8)))) +(define (integer->bits16 x) (logand x (sub1 (ash 1 16)))) +(define (integer->bits32 x) (logand x (sub1 (ash 1 32)))) +(define (integer->bits64 x) (logand x (sub1 (ash 1 64)))) + +(define (bits16->bits8 x) (logand x (sub1 (ash 1 8)))) +(define (bits32->bits8 x) (logand x (sub1 (ash 1 8)))) +(define (bits64->bits8 x) (logand x (sub1 (ash 1 8)))) +(define (bits32->bits16 x) (logand x (sub1 (ash 1 16)))) +(define (bits64->bits16 x) (logand x (sub1 (ash 1 16)))) +(define (bits64->bits32 x) (logand x (sub1 (ash 1 32)))) + +(define (blodwen-bits-shl-signed x y bits) (blodwen-toSignedInt (ash x y) bits)) + +(define (blodwen-bits-shl x y bits) (logand (ash x y) (sub1 (ash 1 bits)))) + +(define blodwen-shl (lambda (x y) (ash x y))) +(define blodwen-shr (lambda (x y) (ash x (- y)))) +(define blodwen-and (lambda (x y) (logand x y))) +(define blodwen-or (lambda (x y) (logor x y))) +(define blodwen-xor (lambda (x y) (logxor x y))) + +(define cast-num + (lambda (x) + (if (number? x) x 0))) +(define destroy-prefix + (lambda (x) + (cond + ((equal? x "") "") + ((equal? (string-ref x 0) #\#) "") + (else x)))) + +(define exact-floor + (lambda (x) + (inexact->exact (floor x)))) + +(define exact-truncate + (lambda (x) + (inexact->exact (truncate x)))) + +(define exact-truncate-boundedInt + (lambda (x y) + (blodwen-toSignedInt (exact-truncate x) y))) + +(define exact-truncate-boundedUInt + (lambda (x y) + (blodwen-toUnsignedInt (exact-truncate x) y))) + +(define cast-char-boundedInt + (lambda (x y) + (blodwen-toSignedInt (char->integer x) y))) + +(define cast-char-boundedUInt + (lambda (x y) + (blodwen-toUnsignedInt (char->integer x) y))) + +(define cast-string-int + (lambda (x) + (exact-truncate (cast-num (string->number (destroy-prefix x)))))) + +(define cast-string-boundedInt + (lambda (x y) + (blodwen-toSignedInt (cast-string-int x) y))) + +(define cast-string-boundedUInt + (lambda (x y) + (blodwen-toUnsignedInt (cast-string-int x) y))) + +(define cast-int-char + (lambda (x) + (if (or + (and (>= x 0) (<= x #xd7ff)) + (and (>= x #xe000) (<= x #x10ffff))) + (integer->char x) + (integer->char 0)))) + +(define cast-string-double + (lambda (x) + (exact->inexact (cast-num (string->number (destroy-prefix x)))))) + + +(define (string-concat xs) (apply string-append xs)) +(define (string-unpack s) (string->list s)) +(define (string-pack xs) (list->string xs)) + +(define string-cons (lambda (x y) (string-append (string x) y))) +(define string-reverse (lambda (x) + (list->string (reverse (string->list x))))) +(define (string-substr off len s) + (let* ((l (string-length s)) + (b (max 0 off)) + (x (max 0 len)) + (end (min l (+ b x)))) + (if (> b l) + "" + (substring s b end)))) + +(define (blodwen-string-iterator-new s) + 0) + +(define (blodwen-string-iterator-to-string _ s ofs f) + (f (substring s ofs (string-length s)))) + +(define (blodwen-string-iterator-next s ofs) + (if (>= ofs (string-length s)) + '() ; EOF + (cons (string-ref s ofs) (+ ofs 1)))) + +(define either-left + (lambda (x) + (vector 0 x))) + +(define either-right + (lambda (x) + (vector 1 x))) + +(define blodwen-error-quit + (lambda (msg) + (display msg) + (newline) + (exit 1))) + +(define (blodwen-get-line p) + (if (port? p) + (let ((str (get-line p))) + (if (eof-object? str) + "" + str)) + void)) + +(define (blodwen-get-char p) + (if (port? p) + (let ((chr (get-char p))) + (if (eof-object? chr) + #\nul + chr)) + void)) + +;; Buffers + +(define (blodwen-new-buffer size) + (make-bytevector size 0)) + +(define (blodwen-buffer-size buf) + (bytevector-length buf)) + +(define (blodwen-buffer-setbyte buf loc val) + (bytevector-u8-set! buf loc val)) + +(define (blodwen-buffer-getbyte buf loc) + (bytevector-u8-ref buf loc)) + +(define (blodwen-buffer-setbits16 buf loc val) + (bytevector-u16-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getbits16 buf loc) + (bytevector-u16-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setbits32 buf loc val) + (bytevector-u32-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getbits32 buf loc) + (bytevector-u32-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setbits64 buf loc val) + (bytevector-u64-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getbits64 buf loc) + (bytevector-u64-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setint8 buf loc val) + (bytevector-s8-set! buf loc val)) + +(define (blodwen-buffer-getint8 buf loc) + (bytevector-s8-ref buf loc)) + +(define (blodwen-buffer-setint16 buf loc val) + (bytevector-s16-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getint16 buf loc) + (bytevector-s16-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setint32 buf loc val) + (bytevector-s32-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getint32 buf loc) + (bytevector-s32-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setint buf loc val) + (bytevector-s64-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getint buf loc) + (bytevector-s64-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setint64 buf loc val) + (bytevector-s64-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getint64 buf loc) + (bytevector-s64-ref buf loc (native-endianness))) + +(define (blodwen-buffer-setdouble buf loc val) + (bytevector-ieee-double-set! buf loc val (native-endianness))) + +(define (blodwen-buffer-getdouble buf loc) + (bytevector-ieee-double-ref buf loc (native-endianness))) + +(define (blodwen-stringbytelen str) + (bytevector-length (string->utf8 str))) + +(define (blodwen-buffer-setstring buf loc val) + (let* [(strvec (string->utf8 val)) + (len (bytevector-length strvec))] + (bytevector-copy! strvec 0 buf loc len))) + +(define (blodwen-buffer-getstring buf loc len) + (let [(newvec (make-bytevector len))] + (bytevector-copy! buf loc newvec 0 len) + (utf8->string newvec))) + +(define (blodwen-buffer-copydata buf start len dest loc) + (bytevector-copy! buf start dest loc len)) + +;; Threads + +(define-record thread-handle (semaphore)) + +(define (blodwen-thread proc) + (let [(sema (blodwen-make-semaphore 0))] + (fork-thread (lambda () (proc (vector 0)) (blodwen-semaphore-post sema))) + (make-thread-handle sema) + )) + +(define (blodwen-thread-wait handle) + (blodwen-semaphore-wait (thread-handle-semaphore handle))) + +;; Thread mailboxes + +(define blodwen-thread-data + (make-thread-parameter #f)) + +(define (blodwen-get-thread-data ty) + (blodwen-thread-data)) + +(define (blodwen-set-thread-data ty a) + (blodwen-thread-data a)) + +;; Semaphore + +(define-record semaphore (box mutex condition)) + +(define (blodwen-make-semaphore init) + (make-semaphore (box init) (make-mutex) (make-condition))) + +(define (blodwen-semaphore-post sema) + (with-mutex (semaphore-mutex sema) + (let [(sema-box (semaphore-box sema))] + (set-box! sema-box (+ (unbox sema-box) 1)) + (condition-signal (semaphore-condition sema)) + ))) + +(define (blodwen-semaphore-wait sema) + (with-mutex (semaphore-mutex sema) + (let [(sema-box (semaphore-box sema))] + (when (= (unbox sema-box) 0) + (condition-wait (semaphore-condition sema) (semaphore-mutex sema))) + (set-box! sema-box (- (unbox sema-box) 1)) + ))) + +;; Barrier + +(define-record barrier (count-box num-threads mutex cond)) + +(define (blodwen-make-barrier num-threads) + (make-barrier (box 0) num-threads (make-mutex) (make-condition))) + +(define (blodwen-barrier-wait barrier) + (let [(count-box (barrier-count-box barrier)) + (num-threads (barrier-num-threads barrier)) + (mutex (barrier-mutex barrier)) + (condition (barrier-cond barrier))] + (with-mutex mutex + (let* [(count-old (unbox count-box)) + (count-new (+ count-old 1))] + (set-box! count-box count-new) + (if (= count-new num-threads) + (condition-broadcast condition) + (condition-wait condition mutex)) + )))) + +;; Channel +; With thanks to Alain Zscheile (@zseri) for help with understanding condition +; variables, and figuring out where the problems were and how to solve them. + +(define-record channel (read-mut read-cv read-box val-cv val-box)) + +(define (blodwen-make-channel ty) + (make-channel + (make-mutex) + (make-condition) + (box #t) + (make-condition) + (box '()) + )) + +; block on the read status using read-cv until the value has been read +(define (channel-put-while-helper chan) + (let ([read-mut (channel-read-mut chan)] + [read-box (channel-read-box chan)] + [read-cv (channel-read-cv chan)] + ) + (if (unbox read-box) + (void) ; val has been read, so everything is fine + (begin ; otherwise, block/spin with cv + (condition-wait read-cv read-mut) + (channel-put-while-helper chan) + ) + ))) + +(define (blodwen-channel-put ty chan val) + (with-mutex (channel-read-mut chan) + (channel-put-while-helper chan) + (let ([read-box (channel-read-box chan)] + [val-box (channel-val-box chan)] + ) + (set-box! val-box val) + (set-box! read-box #f) + )) + (condition-signal (channel-val-cv chan)) + ) + +; block on the value until it has been set +(define (channel-get-while-helper chan) + (let ([read-mut (channel-read-mut chan)] + [read-box (channel-read-box chan)] + [val-cv (channel-val-cv chan)] + ) + (if (unbox read-box) + (begin + (condition-wait val-cv read-mut) + (channel-get-while-helper chan) + ) + (void) + ))) + +(define (blodwen-channel-get ty chan) + (mutex-acquire (channel-read-mut chan)) + (channel-get-while-helper chan) + (let* ([val-box (channel-val-box chan)] + [read-box (channel-read-box chan)] + [read-cv (channel-read-cv chan)] + [the-val (unbox val-box)] + ) + (set-box! val-box '()) + (set-box! read-box #t) + (mutex-release (channel-read-mut chan)) + (condition-signal read-cv) + the-val)) + +;; Mutex + +(define (blodwen-make-mutex) + (make-mutex)) +(define (blodwen-mutex-acquire mutex) + (mutex-acquire mutex)) +(define (blodwen-mutex-release mutex) + (mutex-release mutex)) + +;; Condition variable + +(define (blodwen-make-condition) + (make-condition)) +(define (blodwen-condition-wait condition mutex) + (condition-wait condition mutex)) +(define (blodwen-condition-wait-timeout condition mutex timeout) + (let* [(sec (div timeout 1000000)) + (micro (mod timeout 1000000))] + (condition-wait condition mutex (make-time 'time-duration (* 1000 micro) sec)))) +(define (blodwen-condition-signal condition) + (condition-signal condition)) +(define (blodwen-condition-broadcast condition) + (condition-broadcast condition)) + +;; Future + +(define-record future-internal (result ready mutex signal)) +(define (blodwen-make-future work) + (let ([future (make-future-internal #f #f (make-mutex) (make-condition))]) + (fork-thread (lambda () + (let ([result (work)]) + (with-mutex (future-internal-mutex future) + (set-future-internal-result! future result) + (set-future-internal-ready! future #t) + (condition-broadcast (future-internal-signal future)))))) + future)) +(define (blodwen-await-future ty future) + (let ([mutex (future-internal-mutex future)]) + (with-mutex mutex + (if (not (future-internal-ready future)) + (condition-wait (future-internal-signal future) mutex)) + (future-internal-result future)))) + +(define (blodwen-sleep s) (sleep (make-time 'time-duration 0 s))) +(define (blodwen-usleep s) + (let ((sec (div s 1000000)) + (micro (mod s 1000000))) + (sleep (make-time 'time-duration (* 1000 micro) sec)))) + +(define (blodwen-clock-time-utc) (current-time 'time-utc)) +(define (blodwen-clock-time-monotonic) (current-time 'time-monotonic)) +(define (blodwen-clock-time-duration) (current-time 'time-duration)) +(define (blodwen-clock-time-process) (current-time 'time-process)) +(define (blodwen-clock-time-thread) (current-time 'time-thread)) +(define (blodwen-clock-time-gccpu) (current-time 'time-collector-cpu)) +(define (blodwen-clock-time-gcreal) (current-time 'time-collector-real)) +(define (blodwen-is-time? clk) (if (time? clk) 1 0)) +(define (blodwen-clock-second time) (time-second time)) +(define (blodwen-clock-nanosecond time) (time-nanosecond time)) + + +(define (blodwen-arg-count) + (length (command-line))) + +(define (blodwen-arg n) + (if (< n (length (command-line))) (list-ref (command-line) n) "")) + +(define (blodwen-hasenv var) + (if (eq? (getenv var) #f) 0 1)) + +;; Randoms +(define random-seed-register 0) +(define (initialize-random-seed-once) + (if (= (virtual-register random-seed-register) 0) + (let ([seed (time-nanosecond (current-time))]) + (set-virtual-register! random-seed-register seed) + (random-seed seed)))) + +(define (blodwen-random-seed seed) + (set-virtual-register! random-seed-register seed) + (random-seed seed)) +(define blodwen-random + (case-lambda + ;; no argument, pick a real value from [0, 1.0) + [() (begin + (initialize-random-seed-once) + (random 1.0))] + ;; single argument k, pick an integral value from [0, k) + [(k) + (begin + (initialize-random-seed-once) + (if (> k 0) + (random k) + (assertion-violationf 'blodwen-random "invalid range argument ~a" k)))])) + +;; For finalisers + +(define blodwen-finaliser (make-guardian)) +(define (blodwen-register-object obj proc) + (let [(x (cons obj proc))] + (blodwen-finaliser x) + x)) +(define blodwen-run-finalisers + (lambda () + (let run () + (let ([x (blodwen-finaliser)]) + (when x + (((cdr x) (car x)) 'erased) + (run)))))) + +;; For creating and reading back scheme objects + +; read a scheme string and evaluate it, returning 'Just result' on success +; TODO: catch exception! +(define (blodwen-eval-scheme str) + (guard + (x [#t '()]) ; Nothing on failure + (box (eval (read (open-input-string str))))) + ); box == Just + +(define (blodwen-eval-okay obj) + (if (null? obj) + 0 + 1)) + +(define (blodwen-get-eval-result obj) + (unbox obj)) + +(define (blodwen-debug-scheme obj) + (display obj) (newline)) + +(define (blodwen-is-number obj) + (if (number? obj) 1 0)) + +(define (blodwen-is-integer obj) + (if (and (number? obj) (exact? obj)) 1 0)) + +(define (blodwen-is-float obj) + (if (flonum? obj) 1 0)) + +(define (blodwen-is-char obj) + (if (char? obj) 1 0)) + +(define (blodwen-is-string obj) + (if (string? obj) 1 0)) + +(define (blodwen-is-procedure obj) + (if (procedure? obj) 1 0)) + +(define (blodwen-is-symbol obj) + (if (symbol? obj) 1 0)) + +(define (blodwen-is-vector obj) + (if (vector? obj) 1 0)) + +(define (blodwen-is-nil obj) + (if (null? obj) 1 0)) + +(define (blodwen-is-pair obj) + (if (pair? obj) 1 0)) + +(define (blodwen-is-box obj) + (if (box? obj) 1 0)) + +(define (blodwen-make-symbol str) + (string->symbol str)) + +; The below rely on checking that the objects are the right type first. + +(define (blodwen-vector-ref obj i) + (vector-ref obj i)) + +(define (blodwen-vector-length obj) + (vector-length obj)) + +(define (blodwen-vector-list obj) + (vector->list obj)) + +(define (blodwen-unbox obj) + (unbox obj)) + +(define (blodwen-apply obj arg) + (obj arg)) + +(define (blodwen-force obj) + (obj)) + +(define (blodwen-read-symbol sym) + (symbol->string sym)) + +(define (blodwen-id x) x) +(define PreludeC-45Types-fastUnpack (lambda (farg-0) (string-unpack farg-0))) +(define PreludeC-45Types-fastPack (lambda (farg-0) (string-pack farg-0))) +(define PreludeC-45IO-prim__putStr (lambda (farg-0 farg-1) ((foreign-procedure "idris2_putStr" (string) void) farg-0))) +(define PreludeC-45IO-prim__getStr (lambda (farg-0) ((foreign-procedure "idris2_getStr" () string) ))) +(define System-prim__getArgCount (lambda (farg-0) (blodwen-arg-count ))) +(define System-prim__getArg (lambda (farg-0 farg-1) (blodwen-arg farg-0))) +(define System-prim__exit (lambda (farg-0 farg-1) ((foreign-procedure "exit" (int) void) farg-0))) +(define PreludeC-45IO-u--map_Functor_IO (lambda (arg-2 arg-3 ext-0) (let ((act-2 (arg-3 ext-0))) (arg-2 act-2)))) +(define csegen-13 (cons (vector (vector (lambda (u--b) (lambda (u--a) (lambda (u--func) (lambda (arg-8885) (lambda (eta-0) (PreludeC-45IO-u--map_Functor_IO u--func arg-8885 eta-0)))))) (lambda (u--a) (lambda (arg-9931) (lambda (eta-0) arg-9931))) (lambda (u--b) (lambda (u--a) (lambda (arg-9937) (lambda (arg-9944) (lambda (world-4) (let ((act-5 (arg-9937 world-4))) (let ((act-3 (arg-9944 world-4))) (act-5 act-3))))))))) (lambda (u--b) (lambda (u--a) (lambda (arg-10411) (lambda (arg-10414) (lambda (world-0) (let ((act-1 (arg-10411 world-0))) ((arg-10414 act-1) world-0))))))) (lambda (u--a) (lambda (arg-10425) (lambda (world-0) (let ((act-1 (arg-10425 world-0))) (act-1 world-0)))))) (lambda (u--a) (lambda (arg-13095) arg-13095)))) +(define PreludeC-45Types-prim__integerToNat (lambda (arg-0) (let ((sc0 (or (and (<= 0 arg-0) 1) 0))) (cond ((equal? sc0 0) 0)(else arg-0))))) +(define csegen-25 (vector (lambda (arg-5904) (lambda (arg-5907) (+ arg-5904 arg-5907))) (lambda (arg-5914) (lambda (arg-5917) (* arg-5914 arg-5917))) (lambda (arg-5924) (PreludeC-45Types-prim__integerToNat arg-5924)))) +(define csegen-81 (vector (lambda (arg-5904) (lambda (arg-5907) (bs+ arg-5904 arg-5907 63))) (lambda (arg-5914) (lambda (arg-5917) (bs* arg-5914 arg-5917 63))) (lambda (arg-5924) (blodwen-toSignedInt arg-5924 63)))) +(define u--prim__sub_Integer (lambda (arg-0 arg-1) (- arg-0 arg-1))) +(define Builtin-fst (lambda (arg-2) (let ((e-2 (car arg-2))) e-2))) +(define DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 (lambda (arg-4 arg-5 arg-6) (if (null? arg-5) '() (let ((e-3 (car arg-5))) (let ((e-4 (cdr arg-5))) (let ((e-8 (car arg-6))) (let ((e-9 (cdr arg-6))) (cons ((arg-4 e-3) e-8) (DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 arg-4 e-4 e-9))))))))) +(define AnytypeC-45CoreC-45Check-addU (lambda (arg-2 ext-0 ext-1) (DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 (let ((e-3 (vector-ref arg-2 2))) e-3) ext-0 ext-1))) +(define AnytypeC-45CoreC-45Normalise-nval (lambda (arg-0) (case (vector-ref arg-0 0) ((0) 0) ((1) (let ((e-0 (vector-ref arg-0 1))) (+ (AnytypeC-45CoreC-45Normalise-nval e-0) 1))) ((2) (let ((e-1 (vector-ref arg-0 1))) (let ((e-2 (vector-ref arg-0 2))) (+ (AnytypeC-45CoreC-45Normalise-nval e-1) (AnytypeC-45CoreC-45Normalise-nval e-2))))) (else (let ((e-3 (vector-ref arg-0 1))) (let ((e-4 (vector-ref arg-0 2))) (* (AnytypeC-45CoreC-45Normalise-nval e-3) (AnytypeC-45CoreC-45Normalise-nval e-4)))))))) +(define AnytypeC-45CoreC-45Normalise-tnatOfNat (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else (let ((e-0 (- arg-0 1))) (vector 1 (AnytypeC-45CoreC-45Normalise-tnatOfNat e-0))))))) +(define AnytypeC-45CoreC-45Normalise-nnorm (lambda (ext-0) (AnytypeC-45CoreC-45Normalise-tnatOfNat (AnytypeC-45CoreC-45Normalise-nval ext-0)))) +(define AnytypeC-45CoreC-45Normalise-normalise (lambda (arg-1) (case (vector-ref arg-1 0) ((0) (vector 0 )) ((1) (vector 1 )) ((2) (let ((e-3 (vector-ref arg-1 1))) (vector 2 (AnytypeC-45CoreC-45Normalise-nnorm e-3)))) ((3) (let ((e-5 (vector-ref arg-1 1))) (let ((e-6 (vector-ref arg-1 2))) (let ((e-7 (vector-ref arg-1 3))) (vector 3 e-5 (AnytypeC-45CoreC-45Normalise-normalise e-6) (AnytypeC-45CoreC-45Normalise-normalise e-7)))))) (else (let ((e-9 (vector-ref arg-1 1))) (let ((e-10 (vector-ref arg-1 2))) (vector 4 (AnytypeC-45CoreC-45Normalise-normalise e-9) (AnytypeC-45CoreC-45Normalise-normalise e-10)))))))) +(define AnytypeC-45CoreC-45Conversion-tnatEq (lambda (arg-0 arg-1) (case (vector-ref arg-0 0) ((0) (case (vector-ref arg-1 0) ((0) 1)(else 0))) ((1) (let ((e-0 (vector-ref arg-0 1))) (case (vector-ref arg-1 0) ((1) (let ((e-1 (vector-ref arg-1 1))) (AnytypeC-45CoreC-45Conversion-tnatEq e-0 e-1)))(else 0))))(else 0)))) +(define AnytypeC-45CoreC-45Conversion-structEq (lambda (arg-1 arg-2 arg-3) (case (vector-ref arg-2 0) ((0) (case (vector-ref arg-3 0) ((0) 1)(else 0))) ((1) (case (vector-ref arg-3 0) ((1) 1)(else 0))) ((2) (let ((e-3 (vector-ref arg-2 1))) (case (vector-ref arg-3 0) ((2) (let ((e-14 (vector-ref arg-3 1))) (AnytypeC-45CoreC-45Conversion-tnatEq e-3 e-14)))(else 0)))) ((3) (let ((e-5 (vector-ref arg-2 1))) (let ((e-6 (vector-ref arg-2 2))) (let ((e-7 (vector-ref arg-2 3))) (case (vector-ref arg-3 0) ((3) (let ((e-16 (vector-ref arg-3 1))) (let ((e-17 (vector-ref arg-3 2))) (let ((e-18 (vector-ref arg-3 3))) (let ((e-26 (vector-ref arg-1 5))) (let ((sc2 ((e-26 e-5) e-16))) (case (vector-ref sc2 0) ((0) (let ((sc3 (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-6 e-17))) (cond ((equal? sc3 1) (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-7 e-18)) (else 0)))) (else 0))))))))(else 0)))))) ((4) (let ((e-9 (vector-ref arg-2 1))) (let ((e-10 (vector-ref arg-2 2))) (case (vector-ref arg-3 0) ((4) (let ((e-20 (vector-ref arg-3 1))) (let ((e-21 (vector-ref arg-3 2))) (let ((sc2 (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-9 e-20))) (cond ((equal? sc2 1) (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-10 e-21)) (else 0))))))(else 0)))))(else 0)))) +(define AnytypeC-45CoreC-45Conversion-convertible (lambda (arg-1 arg-2 arg-3) (AnytypeC-45CoreC-45Conversion-structEq arg-1 (AnytypeC-45CoreC-45Normalise-normalise arg-2) (AnytypeC-45CoreC-45Normalise-normalise arg-3)))) +(define PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (lambda (arg-3 arg-4) (case (vector-ref arg-3 0) ((0) (let ((e-2 (vector-ref arg-3 1))) (vector 0 e-2))) (else (let ((e-5 (vector-ref arg-3 1))) (arg-4 e-5)))))) +(define AnytypeC-45CoreC-45Check-check (lambda (arg-1 arg-2 arg-3 arg-4 arg-5) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 arg-4) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (let ((sc1 (AnytypeC-45CoreC-45Conversion-convertible arg-1 e-2 arg-5))) (cond ((equal? sc1 1) (vector 1 e-3)) (else (vector 0 2)))))))))) +(define DataC-45Vect-index (lambda (arg-2 arg-3) (cond ((equal? arg-2 0) (let ((e-5 (car arg-3))) e-5))(else (let ((e-2 (- arg-2 1))) (let ((e-10 (cdr arg-3))) (DataC-45Vect-index e-2 e-10))))))) +(define DataC-45Vect-replicate (lambda (arg-1 arg-2) (cond ((equal? arg-1 0) '())(else (let ((e-0 (- arg-1 1))) (cons arg-2 (DataC-45Vect-replicate e-0 arg-2))))))) +(define AnytypeC-45CoreC-45Check-zeroU (lambda (arg-1 arg-2) (DataC-45Vect-replicate arg-2 (let ((e-1 (vector-ref arg-1 0))) e-1)))) +(define AnytypeC-45CoreC-45Check-oneAt (lambda (arg-1 arg-2 arg-3) (cond ((equal? arg-2 0) (blodwen-error-quit "Nat case not covered"))(else (let ((e-0 (- arg-2 1))) (cond ((equal? arg-3 0) (cons (let ((e-2 (vector-ref arg-1 1))) e-2) (AnytypeC-45CoreC-45Check-zeroU arg-1 e-0)))(else (let ((e-3 (- arg-3 1))) (cons (let ((e-1 (vector-ref arg-1 0))) e-1) (AnytypeC-45CoreC-45Check-oneAt arg-1 e-0 e-3)))))))))) +(define DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 (lambda (arg-3 arg-4) (if (null? arg-4) '() (let ((e-3 (car arg-4))) (let ((e-4 (cdr arg-4))) (cons (arg-3 e-3) (DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 arg-3 e-4))))))) +(define AnytypeC-45CoreC-45Check-scaleU (lambda (arg-2 arg-3 ext-0) (DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 (let ((e-4 (vector-ref arg-2 3))) (e-4 arg-3)) ext-0))) +(define AnytypeC-45CoreC-45Check-infer (lambda (arg-1 arg-2 arg-3 arg-4) (case (vector-ref arg-4 0) ((0) (let ((e-2 (vector-ref arg-4 1))) (vector 1 (cons (DataC-45Vect-index e-2 arg-3) (AnytypeC-45CoreC-45Check-oneAt arg-1 arg-2 e-2))))) ((1) (let ((e-5 (vector-ref arg-4 1))) (let ((e-6 (vector-ref arg-4 2))) (let ((e-7 (vector-ref arg-4 3))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 (+ arg-2 1) (cons e-6 arg-3) e-7) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (let ((e-8 (car e-3))) (let ((e-4 (cdr e-3))) (let ((sc3 (let ((e-25 (vector-ref arg-1 4))) ((e-25 e-8) e-5)))) (cond ((equal? sc3 1) (vector 1 (cons (vector 3 e-5 e-6 e-2) e-4))) (else (vector 0 3)))))))))))))) ((2) (let ((e-10 (vector-ref arg-4 1))) (let ((e-11 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-10) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (case (vector-ref e-2 0) ((3) (let ((e-1 (vector-ref e-2 1))) (let ((e-5 (vector-ref e-2 2))) (let ((e-4 (vector-ref e-2 3))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-check arg-1 arg-2 arg-3 e-11 e-5) (lambda (u--ux) (vector 1 (cons e-4 (AnytypeC-45CoreC-45Check-addU arg-1 e-3 (AnytypeC-45CoreC-45Check-scaleU arg-1 e-1 u--ux))))))))))(else (vector 0 0)))))))))) ((3) (let ((e-14 (vector-ref arg-4 1))) (let ((e-15 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-14) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-15) (lambda (_-1) (let ((e-5 (car _-1))) (let ((e-4 (cdr _-1))) (vector 1 (cons (vector 4 e-2 e-5) (AnytypeC-45CoreC-45Check-addU arg-1 e-3 e-4)))))))))))))) ((4) (let ((e-18 (vector-ref arg-4 1))) (let ((e-19 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-18) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (case (vector-ref e-2 0) ((4) (let ((e-1 (vector-ref e-2 1))) (let ((e-4 (vector-ref e-2 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 (+ (+ arg-2 1) 1) (cons e-4 (cons e-1 arg-3)) e-19) (lambda (_-1) (let ((e-6 (car _-1))) (let ((e-5 (cdr _-1))) (let ((e-8 (car e-5))) (let ((e-7 (cdr e-5))) (let ((e-10 (car e-7))) (let ((e-9 (cdr e-7))) (let ((sc6 (let ((sc7 (let ((e-29 (vector-ref arg-1 4))) ((e-29 e-10) (let ((e-53 (vector-ref arg-1 1))) e-53))))) (cond ((equal? sc7 1) (let ((e-29 (vector-ref arg-1 4))) ((e-29 e-8) (let ((e-53 (vector-ref arg-1 1))) e-53)))) (else 0))))) (cond ((equal? sc6 1) (vector 1 (cons e-6 (AnytypeC-45CoreC-45Check-addU arg-1 e-3 e-9)))) (else (vector 0 3)))))))))))))))(else (vector 0 1)))))))))) ((5) (vector 1 (cons (vector 0 ) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))) ((6) (vector 1 (cons (vector 1 ) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))) (else (let ((e-27 (vector-ref arg-4 1))) (vector 1 (cons (vector 2 e-27) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))))))) +(define AnytypeC-45Kernel-checkClosed (lambda (arg-1 arg-2) (let ((sc0 (AnytypeC-45CoreC-45Check-infer arg-1 0 '() arg-2))) (case (vector-ref sc0 0) ((0) (let ((e-2 (vector-ref sc0 1))) (vector 0 e-2))) (else (let ((e-5 (vector-ref sc0 1))) (vector 1 (AnytypeC-45CoreC-45Normalise-normalise (Builtin-fst e-5))))))))) +(define System-exitWith (lambda (arg-2 arg-3) (if (null? arg-3) (let ((e-2 (cdr arg-2))) ((e-2 'erased) (lambda (eta-0) (System-prim__exit 0 eta-0)))) (let ((e-0 (car arg-3))) (let ((e-2 (cdr arg-2))) ((e-2 'erased) (lambda (eta-0) (System-prim__exit e-0 eta-0)))))))) +(define AnytypeC-45Main-exitVerdict (lambda (arg-0) (cond ((equal? arg-0 0) (System-exitWith csegen-13 '())) ((equal? arg-0 1) (System-exitWith csegen-13 (cons 1 (vector 0 )))) (else (System-exitWith csegen-13 (cons 2 (vector 0 ))))))) +(define PreludeC-45Show-firstCharIs (lambda (arg-0 arg-1) (cond ((equal? arg-1 "") 0)(else (arg-0 (string-ref arg-1 0)))))) +(define PreludeC-45Show-showParens (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) arg-1) (else (string-append "(" (string-append arg-1 ")")))))) +(define PreludeC-45EqOrd-u--C-61C-61_Eq_Char (lambda (arg-0 arg-1) (let ((sc0 (or (and (char=? arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 1)(else 0))) ((equal? arg-0 1) (cond ((equal? arg-1 1) 1)(else 0))) ((equal? arg-0 2) (cond ((equal? arg-1 2) 1)(else 0)))(else 0)))) +(define PreludeC-45EqOrd-u--C-47C-61_Eq_Ordering (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else 1))))) +(define PreludeC-45Show-precCon (lambda (arg-0) (case (vector-ref arg-0 0) ((0) 0) ((1) 1) ((2) 2) ((3) 3) ((4) 4) ((5) 5) (else 6)))) +(define PreludeC-45EqOrd-u--C-60_Ord_Integer (lambda (arg-0 arg-1) (let ((sc0 (or (and (< arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-61C-61_Eq_Integer (lambda (arg-0 arg-1) (let ((sc0 (or (and (= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--compare_Ord_Integer (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-60_Ord_Integer arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else (let ((sc1 (PreludeC-45EqOrd-u--C-61C-61_Eq_Integer arg-0 arg-1))) (cond ((equal? sc1 1) 1) (else 2)))))))) +(define PreludeC-45Show-u--compare_Ord_Prec (lambda (arg-0 arg-1) (case (vector-ref arg-0 0) ((4) (let ((e-0 (vector-ref arg-0 1))) (case (vector-ref arg-1 0) ((4) (let ((e-1 (vector-ref arg-1 1))) (PreludeC-45EqOrd-u--compare_Ord_Integer e-0 e-1)))(else (PreludeC-45EqOrd-u--compare_Ord_Integer (PreludeC-45Show-precCon arg-0) (PreludeC-45Show-precCon arg-1))))))(else (PreludeC-45EqOrd-u--compare_Ord_Integer (PreludeC-45Show-precCon arg-0) (PreludeC-45Show-precCon arg-1)))))) +(define PreludeC-45Show-u--C-62C-61_Ord_Prec (lambda (arg-0 arg-1) (PreludeC-45EqOrd-u--C-47C-61_Eq_Ordering (PreludeC-45Show-u--compare_Ord_Prec arg-0 arg-1) 0))) +(define PreludeC-45Show-primNumShow (lambda (arg-1 arg-2 arg-3) (let ((u--str (arg-1 arg-3))) (PreludeC-45Show-showParens (let ((sc0 (PreludeC-45Show-u--C-62C-61_Ord_Prec arg-2 (vector 5 )))) (cond ((equal? sc0 1) (PreludeC-45Show-firstCharIs (lambda (arg-0) (PreludeC-45EqOrd-u--C-61C-61_Eq_Char arg-0 #\-)) u--str)) (else 0))) u--str)))) +(define PreludeC-45Show-u--showPrec_Show_Integer (lambda (ext-0 ext-1) (PreludeC-45Show-primNumShow (lambda (eta-0) (number->string eta-0)) ext-0 ext-1))) +(define PreludeC-45Show-u--show_Show_Integer (lambda (arg-0) (PreludeC-45Show-u--showPrec_Show_Integer (vector 0 ) arg-0))) +(define PreludeC-45Show-u--show_Show_Nat (lambda (arg-0) (PreludeC-45Show-u--show_Show_Integer arg-0))) +(define AnytypeC-45Kernel-showTy (lambda (arg-1 arg-2) (case (vector-ref arg-2 0) ((0) "Unit") ((1) "Bool") ((2) (let ((e-3 (vector-ref arg-2 1))) (string-append "Bits " (PreludeC-45Show-u--show_Show_Nat (AnytypeC-45CoreC-45Normalise-nval e-3))))) ((3) (let ((e-5 (vector-ref arg-2 1))) (let ((e-6 (vector-ref arg-2 2))) (let ((e-7 (vector-ref arg-2 3))) (string-append "(" (string-append (AnytypeC-45Kernel-showTy arg-1 e-6) (string-append " " (string-append (arg-1 e-5) (string-append "-> " (string-append (AnytypeC-45Kernel-showTy arg-1 e-7) ")")))))))))) (else (let ((e-9 (vector-ref arg-2 1))) (let ((e-10 (vector-ref arg-2 2))) (string-append "(" (string-append (AnytypeC-45Kernel-showTy arg-1 e-9) (string-append " * " (string-append (AnytypeC-45Kernel-showTy arg-1 e-10) ")")))))))))) +(define AnytypeC-45CoreC-45Syntax-u--show_Show_CheckError (lambda (arg-0) (cond ((equal? arg-0 0) "not a function") ((equal? arg-0 1) "not a pair") ((equal? arg-0 2) "type mismatch") (else "usage violation")))) +(define AnytypeC-45Main-case--run-4631 (lambda (arg-1 arg-2 arg-3 arg-4 arg-5 ext-0) (if (null? arg-5) (let ((act-1 (PreludeC-45IO-prim__putStr "ILLFORMED unreadable or ill-scoped term\xa;" ext-0))) ((AnytypeC-45Main-exitVerdict 2) ext-0)) (let ((e-2 (unbox arg-5))) (let ((sc1 (AnytypeC-45Kernel-checkClosed arg-3 e-2))) (case (vector-ref sc1 0) ((1) (let ((e-3 (vector-ref sc1 1))) (let ((act-1 (PreludeC-45IO-prim__putStr (string-append (string-append "ACCEPT " (AnytypeC-45Kernel-showTy arg-2 e-3)) "\xa;") ext-0))) ((AnytypeC-45Main-exitVerdict 0) ext-0)))) (else (let ((e-5 (vector-ref sc1 1))) (let ((act-1 (PreludeC-45IO-prim__putStr (string-append (string-append "REJECT " (AnytypeC-45CoreC-45Syntax-u--show_Show_CheckError e-5)) "\xa;") ext-0))) ((AnytypeC-45Main-exitVerdict 1) ext-0)))))))))) +(define AnytypeC-45Main-usage (lambda (ext-0) (let ((act-1 (PreludeC-45IO-prim__putStr "ILLFORMED usage: anytype-check --discipline affine|exact\xa;" ext-0))) ((AnytypeC-45Main-exitVerdict 2) ext-0)))) +(define DataC-45Nat-fromLteSucc (lambda (arg-2) (cond ((equal? arg-2 0) (blodwen-error-quit "Nat case not covered"))(else (let ((e-2 (- arg-2 1))) e-2))))) +(define DataC-45Nat-succNotLTEzero (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define DataC-45Nat-isLTE (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (vector 0 0))(else (let ((e-0 (- arg-0 1))) (cond ((equal? arg-1 0) (vector 1 (lambda (eta-0) (DataC-45Nat-succNotLTEzero eta-0))))(else (let ((e-1 (- arg-1 1))) (let ((sc0 (DataC-45Nat-isLTE e-0 e-1))) (case (vector-ref sc0 0) ((1) (let ((e-2 (vector-ref sc0 1))) (vector 1 (lambda (eta-0) (e-2 (DataC-45Nat-fromLteSucc eta-0)))))) (else (let ((e-3 (vector-ref sc0 1))) (vector 0 (+ e-3 1)))))))))))))) +(define DataC-45Nat-isLT (lambda (arg-0 arg-1) (DataC-45Nat-isLTE (+ arg-0 1) arg-1))) +(define DataC-45Fin-natToFin (lambda (arg-0 arg-1) (let ((sc0 (DataC-45Nat-isLT arg-0 arg-1))) (case (vector-ref sc0 0) ((0) (box arg-0)) (else '()))))) +(define DataC-45String-strM (lambda (arg-0) (cond ((equal? arg-0 "") '())(else (cons (string-ref arg-0 0) (substring arg-0 1 (string-length arg-0))))))) +(define DataC-45String-with--asList-9518 (lambda (arg-0 arg-1) (cond ((equal? arg-0 "") (if (null? arg-1) (vector 0 ) (let ((e-0 (car arg-1))) (let ((e-1 (cdr arg-1))) (vector 1 e-0 e-1 (lambda () (DataC-45String-asList e-1)))))))(else (let ((e-0 (car arg-1))) (let ((e-1 (cdr arg-1))) (vector 1 e-0 e-1 (lambda () (DataC-45String-asList e-1))))))))) +(define DataC-45String-asList (lambda (arg-0) (DataC-45String-with--asList-9518 arg-0 (DataC-45String-strM arg-0)))) +(define PreludeC-45Types-isSpace (lambda (arg-0) (cond ((equal? arg-0 #\ ) 1) ((equal? arg-0 (integer->char 9)) 1) ((equal? arg-0 (integer->char 13)) 1) ((equal? arg-0 (integer->char 10)) 1) ((equal? arg-0 (integer->char 12)) 1) ((equal? arg-0 (integer->char 11)) 1) ((equal? arg-0 (integer->char 160)) 1)(else 0)))) +(define DataC-45String-with--ltrim-9542 (lambda (arg-0 arg-1) (cond ((equal? arg-0 "") (case (vector-ref arg-1 0) ((0) "")(else (let ((e-0 (vector-ref arg-1 1))) (let ((e-1 (vector-ref arg-1 2))) (let ((e-2 (vector-ref arg-1 3))) (let ((u--str (string-cons e-0 e-1))) (let ((sc2 (PreludeC-45Types-isSpace e-0))) (cond ((equal? sc2 1) (DataC-45String-with--ltrim-9542 e-1 (e-2))) (else u--str))))))))))(else (let ((e-0 (vector-ref arg-1 1))) (let ((e-1 (vector-ref arg-1 2))) (let ((e-2 (vector-ref arg-1 3))) (let ((u--str (string-cons e-0 e-1))) (let ((sc1 (PreludeC-45Types-isSpace e-0))) (cond ((equal? sc1 1) (DataC-45String-with--ltrim-9542 e-1 (e-2))) (else u--str))))))))))) +(define DataC-45String-ltrim (lambda (arg-0) (DataC-45String-with--ltrim-9542 arg-0 (DataC-45String-asList arg-0)))) +(define DataC-45String-trim (lambda (ext-0) (DataC-45String-ltrim (string-reverse (DataC-45String-ltrim (string-reverse ext-0)))))) +(define PreludeC-45EqOrd-u--C-60C-61_Ord_Char (lambda (arg-0 arg-1) (let ((sc0 (or (and (char<=? arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-62C-61_Ord_Char (lambda (arg-0 arg-1) (let ((sc0 (or (and (char>=? arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define DataC-45String-parseNumWithoutSign (lambda (arg-0 arg-1) (if (null? arg-0) (box arg-1) (let ((e-2 (car arg-0))) (let ((e-3 (cdr arg-0))) (let ((sc1 (let ((sc2 (PreludeC-45EqOrd-u--C-62C-61_Ord_Char e-2 #\0))) (cond ((equal? sc2 1) (PreludeC-45EqOrd-u--C-60C-61_Ord_Char e-2 #\9)) (else 0))))) (cond ((equal? sc1 1) (DataC-45String-parseNumWithoutSign e-3 (+ (* arg-1 10) (bs- (cast-char-boundedInt e-2 63) (cast-char-boundedInt #\0 63) 63)))) (else '())))))))) +(define PreludeC-45Types-u--map_Functor_Maybe (lambda (arg-2 arg-3) (if (null? arg-3) '() (let ((e-1 (unbox arg-3))) (box (arg-2 e-1)))))) +(define DataC-45String-with--parsePositiveC-44parsePosTrimmed-9869 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (cond ((equal? arg-3 "") (if (null? arg-4) '() (let ((e-0 (car arg-4))) (let ((e-1 (cdr arg-4))) (cond ((equal? e-0 #\+) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (let ((e-3 (vector-ref arg-1 2))) (e-3 eta-0))) (DataC-45String-parseNumWithoutSign (PreludeC-45Types-fastUnpack e-1) 0)))(else (let ((sc3 (let ((sc4 (PreludeC-45EqOrd-u--C-62C-61_Ord_Char e-0 #\0))) (cond ((equal? sc4 1) (PreludeC-45EqOrd-u--C-60C-61_Ord_Char e-0 #\9)) (else 0))))) (cond ((equal? sc3 1) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (let ((e-3 (vector-ref arg-1 2))) (e-3 eta-0))) (DataC-45String-parseNumWithoutSign (PreludeC-45Types-fastUnpack e-1) (bs- (cast-char-boundedInt e-0 63) (cast-char-boundedInt #\0 63) 63)))) (else '())))))))))(else (let ((e-0 (car arg-4))) (let ((e-1 (cdr arg-4))) (cond ((equal? e-0 #\+) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (let ((e-3 (vector-ref arg-1 2))) (e-3 eta-0))) (DataC-45String-parseNumWithoutSign (PreludeC-45Types-fastUnpack e-1) 0)))(else (let ((sc1 (let ((sc2 (PreludeC-45EqOrd-u--C-62C-61_Ord_Char e-0 #\0))) (cond ((equal? sc2 1) (PreludeC-45EqOrd-u--C-60C-61_Ord_Char e-0 #\9)) (else 0))))) (cond ((equal? sc1 1) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (let ((e-3 (vector-ref arg-1 2))) (e-3 eta-0))) (DataC-45String-parseNumWithoutSign (PreludeC-45Types-fastUnpack e-1) (bs- (cast-char-boundedInt e-0 63) (cast-char-boundedInt #\0 63) 63)))) (else '()))))))))))) +(define DataC-45String-n--4450-9863-u--parsePosTrimmed (lambda (arg-1 arg-2 arg-3) (DataC-45String-with--parsePositiveC-44parsePosTrimmed-9869 'erased arg-1 arg-3 arg-3 (DataC-45String-strM arg-3)))) +(define DataC-45String-parsePositive (lambda (arg-1 arg-2) (DataC-45String-n--4450-9863-u--parsePosTrimmed arg-1 arg-2 (DataC-45String-trim arg-2)))) +(define PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (lambda (arg-2 arg-3) (if (null? arg-2) '() (let ((e-1 (unbox arg-2))) (if (null? arg-3) '() (let ((e-3 (unbox arg-3))) (box (e-1 e-3)))))))) +(define AnytypeC-45Sexp-parseTNat (lambda (arg-0) (case (vector-ref arg-0 0) ((0) (let ((e-0 (vector-ref arg-0 1))) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (AnytypeC-45CoreC-45Normalise-tnatOfNat eta-0)) (DataC-45String-parsePositive csegen-25 e-0)))) ((1) (let ((e-1 (vector-ref arg-0 1))) (if (null? e-1) '() (let ((e-3 (car e-1))) (let ((e-4 (cdr e-1))) (case (vector-ref e-3 0) ((0) (let ((e-5 (vector-ref e-3 1))) (cond ((equal? e-5 "+") (if (null? e-4) '() (let ((e-7 (car e-4))) (let ((e-8 (cdr e-4))) (if (null? e-8) '() (let ((e-10 (car e-8))) (let ((e-11 (cdr e-8))) (if (null? e-11) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 2 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTNat e-7)) (AnytypeC-45Sexp-parseTNat e-10)) '())))))))) ((equal? e-5 "*") (if (null? e-4) '() (let ((e-14 (car e-4))) (let ((e-15 (cdr e-4))) (if (null? e-15) '() (let ((e-17 (car e-15))) (let ((e-18 (cdr e-15))) (if (null? e-18) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 3 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTNat e-14)) (AnytypeC-45Sexp-parseTNat e-17)) '()))))))))(else '()))))(else '())))))))(else '())))) +(define AnytypeC-45Sexp-parseTy (lambda (arg-1 arg-2) (case (vector-ref arg-2 0) ((0) (let ((e-0 (vector-ref arg-2 1))) (cond ((equal? e-0 "unit") (box (vector 0 ))) ((equal? e-0 "bool") (box (vector 1 )))(else '())))) ((1) (let ((e-1 (vector-ref arg-2 1))) (if (null? e-1) '() (let ((e-3 (car e-1))) (let ((e-4 (cdr e-1))) (case (vector-ref e-3 0) ((0) (let ((e-5 (vector-ref e-3 1))) (cond ((equal? e-5 "bits") (if (null? e-4) '() (let ((e-7 (car e-4))) (let ((e-8 (cdr e-4))) (if (null? e-8) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (vector 2 eta-0)) (AnytypeC-45Sexp-parseTNat e-7)) '()))))) ((equal? e-5 "arr") (if (null? e-4) '() (let ((e-11 (car e-4))) (let ((e-12 (cdr e-4))) (case (vector-ref e-11 0) ((0) (let ((e-13 (vector-ref e-11 1))) (if (null? e-12) '() (let ((e-15 (car e-12))) (let ((e-16 (cdr e-12))) (if (null? e-16) '() (let ((e-18 (car e-16))) (let ((e-19 (cdr e-16))) (if (null? e-19) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (vector 3 eta-0 eta-1 eta-2))))) (arg-1 e-13)) (AnytypeC-45Sexp-parseTy arg-1 e-15)) (AnytypeC-45Sexp-parseTy arg-1 e-18)) '())))))))))(else '())))))) ((equal? e-5 "prod") (if (null? e-4) '() (let ((e-22 (car e-4))) (let ((e-23 (cdr e-4))) (if (null? e-23) '() (let ((e-25 (car e-23))) (let ((e-26 (cdr e-23))) (if (null? e-26) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 4 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTy arg-1 e-22)) (AnytypeC-45Sexp-parseTy arg-1 e-25)) '()))))))))(else '()))))(else '())))))))(else '())))) +(define PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (lambda (arg-2 arg-3) (if (null? arg-2) '() (let ((e-2 (unbox arg-2))) (arg-3 e-2))))) +(define AnytypeC-45Sexp-parseTerm (lambda (arg-1 arg-2 arg-3) (case (vector-ref arg-3 0) ((1) (let ((e-0 (vector-ref arg-3 1))) (if (null? e-0) '() (let ((e-3 (car e-0))) (let ((e-4 (cdr e-0))) (case (vector-ref e-3 0) ((0) (let ((e-5 (vector-ref e-3 1))) (cond ((equal? e-5 "var") (if (null? e-4) '() (let ((e-7 (car e-4))) (let ((e-8 (cdr e-4))) (case (vector-ref e-7 0) ((0) (let ((e-9 (vector-ref e-7 1))) (if (null? e-8) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (DataC-45String-parsePositive csegen-25 e-9) (lambda (u--kn) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (DataC-45Fin-natToFin u--kn arg-2) (lambda (u--i) (box (vector 0 u--i)))))) '())))(else '())))))) ((equal? e-5 "lam") (if (null? e-4) '() (let ((e-12 (car e-4))) (let ((e-13 (cdr e-4))) (case (vector-ref e-12 0) ((0) (let ((e-14 (vector-ref e-12 1))) (if (null? e-13) '() (let ((e-16 (car e-13))) (let ((e-17 (cdr e-13))) (if (null? e-17) '() (let ((e-19 (car e-17))) (let ((e-20 (cdr e-17))) (if (null? e-20) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (vector 1 eta-0 eta-1 eta-2))))) (arg-1 e-14)) (AnytypeC-45Sexp-parseTy arg-1 e-16)) (AnytypeC-45Sexp-parseTerm arg-1 (+ arg-2 1) e-19)) '())))))))))(else '())))))) ((equal? e-5 "app") (if (null? e-4) '() (let ((e-23 (car e-4))) (let ((e-24 (cdr e-4))) (if (null? e-24) '() (let ((e-26 (car e-24))) (let ((e-27 (cdr e-24))) (if (null? e-27) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 2 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-23)) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-26)) '())))))))) ((equal? e-5 "pair") (if (null? e-4) '() (let ((e-30 (car e-4))) (let ((e-31 (cdr e-4))) (if (null? e-31) '() (let ((e-33 (car e-31))) (let ((e-34 (cdr e-31))) (if (null? e-34) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 3 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-30)) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-33)) '())))))))) ((equal? e-5 "letpair") (if (null? e-4) '() (let ((e-37 (car e-4))) (let ((e-38 (cdr e-4))) (if (null? e-38) '() (let ((e-40 (car e-38))) (let ((e-41 (cdr e-38))) (if (null? e-41) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 4 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-37)) (AnytypeC-45Sexp-parseTerm arg-1 (+ (+ arg-2 1) 1) e-40)) '())))))))) ((equal? e-5 "word") (if (null? e-4) '() (let ((e-44 (car e-4))) (let ((e-45 (cdr e-4))) (if (null? e-45) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (vector 7 eta-0)) (AnytypeC-45Sexp-parseTNat e-44)) '())))))(else '()))))(else '()))))))) ((0) (let ((e-1 (vector-ref arg-3 1))) (cond ((equal? e-1 "tt") (box (vector 5 ))) ((equal? e-1 "true") (box (vector 6 1))) ((equal? e-1 "false") (box (vector 6 0)))(else '()))))(else '())))) +(define PreludeC-45TypesC-45List-lengthPlus (lambda (arg-1 arg-2) (if (null? arg-2) arg-1 (let ((e-3 (cdr arg-2))) (PreludeC-45TypesC-45List-lengthPlus (+ arg-1 1) e-3))))) +(define PreludeC-45TypesC-45List-lengthTR (lambda (ext-0) (PreludeC-45TypesC-45List-lengthPlus 0 ext-0))) +(define AnytypeC-45Sexp-readMany (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) '())(else (let ((e-0 (- arg-0 1))) (if (null? arg-1) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readOne e-0 arg-1) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readMany e-0 e-3) (lambda (_-1) (let ((e-5 (car _-1))) (let ((e-4 (cdr _-1))) (box (cons (cons e-2 e-5) e-4)))))))))) (let ((e-2 (car arg-1))) (let ((e-3 (cdr arg-1))) (case (vector-ref e-2 0) ((1) (box (cons '() e-3)))(else (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readOne e-0 arg-1) (lambda (_-0) (let ((e-5 (car _-0))) (let ((e-4 (cdr _-0))) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readMany e-0 e-4) (lambda (_-1) (let ((e-7 (car _-1))) (let ((e-6 (cdr _-1))) (box (cons (cons e-5 e-7) e-6)))))))))))))))))))) +(define AnytypeC-45Sexp-readOne (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) '())(else (let ((e-0 (- arg-0 1))) (if (null? arg-1) '() (let ((e-2 (car arg-1))) (let ((e-3 (cdr arg-1))) (case (vector-ref e-2 0) ((2) (let ((e-4 (vector-ref e-2 1))) (box (cons (vector 0 e-4) e-3)))) ((0) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readMany e-0 e-3) (lambda (_-0) (let ((e-5 (car _-0))) (let ((e-4 (cdr _-0))) (box (cons (vector 1 e-5) e-4)))))))(else '())))))))))) +(define PreludeC-45TypesC-45List-reverseOnto (lambda (arg-1 arg-2) (if (null? arg-2) arg-1 (let ((e-2 (car arg-2))) (let ((e-3 (cdr arg-2))) (PreludeC-45TypesC-45List-reverseOnto (cons e-2 arg-1) e-3)))))) +(define PreludeC-45TypesC-45List-reverse (lambda (ext-0) (PreludeC-45TypesC-45List-reverseOnto '() ext-0))) +(define AnytypeC-45Sexp-flush (lambda (arg-0 arg-1) (if (null? arg-0) arg-1 (cons (vector 2 (PreludeC-45Types-fastPack (PreludeC-45TypesC-45List-reverse arg-0))) arg-1)))) +(define AnytypeC-45Sexp-tokGo (lambda (arg-0 arg-1) (if (null? arg-1) (AnytypeC-45Sexp-flush arg-0 '()) (let ((e-2 (car arg-1))) (let ((e-3 (cdr arg-1))) (let ((sc1 (PreludeC-45EqOrd-u--C-61C-61_Eq_Char e-2 #\())) (cond ((equal? sc1 1) (AnytypeC-45Sexp-flush arg-0 (cons (vector 0 ) (AnytypeC-45Sexp-tokGo '() e-3)))) (else (let ((sc2 (PreludeC-45EqOrd-u--C-61C-61_Eq_Char e-2 #\)))) (cond ((equal? sc2 1) (AnytypeC-45Sexp-flush arg-0 (cons (vector 1 ) (AnytypeC-45Sexp-tokGo '() e-3)))) (else (let ((sc3 (PreludeC-45Types-isSpace e-2))) (cond ((equal? sc3 1) (AnytypeC-45Sexp-flush arg-0 (AnytypeC-45Sexp-tokGo '() e-3))) (else (AnytypeC-45Sexp-tokGo (cons e-2 arg-0) e-3))))))))))))))) +(define AnytypeC-45Sexp-tokenise (lambda (arg-0) (AnytypeC-45Sexp-tokGo '() (PreludeC-45Types-fastUnpack arg-0)))) +(define AnytypeC-45Sexp-readSexp (lambda (arg-0) (let ((u--toks (AnytypeC-45Sexp-tokenise arg-0))) (let ((sc0 (AnytypeC-45Sexp-readOne (+ (PreludeC-45TypesC-45List-lengthTR u--toks) 1) u--toks))) (if (null? sc0) '() (let ((e-1 (unbox sc0))) (if (null? e-1) '() (let ((e-4 (car e-1))) (let ((e-5 (cdr e-1))) (if (null? e-5) (box e-4) '())))))))))) +(define AnytypeC-45Sexp-parseClosed (lambda (arg-1 arg-2) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readSexp arg-2) (lambda (eta-0) (AnytypeC-45Sexp-parseTerm arg-1 0 eta-0))))) +(define AnytypeC-45Main-run (lambda (arg-1 arg-2 arg-3 arg-4) (lambda (eta-0) (AnytypeC-45Main-case--run-4631 arg-4 arg-3 arg-2 arg-1 (AnytypeC-45Sexp-parseClosed arg-1 arg-4) eta-0)))) +(define AnytypeC-45GradeC-45Affine-qadd (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 2))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 1) ((equal? arg-1 1) 2) (else 2))) (else (cond ((equal? arg-1 0) 2) ((equal? arg-1 1) 2) (else 2)))))) +(define AnytypeC-45GradeC-45Affine-qaddAssoc (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qaddComm (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 ))))))) +(define PreludeC-45Uninhabited-void (lambda (ext-0) (display "Error: Executed 'void'"))) +(define PreludeC-45Uninhabited-absurd (lambda (arg-2 arg-3) (PreludeC-45Uninhabited-void 'erased))) +(define DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Affine-qaddMono (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 ))))))))))) +(define AnytypeC-45GradeC-45Affine-qaddZeroL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-q0NotQ1 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Affine-q0NotQW (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Affine-q1NotQW (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Affine-qdec (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 (vector 0 ))) ((equal? arg-1 1) (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q0NotQ1 eta-0)))) (else (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q0NotQW eta-0)))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q0NotQ1 (vector 0 ))))) ((equal? arg-1 1) (vector 0 (vector 0 ))) (else (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q1NotQW eta-0)))))) (else (cond ((equal? arg-1 0) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q0NotQW (vector 0 ))))) ((equal? arg-1 1) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q1NotQW (vector 0 ))))) (else (vector 0 (vector 0 )))))))) +(define AnytypeC-45GradeC-45Affine-qdistribL (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qdistribR (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qleq (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 1) ((equal? arg-1 1) 1) (else 1))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 1))) (else (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 0) (else 1)))))) +(define AnytypeC-45GradeC-45Affine-qleqAntisym (lambda (arg-0 arg-1 arg-2 arg-3) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) ((equal? arg-1 1) (vector 0 )) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) (else (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) ((equal? arg-1 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) (else (vector 0 ))))))) +(define AnytypeC-45GradeC-45Affine-qleqRefl (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-qleqTrans (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qmul (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 0) (else 0))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 2))) (else (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 2) (else 2)))))) +(define AnytypeC-45GradeC-45Affine-qmulAssoc (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) +(define AnytypeC-45GradeC-45Affine-qmulMono (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 ))))))))))) +(define AnytypeC-45GradeC-45Affine-qmulOneL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-qmulOneR (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-qmulZeroL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-qmulZeroR (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) +(define AnytypeC-45GradeC-45Affine-AffineAlgebra (lambda () (vector 0 1 (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qadd eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qmul eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qleq eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qdec eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qaddAssoc eta-0 eta-1 eta-2)))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qaddComm eta-0 eta-1))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qaddZeroL eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qmulAssoc eta-0 eta-1 eta-2)))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulOneL eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulOneR eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulZeroL eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulZeroR eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qdistribL eta-0 eta-1 eta-2)))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qdistribR eta-0 eta-1 eta-2)))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qleqRefl eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (AnytypeC-45GradeC-45Affine-qleqTrans eta-0 eta-1 eta-2 eta-3 eta-4)))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (AnytypeC-45GradeC-45Affine-qleqAntisym eta-0 eta-1 eta-2 eta-3))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Affine-qaddMono eta-0 eta-1 eta-2 eta-3 eta-4 eta-5))))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Affine-qmulMono eta-0 eta-1 eta-2 eta-3 eta-4 eta-5)))))))))) +(define AnytypeC-45GradeC-45Exact-eqRefl (lambda (arg-0) (vector 0 ))) +(define AnytypeC-45GradeC-45Exact-addMonoC-39 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (AnytypeC-45GradeC-45Exact-eqRefl (+ arg-1 arg-3)))) +(define AnytypeC-45GradeC-45Exact-eqTrans (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (AnytypeC-45GradeC-45Exact-eqRefl arg-2))) +(define AnytypeC-45GradeC-45Exact-mulMonoC-39 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (AnytypeC-45GradeC-45Exact-eqRefl (* arg-1 arg-3)))) +(define PreludeC-45Basics-irrelevantEq (vector 0 )) +(define DataC-45Nat-multAssociative (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-multDistributesOverPlusLeft (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-multDistributesOverPlusRight (lambda (arg-0 arg-1 arg-2) PreludeC-45Basics-irrelevantEq)) +(define DataC-45Nat-plusZeroRightNeutral (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-multOneLeftNeutral (lambda (arg-0) (DataC-45Nat-plusZeroRightNeutral arg-0))) +(define DataC-45Nat-multOneRightNeutral (lambda (arg-0) PreludeC-45Basics-irrelevantEq)) +(define DataC-45Nat-multZeroLeftZero (lambda (arg-0) (vector 0 ))) +(define DataC-45Nat-multZeroRightZero (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else (let ((e-0 (- arg-0 1))) (DataC-45Nat-multZeroRightZero e-0)))))) +(define DataC-45Nat-plusAssociative (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-plusCommutative (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) PreludeC-45Basics-irrelevantEq)(else PreludeC-45Basics-irrelevantEq)))) +(define DataC-45Nat-plusZeroLeftNeutral (lambda (arg-0) (vector 0 ))) +(define PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define AnytypeC-45GradeC-45Exact-natEqSound (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 ))(else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 eta-0)) arg-2))))(else (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 eta-0)) arg-2))(else (vector 0 ))))))) +(define DataC-45So-soToEq (lambda (arg-1) (vector 0 ))) +(define AnytypeC-45GradeC-45Exact-soSound (lambda (arg-0 arg-1 arg-2) (AnytypeC-45GradeC-45Exact-natEqSound arg-0 arg-1 (DataC-45So-soToEq arg-2)))) +(define DecidableC-45EqualityC-45Core-decEqCong (lambda (arg-6) (case (vector-ref arg-6 0) ((0) (vector 0 (vector 0 ))) (else (let ((e-3 (vector-ref arg-6 1))) (vector 1 (lambda (u--c) (e-3 PreludeC-45Basics-irrelevantEq)))))))) +(define DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) +(define DecidableC-45Equality-u--decEq_DecEq_Nat (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 (vector 0 )))(else (vector 1 (lambda (eta-0) (PreludeC-45Uninhabited-absurd (lambda (eta-1) (DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-124C-41 eta-1)) eta-0))))))(else (let ((e-0 (- arg-0 1))) (cond ((equal? arg-1 0) (vector 1 (lambda (eta-0) (PreludeC-45Uninhabited-absurd (lambda (eta-1) (DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-124C-41 eta-1)) eta-0))))(else (let ((e-2 (- arg-1 1))) (DecidableC-45EqualityC-45Core-decEqCong (DecidableC-45Equality-u--decEq_DecEq_Nat e-0 e-2)))))))))) +(define AnytypeC-45GradeC-45Exact-ExactAlgebra (lambda () (vector 0 1 (lambda (eta-0) (lambda (eta-1) (+ eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (* eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (or (and (= eta-0 eta-1) 1) 0))) (lambda (eta-0) (lambda (eta-1) (DecidableC-45Equality-u--decEq_DecEq_Nat eta-0 eta-1))) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-plusAssociative u--a u--b u--c)))) (lambda (eta-0) (lambda (eta-1) (DataC-45Nat-plusCommutative eta-0 eta-1))) (lambda (eta-0) (DataC-45Nat-plusZeroLeftNeutral eta-0)) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multAssociative u--a u--b u--c)))) (lambda (eta-0) (DataC-45Nat-multOneLeftNeutral eta-0)) (lambda (eta-0) (DataC-45Nat-multOneRightNeutral eta-0)) (lambda (eta-0) (DataC-45Nat-multZeroLeftZero eta-0)) (lambda (eta-0) (DataC-45Nat-multZeroRightZero eta-0)) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multDistributesOverPlusRight u--a u--b u--c)))) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multDistributesOverPlusLeft u--a u--b u--c)))) (lambda (eta-0) (AnytypeC-45GradeC-45Exact-eqRefl eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (AnytypeC-45GradeC-45Exact-eqTrans eta-0 eta-1 eta-2 eta-3 eta-4)))))) (lambda (u--a) (lambda (u--b) (lambda (u--s1) (lambda (_-3986) (AnytypeC-45GradeC-45Exact-soSound u--a u--b u--s1))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Exact-addMonoC-39 eta-0 eta-1 eta-2 eta-3 eta-4 eta-5))))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Exact-mulMonoC-39 eta-0 eta-1 eta-2 eta-3 eta-4 eta-5)))))))))) +(define AnytypeC-45Sexp-affineGrade (lambda (arg-0) (cond ((equal? arg-0 "0") (box 0)) ((equal? arg-0 "1") (box 1)) ((equal? arg-0 "w") (box 2))(else '())))) +(define AnytypeC-45Sexp-exactGrade (lambda (ext-0) (DataC-45String-parsePositive csegen-25 ext-0))) +(define PreludeC-45Basics-flip (lambda (arg-3 ext-0 ext-1) ((arg-3 ext-1) ext-0))) +(define PreludeC-45EqOrd-u--C-61C-61_Eq_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-47C-61_Eq_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else 1))))) +(define PreludeC-45EqOrd-u--C-60C-61_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (<= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-60_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (< arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-62C-61_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (>= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--C-62_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (> arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) +(define PreludeC-45EqOrd-u--compare_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-60_Ord_Int arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else (let ((sc1 (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-0 arg-1))) (cond ((equal? sc1 1) 1) (else 2)))))))) +(define PreludeC-45Num-u--div_Integral_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-1 (blodwen-toSignedInt 0 63)))) (cond ((equal? sc0 0) (bs/ arg-0 arg-1 63))(else (blodwen-error-quit (string-append "ERROR: " "Unhandled input for Prelude.Num.case block in div at Prelude.Num:128:3--130:40"))))))) +(define PreludeC-45EqOrd-u--max_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-62_Ord_Int arg-0 arg-1))) (cond ((equal? sc0 1) arg-0) (else arg-1))))) +(define PreludeC-45EqOrd-u--min_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-60_Ord_Int arg-0 arg-1))) (cond ((equal? sc0 1) arg-0) (else arg-1))))) +(define PreludeC-45Num-u--mod_Integral_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-1 (blodwen-toSignedInt 0 63)))) (cond ((equal? sc0 0) (blodwen-euclidMod arg-0 arg-1))(else (blodwen-error-quit (string-append "ERROR: " "Unhandled input for Prelude.Num.case block in mod at Prelude.Num:131:3--133:40"))))))) +(define PreludeC-45Types-countFrom (lambda (arg-1 arg-2) (cons arg-1 (lambda () (PreludeC-45Types-countFrom (arg-2 arg-1) arg-2))))) +(define Builtin-snd (lambda (arg-2) (let ((e-3 (cdr arg-2))) e-3))) +(define PreludeC-45Types-takeUntil (lambda (arg-1 arg-2) (let ((e-1 (car arg-2))) (let ((e-2 (cdr arg-2))) (let ((sc1 (arg-1 e-1))) (cond ((equal? sc1 1) (cons e-1 '())) (else (cons e-1 (PreludeC-45Types-takeUntil arg-1 (e-2)))))))))) +(define PreludeC-45Types-u--pure_Applicative_List (lambda (arg-1) (cons arg-1 '()))) +(define PreludeC-45Types-u--rangeFromTo_Range_C-36a (lambda (arg-1 arg-2 arg-3) (let ((sc0 (let ((sc1 (Builtin-fst (Builtin-snd arg-1)))) (let ((e-2 (vector-ref sc1 1))) ((e-2 arg-2) arg-3))))) (cond ((equal? sc0 0) (PreludeC-45Types-takeUntil (lambda (arg-0) (let ((sc1 (Builtin-fst (Builtin-snd arg-1)))) (let ((e-6 (vector-ref sc1 5))) ((e-6 arg-0) arg-3)))) (PreludeC-45Types-countFrom arg-2 (lambda (arg-0) (let ((sc1 (Builtin-snd (Builtin-snd arg-1)))) (let ((e-1 (vector-ref sc1 0))) (let ((e-6 (vector-ref e-1 0))) ((e-6 arg-0) (let ((sc1 (Builtin-snd (Builtin-snd arg-1)))) (let ((e-9 (vector-ref sc1 0))) (let ((e-10 (vector-ref e-9 2))) (e-10 1)))))))))))) ((equal? sc0 1) (PreludeC-45Types-u--pure_Applicative_List arg-2)) (else (PreludeC-45Types-takeUntil (lambda (arg-0) (let ((sc1 (Builtin-fst (Builtin-snd arg-1)))) (let ((e-5 (vector-ref sc1 4))) ((e-5 arg-0) arg-3)))) (PreludeC-45Types-countFrom arg-2 (lambda (u--x) (let ((sc1 (Builtin-snd (Builtin-snd arg-1)))) (let ((e-3 (vector-ref sc1 2))) ((e-3 u--x) (let ((sc1 (Builtin-snd (Builtin-snd arg-1)))) (let ((e-6 (vector-ref sc1 0))) (let ((e-7 (vector-ref e-6 2))) (e-7 1))))))))))))))) +(define PreludeC-45Types-u--traverse_Traversable_List (lambda (arg-3 arg-4 arg-5) (if (null? arg-5) (let ((e-2 (vector-ref arg-3 1))) ((e-2 'erased) '())) (let ((e-2 (car arg-5))) (let ((e-3 (cdr arg-5))) (let ((e-4 (vector-ref arg-3 2))) ((((e-4 'erased) 'erased) (let ((e-6 (vector-ref arg-3 2))) ((((e-6 'erased) 'erased) (let ((e-10 (vector-ref arg-3 1))) ((e-10 'erased) (lambda (eta-0) (lambda (eta-1) (cons eta-0 eta-1)))))) (arg-4 e-2)))) (PreludeC-45Types-u--traverse_Traversable_List arg-3 arg-4 e-3)))))))) +(define System-getArgs (lambda (arg-1) (let ((e-1 (car arg-1))) (let ((e-4 (vector-ref e-1 1))) ((((e-4 'erased) 'erased) (let ((e-6 (cdr arg-1))) ((e-6 'erased) (lambda (eta-0) (System-prim__getArgCount eta-0))))) (lambda (u--n) (let ((sc1 (PreludeC-45EqOrd-u--C-62_Ord_Int u--n (blodwen-toSignedInt 0 63)))) (cond ((equal? sc1 1) (PreludeC-45Basics-flip (lambda (clam-0) (lambda (clam-1) (PreludeC-45Types-u--traverse_Traversable_List (let ((e-7 (car arg-1))) (let ((e-10 (vector-ref e-7 0))) e-10)) clam-0 clam-1))) (PreludeC-45Types-u--rangeFromTo_Range_C-36a (cons (vector csegen-81 (lambda (arg-6312) (lambda (arg-6315) (PreludeC-45Num-u--div_Integral_Int arg-6312 arg-6315))) (lambda (arg-6322) (lambda (arg-6325) (PreludeC-45Num-u--mod_Integral_Int arg-6322 arg-6325)))) (cons (vector (cons (lambda (arg-676) (lambda (arg-679) (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-676 arg-679))) (lambda (arg-686) (lambda (arg-689) (PreludeC-45EqOrd-u--C-47C-61_Eq_Int arg-686 arg-689)))) (lambda (arg-1566) (lambda (arg-1569) (PreludeC-45EqOrd-u--compare_Ord_Int arg-1566 arg-1569))) (lambda (arg-1576) (lambda (arg-1579) (PreludeC-45EqOrd-u--C-60_Ord_Int arg-1576 arg-1579))) (lambda (arg-1586) (lambda (arg-1589) (PreludeC-45EqOrd-u--C-62_Ord_Int arg-1586 arg-1589))) (lambda (arg-1596) (lambda (arg-1599) (PreludeC-45EqOrd-u--C-60C-61_Ord_Int arg-1596 arg-1599))) (lambda (arg-1606) (lambda (arg-1609) (PreludeC-45EqOrd-u--C-62C-61_Ord_Int arg-1606 arg-1609))) (lambda (arg-1616) (lambda (arg-1619) (PreludeC-45EqOrd-u--max_Ord_Int arg-1616 arg-1619))) (lambda (arg-1626) (lambda (arg-1629) (PreludeC-45EqOrd-u--min_Ord_Int arg-1626 arg-1629)))) (vector csegen-81 (lambda (arg-6023) (bs- 0 arg-6023 63)) (lambda (arg-6029) (lambda (arg-6032) (bs- arg-6029 arg-6032 63)))))) 0 (bs- u--n 1 63)) (lambda (eta-0) (let ((e-6 (cdr arg-1))) ((e-6 'erased) (lambda (eta-1) (System-prim__getArg eta-0 eta-1))))))) (else (let ((e-7 (car arg-1))) (let ((e-10 (vector-ref e-7 0))) (let ((e-12 (vector-ref e-10 1))) ((e-12 'erased) '()))))))))))))) +(define AnytypeC-45GradeC-45Affine-u--show_Show_Q (lambda (arg-0) (cond ((equal? arg-0 0) "0") ((equal? arg-0 1) "1") (else "w")))) +(define AnytypeC-45Main-main (lambda (ext-0) (let ((act-1 ((System-getArgs csegen-13) ext-0))) (let ((act-2 (PreludeC-45IO-prim__getStr ext-0))) (if (null? act-1) (AnytypeC-45Main-usage ext-0) (let ((e-2 (cdr act-1))) (if (null? e-2) (AnytypeC-45Main-usage ext-0) (let ((e-4 (car e-2))) (let ((e-5 (cdr e-2))) (cond ((equal? e-4 "--discipline") (if (null? e-5) (AnytypeC-45Main-usage ext-0) (let ((e-7 (car e-5))) (let ((e-8 (cdr e-5))) (cond ((equal? e-7 "affine") (if (null? e-8) ((AnytypeC-45Main-run (lambda (eta-0) (AnytypeC-45Sexp-affineGrade eta-0)) (AnytypeC-45GradeC-45Affine-AffineAlgebra) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-u--show_Show_Q eta-0)) act-2) ext-0) (AnytypeC-45Main-usage ext-0))) ((equal? e-7 "exact") (if (null? e-8) ((AnytypeC-45Main-run (lambda (eta-0) (AnytypeC-45Sexp-exactGrade eta-0)) (AnytypeC-45GradeC-45Exact-ExactAlgebra) (lambda (eta-0) (PreludeC-45Show-u--show_Show_Nat eta-0)) act-2) ext-0) (AnytypeC-45Main-usage ext-0)))(else (AnytypeC-45Main-usage ext-0)))))))(else (AnytypeC-45Main-usage ext-0)))))))))))) +(define PreludeC-45EqOrd-compareInteger (lambda (ext-0 ext-1) (PreludeC-45EqOrd-u--compare_Ord_Integer ext-0 ext-1))) +(define PrimIO-unsafeCreateWorld (lambda (arg-1) (arg-1 #f))) +(define PrimIO-unsafePerformIO (lambda (arg-1) (PrimIO-unsafeCreateWorld (lambda (u--w) (let ((eff-0 (arg-1 u--w))) eff-0))))) +(collect-request-handler (lambda () (collect) (blodwen-run-finalisers))) +(PrimIO-unsafePerformIO (lambda (eta-0) (AnytypeC-45Main-main eta-0))) + (collect 4) + (blodwen-run-finalisers) + + ) \ No newline at end of file diff --git a/build/exec/anytype-check_app/compileChez b/build/exec/anytype-check_app/compileChez new file mode 100755 index 0000000..62fda32 --- /dev/null +++ b/build/exec/anytype-check_app/compileChez @@ -0,0 +1 @@ +(parameterize ([optimize-level 3] [compile-file-message #f]) (compile-program "/home/hyperpolymath/developer/hyper-repos/_LANGUAGES _SET/anytype/.claude/worktrees/anytype-mvp-kernel/build/exec/anytype-check_app/anytype-check.ss")) \ No newline at end of file diff --git a/build/exec/anytype-check_app/libidris2_support.so b/build/exec/anytype-check_app/libidris2_support.so new file mode 100644 index 0000000000000000000000000000000000000000..8c45d9fb9f1e7d1d52f644f6c20f46ed0bf4ead8 GIT binary patch literal 50080 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 bRYx(d>Q}P#8OTuOAOEeC_(%ydHJ1NB$wCl! literal 0 HcmV?d00001 diff --git a/build/exec/anytype-tests_app/anytype-tests.so b/build/exec/anytype-tests_app/anytype-tests.so index ebd62c27a57c1a0a24a63d10a8030c9de73d91ad..73bfa243db32f9c552098592c9d96ec3cf248b74 100755 GIT binary patch delta 69 zcmcccknzGp#tn6h5@uypl}VL(MP^mG=J`d*21NxW<`qT8shg)UhT@TBW0L@Vv Axc~qF delta 69 zcmcccknzGp#tn6h66qyL$whg_7Re=+#Z}pPmKC|_M!6LR*_)>^hT@TBW0KC&0 AM*si- diff --git a/scripts/check-cli.sh b/scripts/check-cli.sh new file mode 100755 index 0000000..8c0cdd5 --- /dev/null +++ b/scripts/check-cli.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: MPL-2.0 +# Golden tests for the anytype-check process-boundary seam: verdict lines +# AND exit codes (which are the wire contract — Abi.Types.verdictCode). +# Build first: idris2 --build anytype-cli.ipkg (just test does this). +set -euo pipefail +cd "$(dirname "${BASH_SOURCE[0]}")/.." + +BIN=./build/exec/anytype-check +[ -x "$BIN" ] || { echo "FAIL: $BIN not built (run: just test)"; exit 1; } + +fails=0 + +case_check() { + local desc="$1" disc="$2" term="$3" want_exit="$4" want_prefix="$5" + local out rc + set +e + out="$(echo "$term" | "$BIN" --discipline "$disc" 2>&1)" + rc=$? + set -e + if [ "$rc" -eq "$want_exit" ] && [[ "$out" == "$want_prefix"* ]]; then + echo " PASS $desc" + else + echo " FAIL $desc (want exit=$want_exit '$want_prefix...', got exit=$rc '$out')" + fails=$((fails + 1)) + fi +} + +echo "=== anytype-check seam golden tests ===" +case_check "affine: use once accepted" affine '(lam 1 bool (var 0))' 0 "ACCEPT" +case_check "affine: drop accepted" affine '(lam 1 bool tt)' 0 "ACCEPT" +case_check "affine: double use rejected" affine '(lam 1 bool (pair (var 0) (var 0)))' 1 "REJECT" +case_check "exact: drop rejected (the split)" exact '(lam 1 bool tt)' 1 "REJECT" +case_check "exact: double use at 2 accepted" exact '(lam 2 bool (pair (var 0) (var 0)))' 0 "ACCEPT" +case_check "conversion: (word (+ 2 3)) is Bits 5" affine '(word (+ 2 3))' 0 "ACCEPT Bits 5" +case_check "ill-formed input is exit 2" affine 'garbage((' 2 "ILLFORMED" +case_check "ill-scoped term is exit 2" affine '(var 0)' 2 "ILLFORMED" + +echo +if [ "$fails" -gt 0 ]; then + echo "RESULT: FAIL ($fails failure(s))" + exit 1 +fi +echo "RESULT: PASS" diff --git a/scripts/check-idris2-proofs.sh b/scripts/check-idris2-proofs.sh index 7bd1c4a..a086a19 100755 --- a/scripts/check-idris2-proofs.sh +++ b/scripts/check-idris2-proofs.sh @@ -54,6 +54,8 @@ MANIFEST=( "src/interface|Abi/Foreign.idr|gated||ABI FFI declarations" ".machine_readable/coaptation/core|Coaptation.idr|gated||coaptation skeleton; compiles, semantically a placeholder" "verification/tests/kernel|Tests/Main.idr|gated|-p anytype|golden matrix; needs anytype installed (just test does this)" + "src/cli|Anytype/Sexp.idr|gated|-p anytype|total S-expression reader for the seam wire format" + "src/cli|Anytype/Main.idr|gated|-p anytype -p anytype-abi|anytype-check entry point; exit codes = Abi.Types verdictCode" "verification/proofs/idris2|ABI/Foreign.idr|gated||the one template verification module that compiles" "verification/proofs/idris2|Types.idr|quarantine||RSR template stock, never compiled: LTE needs Data.Nat" "verification/proofs/idris2|ABI/Platform.idr|quarantine||template stock: LTE needs Data.Nat, then undefined lteRefl" diff --git a/src/cli/Anytype/Main.idr b/src/cli/Anytype/Main.idr new file mode 100644 index 0000000..f5acd90 --- /dev/null +++ b/src/cli/Anytype/Main.idr @@ -0,0 +1,56 @@ +||| anytype-check: the kernel's stable process-boundary entry point. +||| +||| Usage: echo '' | anytype-check --discipline affine|exact +||| +||| Output (one line) and exit code follow Abi.Types.verdictCode: +||| ACCEPT exit 0 (VAccepted) +||| REJECT exit 1 (VRejected) +||| ILLFORMED exit 2 (VIllFormed) +||| The Zig side (src/interface/ffi) maps these back to anytype_check's +||| C return value; the codes are proven injective in Abi.Types. +module Anytype.Main + +import System +import Abi.Types +import Anytype.Kernel +import Anytype.Sexp + +%default total + +-- Exit codes are verdictCode values; the literals let ExitFailure's +-- nonzero proof discharge by computation (Abi.Types proves them +-- injective, disciplineRoundTrip ties decode to encode). +exitVerdict : Verdict -> IO () +exitVerdict VAccepted = exitWith ExitSuccess +exitVerdict VRejected = exitWith (ExitFailure 1) +exitVerdict VIllFormed = exitWith (ExitFailure 2) + +run : (pg : String -> Maybe g) -> (GradeAlgebra g) -> (g -> String) -> + String -> IO () +run pg alg sg input = + case parseClosed pg input of + Nothing => do + putStrLn "ILLFORMED unreadable or ill-scoped term" + exitVerdict VIllFormed + Just t => + case checkClosed alg t of + Right ty => do + putStrLn ("ACCEPT " ++ showTy sg ty) + exitVerdict VAccepted + Left err => do + putStrLn ("REJECT " ++ show err) + exitVerdict VRejected + +usage : IO () +usage = do + putStrLn "ILLFORMED usage: anytype-check --discipline affine|exact" + exitVerdict VIllFormed + +main : IO () +main = do + args <- getArgs + input <- getLine + case args of + [_, "--discipline", "affine"] => run affineGrade AffineAlgebra show input + [_, "--discipline", "exact"] => run exactGrade ExactAlgebra show input + _ => usage diff --git a/src/cli/Anytype/Sexp.idr b/src/cli/Anytype/Sexp.idr new file mode 100644 index 0000000..2dcfa36 --- /dev/null +++ b/src/cli/Anytype/Sexp.idr @@ -0,0 +1,127 @@ +||| Total S-expression reader for the anytype seam wire format. +||| +||| Grammar (one term per input): +||| term := (lam ) | (app ) +||| | (pair ) | (letpair ) +||| | (var ) | (word ) | tt | true | false +||| ty := unit | bool | (bits ) +||| | (arr ) | (prod ) +||| tnat := | (+ ) | (* ) +||| Grades are discipline-specific atoms: affine 0|1|w, exact . +||| +||| Everything here is `%default total`: the tokeniser is structural on +||| the character list and the reader burns explicit fuel (the token +||| count), so the seam cannot hang on malformed input. +module Anytype.Sexp + +import Data.String +import Data.Fin +import Anytype.Kernel + +%default total + +data Tok = TOpen | TClose | TAtom String + +flush : List Char -> List Tok -> List Tok +flush [] ts = ts +flush acc ts = TAtom (pack (reverse acc)) :: ts + +tokGo : List Char -> List Char -> List Tok +tokGo acc [] = flush acc [] +tokGo acc (c :: cs) = + if c == '(' then flush acc (TOpen :: tokGo [] cs) + else if c == ')' then flush acc (TClose :: tokGo [] cs) + else if isSpace c then flush acc (tokGo [] cs) + else tokGo (c :: acc) cs + +tokenise : String -> List Tok +tokenise s = tokGo [] (unpack s) + +public export +data SExp = SAtom String | SList (List SExp) + +mutual + readOne : (fuel : Nat) -> List Tok -> Maybe (SExp, List Tok) + readOne Z _ = Nothing + readOne (S _) (TAtom a :: r) = Just (SAtom a, r) + readOne (S f) (TOpen :: r) = do + (xs, r') <- readMany f r + pure (SList xs, r') + readOne _ _ = Nothing + + readMany : (fuel : Nat) -> List Tok -> Maybe (List SExp, List Tok) + readMany Z _ = Nothing + readMany (S _) (TClose :: r) = Just ([], r) + readMany (S f) toks = do + (x, r) <- readOne f toks + (xs, r') <- readMany f r + pure (x :: xs, r') + +||| Read exactly one S-expression covering the whole input. +public export +readSexp : String -> Maybe SExp +readSexp s = + let toks = tokenise s in + case readOne (S (length toks)) toks of + Just (e, []) => Just e + _ => Nothing + +parseTNat : SExp -> Maybe TNat +parseTNat (SAtom s) = map tnatOfNat (parsePositive s) +parseTNat (SList [SAtom "+", a, b]) = + [| NPlus (parseTNat a) (parseTNat b) |] +parseTNat (SList [SAtom "*", a, b]) = + [| NMul (parseTNat a) (parseTNat b) |] +parseTNat _ = Nothing + +parseTy : (pg : String -> Maybe g) -> SExp -> Maybe (Ty g) +parseTy _ (SAtom "unit") = Just TUnit +parseTy _ (SAtom "bool") = Just TBool +parseTy _ (SList [SAtom "bits", w]) = map TBits (parseTNat w) +parseTy pg (SList [SAtom "arr", SAtom q, a, b]) = + [| TArr (pg q) (parseTy pg a) (parseTy pg b) |] +parseTy pg (SList [SAtom "prod", a, b]) = + [| TProd (parseTy pg a) (parseTy pg b) |] +parseTy _ _ = Nothing + +||| Scope-checked term reader: de Bruijn indices are bounds-checked +||| against `n` as they are read, so an ill-scoped input is Nothing, +||| never a crash. +public export +parseTerm : (pg : String -> Maybe g) -> (n : Nat) -> SExp -> + Maybe (Term g n) +parseTerm _ n (SList [SAtom "var", SAtom k]) = do + kn <- parsePositive k + i <- natToFin kn n + pure (Var i) +parseTerm pg n (SList [SAtom "lam", SAtom q, ty, body]) = + [| Lam (pg q) (parseTy pg ty) (parseTerm pg (S n) body) |] +parseTerm pg n (SList [SAtom "app", f, x]) = + [| App (parseTerm pg n f) (parseTerm pg n x) |] +parseTerm pg n (SList [SAtom "pair", s, t]) = + [| Pair (parseTerm pg n s) (parseTerm pg n t) |] +parseTerm pg n (SList [SAtom "letpair", p, body]) = + [| LetPair (parseTerm pg n p) (parseTerm pg (S (S n)) body) |] +parseTerm _ _ (SAtom "tt") = Just TT +parseTerm _ _ (SAtom "true") = Just (BLit True) +parseTerm _ _ (SAtom "false") = Just (BLit False) +parseTerm _ n (SList [SAtom "word", w]) = map WordLit (parseTNat w) +parseTerm _ _ _ = Nothing + +||| Affine grades: 0 | 1 | w. +public export +affineGrade : String -> Maybe Q +affineGrade "0" = Just Q0 +affineGrade "1" = Just Q1 +affineGrade "w" = Just QW +affineGrade _ = Nothing + +||| Exact grades: any natural number. +public export +exactGrade : String -> Maybe Nat +exactGrade = parsePositive + +||| Parse a closed term from wire text. +public export +parseClosed : (pg : String -> Maybe g) -> String -> Maybe (Term g 0) +parseClosed pg s = readSexp s >>= parseTerm pg 0 diff --git a/src/interface/Abi/Foreign.idr b/src/interface/Abi/Foreign.idr index ca66b08..4683452 100644 --- a/src/interface/Abi/Foreign.idr +++ b/src/interface/Abi/Foreign.idr @@ -1,83 +1,33 @@ -- SPDX-License-Identifier: MPL-2.0 -- Copyright (c) Jonathan D.A. Jewell -||| Foreign Function Interface Bridge +||| anytype FFI surface. ||| -||| This module defines the raw FFI calls and their safe wrappers, -||| implemented in the Zig FFI layer. - +||| Replaces the RSR template's generic librsr binding. The C symbol +||| declared here is what the Zig side (src/interface/ffi) exports; the +||| MVP transport behind it is a spawned `anytype-check` process — see +||| src/interface/ffi/README.adoc. In-process linkage of the kernel +||| (RefC backend) is future work; this declaration is the seam contract, +||| stated so both sides agree on one signature. module Abi.Foreign import Abi.Types -import Abi.Layout %default total --------------------------------------------------------------------------------- --- Library Lifecycle --------------------------------------------------------------------------------- - -||| Raw FFI call to initialize the library -%foreign "C:rsr_init,librsr" -prim__init : PrimIO Bits64 - -||| Raw FFI call to free library resources -%foreign "C:rsr_free,librsr" -prim__free : Bits64 -> PrimIO () - -||| Safe wrapper for initialization -export -init : IO (Maybe Handle) -init = do - ptr <- primIO prim__init - pure (createHandle ptr) +||| Raw seam call: check `term` (UTF-8 S-expression, NUL-terminated) +||| under the discipline byte. Returns a verdict code (see +||| Abi.Types.verdictCode). Provided by libanytype (Zig). +%foreign "C:anytype_check,libanytype" +prim__anytypeCheck : Bits8 -> String -> PrimIO Bits8 -||| Safe wrapper for cleanup +||| Safe wrapper: typed discipline in, decoded verdict out. +||| A code outside verdictCode's range is reported as VIllFormed — +||| the seam never invents an acceptance. export -free : Handle -> IO () -free h = primIO (prim__free h.ptr) - --------------------------------------------------------------------------------- --- Core Operations --------------------------------------------------------------------------------- - -||| Raw FFI call for main processing -%foreign "C:rsr_process,librsr" -prim__process : Bits64 -> Bits32 -> PrimIO Bits32 - -||| Safe wrapper with error handling -export -process : Handle -> Bits32 -> IO (Either Result Bits32) -process h input = do - result <- primIO (prim__process h.ptr input) - if result == 0 - then pure (Left Error) - else pure (Right result) - --------------------------------------------------------------------------------- --- Status and Metrics --------------------------------------------------------------------------------- - -||| Get the current error description from the library -%foreign "C:rsr_get_error,librsr" -prim__getError : Bits64 -> PrimIO (Ptr String) - -||| Detailed error string helper -export -errorDescription : Result -> String -errorDescription Ok = "Success" -errorDescription Error = "Generic error" -errorDescription InvalidParam = "Invalid parameter" -errorDescription Busy = "Library is busy" - --------------------------------------------------------------------------------- --- Documentation --------------------------------------------------------------------------------- - -||| Summary of ABI safety properties: -||| 1. All functions are total (total keyword enforced). -||| 2. Pointers are verified non-null before being wrapped in Handle. -||| 3. Memory layouts are proven C-ABI compliant in Abi.Layout. -||| 4. FFI boundary uses explicitly tagged types from Abi.Types. -public export -abiSafetyGuarantees : String -abiSafetyGuarantees = "RSR-Template ABI: 4 proven safety properties for FFI integration" +anytypeCheck : Discipline -> String -> IO Verdict +anytypeCheck d term = do + code <- primIO (prim__anytypeCheck (disciplineCode d) term) + pure (case code of + 0 => VAccepted + 1 => VRejected + _ => VIllFormed) diff --git a/src/interface/Abi/Layout.idr b/src/interface/Abi/Layout.idr index e1f4275..d364adf 100644 --- a/src/interface/Abi/Layout.idr +++ b/src/interface/Abi/Layout.idr @@ -2,8 +2,11 @@ -- Copyright (c) Jonathan D.A. Jewell ||| ABI Layout Verification ||| -||| This module provides formal proofs about memory layout, alignment, -||| and padding for C-compatible structs. +||| Formal proofs about memory layout, alignment, and padding for the +||| C-compatible structs anytype actually passes across its seam. The +||| generic machinery (Divides, StructLayout, FieldsAligned) is inherited +||| from the RSR template; the layouts proven at the bottom are anytype's +||| own request/response structs. module Abi.Layout @@ -101,28 +104,60 @@ data CABICompliant : StructLayout -> Type where CABICompliant l -------------------------------------------------------------------------------- --- Example and Proofs +-- anytype wire structs -------------------------------------------------------------------------------- -||| Example: struct { int32_t x; int64_t y; double z; } -||| On 64-bit Linux, this should have size 24, alignment 8. +div1_0 : Divides 1 0 +div1_0 = MkDivides 0 Refl + +div4_4 : Divides 4 4 +div4_4 = MkDivides 1 Refl + +||| anytype_request_t on 64-bit targets: +||| struct { uint8_t discipline; /* pad 3 */ uint32_t term_len; +||| const uint8_t *term_utf8; } +||| Size 16, alignment 8. The Zig side asserts the same layout with +||| comptime @sizeOf/@offsetOf checks against these numbers. +public export +requestLayout : StructLayout +requestLayout = + MkStructLayout + [ MkField "discipline" 0 1 1 + , MkField "term_len" 4 4 4 + , MkField "term_utf8" 8 8 8 + ] + 16 + 8 + {aligned = div8_16} + +public export +requestLayoutValid : CABICompliant Abi.Layout.requestLayout +requestLayoutValid = CABIOk Abi.Layout.requestLayout ( + ConsField (MkField "discipline" 0 1 1) _ div1_0 ( + ConsField (MkField "term_len" 4 4 4) _ div4_4 ( + ConsField (MkField "term_utf8" 8 8 8) _ div8_8 ( + NoFields)))) + +||| anytype_response_t on 64-bit targets: +||| struct { uint8_t verdict; /* pad 3 */ uint32_t msg_len; +||| const uint8_t *msg_utf8; } +||| Size 16, alignment 8. public export -exampleLayout : StructLayout -exampleLayout = +responseLayout : StructLayout +responseLayout = MkStructLayout - [ MkField "x" 0 4 4 -- Bits32 at offset 0 - , MkField "y" 8 8 8 -- Bits64 at offset 8 (4 bytes padding) - , MkField "z" 16 8 8 -- Double at offset 16 + [ MkField "verdict" 0 1 1 + , MkField "msg_len" 4 4 4 + , MkField "msg_utf8" 8 8 8 ] - 24 -- Total size: 24 bytes - 8 -- Alignment: 8 bytes - {aligned = div8_24} + 16 + 8 + {aligned = div8_16} -||| Proof that example layout is valid public export -exampleLayoutValid : CABICompliant Abi.Layout.exampleLayout -exampleLayoutValid = CABIOk Abi.Layout.exampleLayout ( - ConsField (MkField "x" 0 4 4) _ div4_0 ( - ConsField (MkField "y" 8 8 8) _ div8_8 ( - ConsField (MkField "z" 16 8 8) _ div8_16 ( +responseLayoutValid : CABICompliant Abi.Layout.responseLayout +responseLayoutValid = CABIOk Abi.Layout.responseLayout ( + ConsField (MkField "verdict" 0 1 1) _ div1_0 ( + ConsField (MkField "msg_len" 4 4 4) _ div4_4 ( + ConsField (MkField "msg_utf8" 8 8 8) _ div8_8 ( NoFields)))) diff --git a/src/interface/Abi/Types.idr b/src/interface/Abi/Types.idr index 9d30051..e2c75a3 100644 --- a/src/interface/Abi/Types.idr +++ b/src/interface/Abi/Types.idr @@ -1,112 +1,72 @@ -- SPDX-License-Identifier: MPL-2.0 -- Copyright (c) Jonathan D.A. Jewell -||| ABI Type Definitions Template +||| anytype ABI wire types. ||| -||| This module defines the Application Binary Interface (ABI) for this library. -||| All type definitions include formal proofs of correctness. - +||| This module used to be the RSR template's generic ABI demo; it now +||| defines anytype's actual seam surface: the discipline selector and +||| the verdict a kernel check returns, with machine-checked facts about +||| their byte encodings (codes are injective and decoding inverts +||| encoding, so the Zig side can trust a reverse lookup). module Abi.Types -import Data.Bits -import Data.So -import Data.Vect -import Decidable.Equality - %default total --------------------------------------------------------------------------------- --- Platform Model --------------------------------------------------------------------------------- - -||| Target platforms for the FFI bridge -public export -data Platform = Linux | MacOS | Windows | WASM | RISCV - -||| Pointer size in bits per platform -public export -ptrSize : Platform -> Nat -ptrSize Linux = 64 -ptrSize MacOS = 64 -ptrSize Windows = 64 -ptrSize WASM = 32 -ptrSize RISCV = 64 - -||| Current target platform (detected at compile-time) +||| Which grade algebra the kernel should check under. public export -thisPlatform : Platform -thisPlatform = Linux -- Simplified for template - --------------------------------------------------------------------------------- --- Core Types --------------------------------------------------------------------------------- +data Discipline = DAffine | DExact -||| Return codes for FFI calls +||| Wire encoding of a discipline. public export -data Result = Ok | Error | InvalidParam | Busy +disciplineCode : Discipline -> Bits8 +disciplineCode DAffine = 0 +disciplineCode DExact = 1 -||| Results are decidably equal +||| The result of a kernel check, as seen across the ABI. public export -implementation DecEq Result where - decEq Ok Ok = Yes Refl - decEq Error Error = Yes Refl - decEq InvalidParam InvalidParam = Yes Refl - decEq Busy Busy = Yes Refl - decEq Ok Error = No (\case Refl impossible) - decEq Ok InvalidParam = No (\case Refl impossible) - decEq Ok Busy = No (\case Refl impossible) - decEq Error Ok = No (\case Refl impossible) - decEq Error InvalidParam = No (\case Refl impossible) - decEq Error Busy = No (\case Refl impossible) - decEq InvalidParam Ok = No (\case Refl impossible) - decEq InvalidParam Error = No (\case Refl impossible) - decEq InvalidParam Busy = No (\case Refl impossible) - decEq Busy Ok = No (\case Refl impossible) - decEq Busy Error = No (\case Refl impossible) - decEq Busy InvalidParam = No (\case Refl impossible) +data Verdict = VAccepted | VRejected | VIllFormed -||| Opaque handle for library resources -||| Invariant: Handle pointer must be non-null +||| Wire encoding of a verdict. public export -record Handle where - constructor MkHandle - ptr : Bits64 - 0 prf : So (ptr /= 0) +verdictCode : Verdict -> Bits8 +verdictCode VAccepted = 0 +verdictCode VRejected = 1 +verdictCode VIllFormed = 2 -||| Returns Nothing if pointer is null +||| Decode a discipline byte (total; out-of-range is Nothing). public export -createHandle : Bits64 -> Maybe Handle -createHandle 0 = Nothing -createHandle ptr = case decSo (ptr /= 0) of - Yes p => Just (MkHandle ptr p) - No _ => Nothing - --------------------------------------------------------------------------------- --- C-Types Mapping --------------------------------------------------------------------------------- +disciplineOfCode : Bits8 -> Maybe Discipline +disciplineOfCode 0 = Just DAffine +disciplineOfCode 1 = Just DExact +disciplineOfCode _ = Nothing -||| Tagged types for C-FFI boundary -public export -data CType = CInt | CUInt | CLong | CULong | CPtrType +-- Machine-checked encoding facts ------------------------------------------- -||| Pointer type for platform +||| Discipline codes are injective. public export -CPtr : Platform -> CType -> Type -CPtr p _ = Bits64 -- Simplified for 64-bit template - -||| Size of C types (platform-specific) +disciplineCodeInjective : (d1, d2 : Discipline) -> + disciplineCode d1 = disciplineCode d2 -> d1 = d2 +disciplineCodeInjective DAffine DAffine _ = Refl +disciplineCodeInjective DExact DExact _ = Refl +disciplineCodeInjective DAffine DExact Refl impossible +disciplineCodeInjective DExact DAffine Refl impossible + +||| Verdict codes are injective. public export -cSizeOf : (p : Platform) -> (t : CType) -> Nat -cSizeOf p CInt = 4 -cSizeOf p CUInt = 4 -cSizeOf p CLong = 8 -cSizeOf p CULong = 8 -cSizeOf p CPtrType = 8 - -||| Alignment of C types (platform-specific) +verdictCodeInjective : (v1, v2 : Verdict) -> + verdictCode v1 = verdictCode v2 -> v1 = v2 +verdictCodeInjective VAccepted VAccepted _ = Refl +verdictCodeInjective VRejected VRejected _ = Refl +verdictCodeInjective VIllFormed VIllFormed _ = Refl +verdictCodeInjective VAccepted VRejected Refl impossible +verdictCodeInjective VAccepted VIllFormed Refl impossible +verdictCodeInjective VRejected VAccepted Refl impossible +verdictCodeInjective VRejected VIllFormed Refl impossible +verdictCodeInjective VIllFormed VAccepted Refl impossible +verdictCodeInjective VIllFormed VRejected Refl impossible + +||| Decoding inverts encoding. public export -cAlignOf : (p : Platform) -> (t : CType) -> Nat -cAlignOf p CInt = 4 -cAlignOf p CUInt = 4 -cAlignOf p CLong = 8 -cAlignOf p CULong = 8 -cAlignOf p CPtrType = 8 +disciplineRoundTrip : (d : Discipline) -> + disciplineOfCode (disciplineCode d) = Just d +disciplineRoundTrip DAffine = Refl +disciplineRoundTrip DExact = Refl From d5e81aef80676d5661b4ed11802f233d564843e0 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 21 Jul 2026 07:31:37 +0100 Subject: [PATCH 4/6] =?UTF-8?q?feat(ffi):=20Zig=200.16=20seam=20=E2=80=94?= =?UTF-8?q?=20anytype=5Fcheck=20export,=20comptime=20layout=20asserts,=20r?= =?UTF-8?q?ound-trip=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the un-instantiated {{project}} template. checkWith spawns the anytype-check kernel binary and maps its exit code (= verdictCode) back to the C return value; wire structs are comptime-asserted against the layouts proven in Abi.Layout, so a drift on either side breaks a gate. zig build test wired into just test and CI (toolchain checksum-pinned; missing zig or missing kernel binary FAILS, never skips). Co-Authored-By: Claude Fable 5 --- .github/workflows/idris2-proof.yml | 18 + Justfile | 2 + build/exec/anytype-check_app/anytype-check.so | Bin 43350 -> 43350 bytes build/exec/anytype-tests_app/anytype-tests.so | Bin 28880 -> 28880 bytes src/interface/ffi/build.zig | 31 +- src/interface/ffi/src/main.zig | 359 ++++++------------ 6 files changed, 153 insertions(+), 257 deletions(-) diff --git a/.github/workflows/idris2-proof.yml b/.github/workflows/idris2-proof.yml index 8b18838..bd99a37 100644 --- a/.github/workflows/idris2-proof.yml +++ b/.github/workflows/idris2-proof.yml @@ -23,6 +23,7 @@ on: - '*.ipkg' - 'scripts/check-idris2-proofs.sh' - 'scripts/check-cli.sh' + - 'src/interface/ffi/**' - '.github/workflows/idris2-proof.yml' pull_request: paths: @@ -30,6 +31,7 @@ on: - '*.ipkg' - 'scripts/check-idris2-proofs.sh' - 'scripts/check-cli.sh' + - 'src/interface/ffi/**' - '.github/workflows/idris2-proof.yml' workflow_dispatch: @@ -93,3 +95,19 @@ jobs: - name: Type-check every Idris2 module run: ./scripts/check-idris2-proofs.sh + + - name: Install Zig 0.16.0 (checksum-pinned) + run: | + set -euo pipefail + cd "$(mktemp -d)" + curl -fsSL -o zig.tar.xz \ + "https://ziglang.org/download/0.16.0/zig-x86_64-linux-0.16.0.tar.xz" + echo "70e49664a74374b48b51e6f3fdfbf437f6395d42509050588bd49abe52ba3d00 zig.tar.xz" | sha256sum -c - + tar xJf zig.tar.xz + echo "$PWD/zig-x86_64-linux-0.16.0" >> "$GITHUB_PATH" + + - name: Zig seam tests (comptime layout asserts + kernel round trip) + run: | + set -euo pipefail + cd src/interface/ffi + zig build test --summary all diff --git a/Justfile b/Justfile index 42cbe59..c737dc4 100644 --- a/Justfile +++ b/Justfile @@ -140,6 +140,8 @@ test *args: ./build/exec/anytype-tests idris2 --build anytype-cli.ipkg ./scripts/check-cli.sh + @command -v zig >/dev/null || { echo "FAIL: zig not on PATH (Zig seam tests need it)"; exit 1; } + cd src/interface/ffi && zig build test # Run tests with verbose output test-verbose: diff --git a/build/exec/anytype-check_app/anytype-check.so b/build/exec/anytype-check_app/anytype-check.so index 3dfaee77406c2b79f9f343a0372a41e24a37a1f9..e176c68e4c55413e6eafb63a59fee0f097f445a9 100755 GIT binary patch delta 71 zcmcb1iRs!UrVX`>l4&Vf7FmXQ`9(z~8AcYl1xb~qnFTpjhGml6fV?MujD&c?RZHnVFeJRmORShA9>%1y!4;F^1riW@Zjv1^~a3 B87=?- diff --git a/build/exec/anytype-tests_app/anytype-tests.so b/build/exec/anytype-tests_app/anytype-tests.so index 73bfa243db32f9c552098592c9d96ec3cf248b74..6403d2da8c513b0e34795bec149e7bceeb72b955 100755 GIT binary patch delta 71 zcmcccknzGp#tpTMlBtGi1^FfxsY#WIdB&xM`Bfz;#pz{PS*Dw(F^1riW@bK{3jp;- B8)*Ol delta 71 zcmcccknzGp#tpTMk~wB&Rh3DVc|~Sbx#syr$p%FQCFT`H#;Kd9F^1riW@bK{3jhcK B8<7A2 diff --git a/src/interface/ffi/build.zig b/src/interface/ffi/build.zig index 2607c11..548d560 100644 --- a/src/interface/ffi/build.zig +++ b/src/interface/ffi/build.zig @@ -1,19 +1,30 @@ // SPDX-License-Identifier: MPL-2.0 // Copyright (c) Jonathan D.A. Jewell // -// Template FFI Build Configuration (Zig 0.15.2+) -// Note: This is a minimal build file that demonstrates Zig integration +// anytype FFI build (Zig 0.16): static libanytype + tests. const std = @import("std"); pub fn build(b: *std.Build) void { - _ = b.standardTargetOptions(.{}); - _ = b.standardOptimizeOption(.{}); + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); - // In Zig 0.15+, tests are run directly with: - // zig build-exe -ftest-runner src/main.zig - // zig build-exe -ftest-runner test/integration_test.zig - // - // This minimal build file provides scaffolding for future expansion. - // Tests can be invoked via command line without explicit build.zig configuration. + const mod = b.createModule(.{ + .root_source_file = b.path("src/main.zig"), + .target = target, + .optimize = optimize, + .link_libc = true, // std.c.getenv in the C entry point + }); + + const lib = b.addLibrary(.{ + .name = "anytype", + .root_module = mod, + .linkage = .static, + }); + b.installArtifact(lib); + + const tests = b.addTest(.{ .root_module = mod }); + const run_tests = b.addRunArtifact(tests); + const test_step = b.step("test", "Run seam layout + round-trip tests"); + test_step.dependOn(&run_tests.step); } diff --git a/src/interface/ffi/src/main.zig b/src/interface/ffi/src/main.zig index f1b2633..5733d52 100644 --- a/src/interface/ffi/src/main.zig +++ b/src/interface/ffi/src/main.zig @@ -1,275 +1,140 @@ // SPDX-License-Identifier: MPL-2.0 // Copyright (c) Jonathan D.A. Jewell -// {{PROJECT}} FFI Implementation -// -// This module implements the C-compatible FFI declared in src/abi/Foreign.idr -// All types and layouts must match the Idris2 ABI definitions. +// anytype FFI: the Zig side of the seam. // +// Exports `anytype_check`, the C symbol declared in src/interface/Abi/ +// Foreign.idr. The MVP transport is a spawned `anytype-check` process +// (see README.adoc); in-process linkage of the Idris2 kernel is future +// work. Wire structs are comptime-asserted against the layouts proven +// CABICompliant in src/interface/Abi/Layout.idr — if either side edits +// a layout, one of the two gates fails. const std = @import("std"); -// Version information (keep in sync with project) -const VERSION = "0.1.0"; -const BUILD_INFO = "{{PROJECT}} built with Zig " ++ @import("builtin").zig_version_string; - -/// Thread-local error storage -threadlocal var last_error: ?[]const u8 = null; - -/// Set the last error message -fn setError(msg: []const u8) void { - last_error = msg; -} - -/// Clear the last error -fn clearError() void { - last_error = null; -} - -//============================================================================== -// Core Types (must match src/abi/Types.idr) -//============================================================================== - -/// Result codes (must match Idris2 Result type) -pub const Result = enum(c_int) { - ok = 0, - @"error" = 1, - invalid_param = 2, - out_of_memory = 3, - null_pointer = 4, +/// Verdict codes — must match Abi.Types.verdictCode (proven injective +/// on the Idris side). +pub const VERDICT_ACCEPTED: u8 = 0; +pub const VERDICT_REJECTED: u8 = 1; +pub const VERDICT_ILLFORMED: u8 = 2; + +/// Mirrors Abi.Layout.requestLayout: size 16, align 8, +/// discipline@0, term_len@4, term_utf8@8. +pub const anytype_request_t = extern struct { + discipline: u8, + term_len: u32, + term_utf8: [*:0]const u8, }; -/// Library handle (opaque to prevent direct access) -pub const Handle = opaque { - // Internal state hidden from C - allocator: std.mem.Allocator, - initialized: bool, - // Add your fields here +/// Mirrors Abi.Layout.responseLayout: size 16, align 8, +/// verdict@0, msg_len@4, msg_utf8@8. +pub const anytype_response_t = extern struct { + verdict: u8, + msg_len: u32, + msg_utf8: [*:0]const u8, }; -//============================================================================== -// Library Lifecycle -//============================================================================== - -/// Initialize the library -/// Returns a handle, or null on failure -export fn {{project}}_init() ?*Handle { - const allocator = std.heap.c_allocator; - - const handle = allocator.create(Handle) catch { - setError("Failed to allocate handle"); - return null; - }; - - // Initialize handle - handle.* = .{ - .allocator = allocator, - .initialized = true, - }; - - clearError(); - return handle; -} - -/// Free the library handle -export fn {{project}}_free(handle: ?*Handle) void { - const h = handle orelse return; - const allocator = h.allocator; - - // Clean up resources - h.initialized = false; - - allocator.destroy(h); - clearError(); -} - -//============================================================================== -// Core Operations -//============================================================================== - -/// Process data (example operation) -export fn {{project}}_process(handle: ?*Handle, input: u32) Result { - const h = handle orelse { - setError("Null handle"); - return .null_pointer; +comptime { + // These numbers are the ones proven in Abi.Layout; a drift on either + // side breaks the corresponding gate. + std.debug.assert(@sizeOf(anytype_request_t) == 16); + std.debug.assert(@alignOf(anytype_request_t) == 8); + std.debug.assert(@offsetOf(anytype_request_t, "discipline") == 0); + std.debug.assert(@offsetOf(anytype_request_t, "term_len") == 4); + std.debug.assert(@offsetOf(anytype_request_t, "term_utf8") == 8); + std.debug.assert(@sizeOf(anytype_response_t) == 16); + std.debug.assert(@alignOf(anytype_response_t) == 8); + std.debug.assert(@offsetOf(anytype_response_t, "verdict") == 0); + std.debug.assert(@offsetOf(anytype_response_t, "msg_len") == 4); + std.debug.assert(@offsetOf(anytype_response_t, "msg_utf8") == 8); +} + +fn disciplineName(code: u8) ?[]const u8 { + // Must match Abi.Types.disciplineCode. + return switch (code) { + 0 => "affine", + 1 => "exact", + else => null, }; - - if (!h.initialized) { - setError("Handle not initialized"); - return .@"error"; - } - - // Example processing logic - _ = input; - - clearError(); - return .ok; } -//============================================================================== -// String Operations -//============================================================================== - -/// Get a string result (example) -/// Caller must free the returned string -export fn {{project}}_get_string(handle: ?*Handle) ?[*:0]const u8 { - const h = handle orelse { - setError("Null handle"); - return null; - }; - - if (!h.initialized) { - setError("Handle not initialized"); - return null; +/// Run one kernel check by spawning `bin` and speaking the seam +/// protocol: term on stdin, verdict as exit code (= verdictCode). +pub fn checkWith( + io: std.Io, + bin: []const u8, + discipline: u8, + term: []const u8, +) u8 { + const disc = disciplineName(discipline) orelse return VERDICT_ILLFORMED; + + var child = std.process.spawn(io, .{ + .argv = &.{ bin, "--discipline", disc }, + .stdin = .pipe, + .stdout = .ignore, + .stderr = .ignore, + }) catch return VERDICT_ILLFORMED; + + if (child.stdin) |stdin| { + stdin.writeStreamingAll(io, term) catch {}; + stdin.writeStreamingAll(io, "\n") catch {}; + stdin.close(io); + child.stdin = null; } - - // Example: allocate and return a string - const result = h.allocator.dupeZ(u8, "Example result") catch { - setError("Failed to allocate string"); - return null; - }; - - clearError(); - return result.ptr; -} - -/// Free a string allocated by the library -export fn {{project}}_free_string(str: ?[*:0]const u8) void { - const s = str orelse return; - const allocator = std.heap.c_allocator; - - const slice = std.mem.span(s); - allocator.free(slice); -} - -//============================================================================== -// Array/Buffer Operations -//============================================================================== - -/// Process an array of data -export fn {{project}}_process_array( - handle: ?*Handle, - buffer: ?[*]const u8, - len: u32, -) Result { - const h = handle orelse { - setError("Null handle"); - return .null_pointer; - }; - - const buf = buffer orelse { - setError("Null buffer"); - return .null_pointer; + const result = child.wait(io) catch return VERDICT_ILLFORMED; + return switch (result) { + .exited => |code| switch (code) { + VERDICT_ACCEPTED, VERDICT_REJECTED, VERDICT_ILLFORMED => code, + else => VERDICT_ILLFORMED, + }, + else => VERDICT_ILLFORMED, }; - - if (!h.initialized) { - setError("Handle not initialized"); - return .@"error"; - } - - // Access the buffer - const data = buf[0..len]; - _ = data; - - // Process data here - - clearError(); - return .ok; -} - -//============================================================================== -// Error Handling -//============================================================================== - -/// Get the last error message -/// Returns null if no error -export fn {{project}}_last_error() ?[*:0]const u8 { - const err = last_error orelse return null; - - // Return C string (static storage, no need to free) - const allocator = std.heap.c_allocator; - const c_str = allocator.dupeZ(u8, err) catch return null; - return c_str.ptr; } -//============================================================================== -// Version Information -//============================================================================== - -/// Get the library version -export fn {{project}}_version() [*:0]const u8 { - return VERSION.ptr; -} - -/// Get build information -export fn {{project}}_build_info() [*:0]const u8 { - return BUILD_INFO.ptr; +/// C entry point. The kernel binary is found via $ANYTYPE_CHECK_BIN, +/// falling back to `anytype-check` on PATH. A missing binary reports +/// VERDICT_ILLFORMED — the seam never invents an acceptance. +export fn anytype_check(discipline: u8, term: [*:0]const u8) u8 { + var threaded: std.Io.Threaded = .init(std.heap.page_allocator, .{}); + defer threaded.deinit(); + const bin: []const u8 = if (std.c.getenv("ANYTYPE_CHECK_BIN")) |v| + std.mem.span(@as([*:0]const u8, v)) + else + "anytype-check"; + return checkWith(threaded.io(), bin, discipline, std.mem.span(term)); } -//============================================================================== -// Callback Support -//============================================================================== - -/// Callback function type (C ABI) -pub const Callback = *const fn (u64, u32) callconv(.C) u32; - -/// Register a callback -export fn {{project}}_register_callback( - handle: ?*Handle, - callback: ?Callback, -) Result { - const h = handle orelse { - setError("Null handle"); - return .null_pointer; - }; - - const cb = callback orelse { - setError("Null callback"); - return .null_pointer; - }; - - if (!h.initialized) { - setError("Handle not initialized"); - return .@"error"; - } - - // Store callback for later use - _ = cb; - - clearError(); - return .ok; -} +// --------------------------------------------------------------------------- +// Tests (zig build test). The round-trip tests need the kernel binary at +// ../../../build/exec/anytype-check (built by `just test`); they fail if +// it is absent, because a seam test that cannot run must not pass. +// --------------------------------------------------------------------------- -//============================================================================== -// Utility Functions -//============================================================================== +const KERNEL_BIN = "../../../build/exec/anytype-check"; -/// Check if handle is initialized -export fn {{project}}_is_initialized(handle: ?*Handle) u32 { - const h = handle orelse return 0; - return if (h.initialized) 1 else 0; +test "unknown discipline is ill-formed without spawning" { + try std.testing.expectEqual( + VERDICT_ILLFORMED, + checkWith(std.testing.io, KERNEL_BIN, 9, "tt"), + ); } -//============================================================================== -// Tests -//============================================================================== - -test "lifecycle" { - const handle = {{project}}_init() orelse return error.InitFailed; - defer {{project}}_free(handle); - - try std.testing.expect({{project}}_is_initialized(handle) == 1); +test "round trip: affine accepts drop" { + try std.testing.expectEqual( + VERDICT_ACCEPTED, + checkWith(std.testing.io, KERNEL_BIN, 0, "(lam 1 bool tt)"), + ); } -test "error handling" { - const result = {{project}}_process(null, 0); - try std.testing.expectEqual(Result.null_pointer, result); - - const err = {{project}}_last_error(); - try std.testing.expect(err != null); +test "round trip: exact rejects drop (the discipline split)" { + try std.testing.expectEqual( + VERDICT_REJECTED, + checkWith(std.testing.io, KERNEL_BIN, 1, "(lam 1 bool tt)"), + ); } -test "version" { - const ver = {{project}}_version(); - const ver_str = std.mem.span(ver); - try std.testing.expectEqualStrings(VERSION, ver_str); +test "round trip: ill-formed input" { + try std.testing.expectEqual( + VERDICT_ILLFORMED, + checkWith(std.testing.io, KERNEL_BIN, 0, "garbage(("), + ); } From cd06f221cd5f12dbb019c79aee94328ea6cd454e Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 21 Jul 2026 07:34:45 +0100 Subject: [PATCH 5/6] =?UTF-8?q?docs:=20truth=20pass=20=E2=80=94=20status?= =?UTF-8?q?=20docs,=20STATE/ANCHOR,=20tool=20pins=20now=20match=20the=20bu?= =?UTF-8?q?ilt=20kernel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - README: L1/L2 rows design->built (MVP); honesty WARNING rewritten to enumerate what is and is not built. - EXPLAINME: current-state section describes the real kernel, gates and seam; per-section caveats updated from 'intended' to 'built (MVP)'. - AFFIRMATION: what-we-do-NOT-claim updated (still an unsigned draft -- signing requires the anchor checklist). - STATE.a2ml: completion 10->40, phase design->implementation, Phases 2/3/4 -> 100, new critical-next-actions (branching join, L3/L0, in-process seam, quarantined template proofs). - ANCHOR.a2ml: systemet pin discharged with a concrete commit (ba5930dc478c80b1f968eea4ca28acd0f9d67966, 2026-07-18). - PROOF-STATUS/ROADMAP: de-templated; MANIFEST is the source of truth. - .tool-versions: idris2 0.7.0 + zig 0.16.0 active; mise.toml purged of template runtime residue (node/python/go/bun/npm etc). - ffi README: seam contract + process-boundary transport stated. Co-Authored-By: Claude Fable 5 --- .machine_readable/6a2/STATE.a2ml | 21 ++-- .machine_readable/6a2/anchors/ANCHOR.a2ml | 3 + .tool-versions | 11 +- AFFIRMATION.adoc | 17 +-- EXPLAINME.adoc | 63 ++++++---- README.adoc | 28 +++-- docs/status/PROOF-STATUS.adoc | 133 +++++++++------------- docs/status/ROADMAP.adoc | 38 ++++--- mise.toml | 60 +--------- src/interface/ffi/README.adoc | 27 ++++- 10 files changed, 201 insertions(+), 200 deletions(-) diff --git a/.machine_readable/6a2/STATE.a2ml b/.machine_readable/6a2/STATE.a2ml index 475a1cc..6ea61a1 100644 --- a/.machine_readable/6a2/STATE.a2ml +++ b/.machine_readable/6a2/STATE.a2ml @@ -6,25 +6,25 @@ [metadata] project = "anytype" version = "0.1.0" -last-updated = "2026-06-28" +last-updated = "2026-07-21" status = "active" # active | paused | archived [project-context] name = "anytype" purpose = "Reference kernel for systemet (Equality Theory): a parameterised checker whose discipline is the chosen L2 grade algebra. Implementation side of the systemet/anytype split." -completion-percentage = 10 +completion-percentage = 40 [position] -phase = "design" # design | implementation | testing | maintenance | archived +phase = "implementation" # design | implementation | testing | maintenance | archived maturity = "experimental" # experimental | alpha | beta | production | lts [route-to-mvp] milestones = [ { name = "Phase 0: Split kernel out of the EveryType draft; instantiate RSR repo", completion = 100 }, { name = "Phase 1: Design write-up (pluggable grades, L1 conversion, gates)", completion = 80 }, - { name = "Phase 2: L2 grade-algebra interface + first concrete grade (affine)", completion = 0 }, - { name = "Phase 3: L1 conversion checker + totality gate", completion = 0 }, - { name = "Phase 4: anytype-specific typed ABI/FFI seam (replace template seam)", completion = 0 }, + { name = "Phase 2: L2 grade-algebra interface + first concrete grade (affine)", completion = 100 }, + { name = "Phase 3: L1 conversion checker + totality gate", completion = 100 }, + { name = "Phase 4: anytype-specific typed ABI/FFI seam (replace template seam)", completion = 100 }, { name = "Phase 5: L3 guarded recursion; L0 lowering target", completion = 0 }, { name = "Phase 6: L4 effect handlers + TEA-erasure (gated on systemet OPEN-A)", completion = 0 }, ] @@ -34,10 +34,11 @@ milestones = [ [critical-next-actions] actions = [ - "Define the L2 grade-algebra interface against systemet's stated laws.", - "Implement the L1 conversion checker (normalize + compare) and the totality gate.", - "Replace the template ABI/FFI seam with an anytype-specific one.", - "Keep README/EXPLAINME inside what is built; no 'usable checker' claim until it exists.", + "Add branching to L1: needs a join (least upper bound) on grades beyond the semiring+order laws -- design the extension against systemet first.", + "L3 guarded recursion (Phase 5), then L0 lowering target.", + "In-process seam: link the kernel via the RefC backend instead of spawning anytype-check.", + "Decide the fate of the five quarantined RSR template proof modules (fix or delete; tracked in scripts/check-idris2-proofs.sh MANIFEST).", + "Keep README/EXPLAINME inside what is built; the MVP claim is 'distinct disciplines from one rule set', not 'usable general-purpose checker'.", ] [maintenance-status] diff --git a/.machine_readable/6a2/anchors/ANCHOR.a2ml b/.machine_readable/6a2/anchors/ANCHOR.a2ml index 77347a9..65bd644 100644 --- a/.machine_readable/6a2/anchors/ANCHOR.a2ml +++ b/.machine_readable/6a2/anchors/ANCHOR.a2ml @@ -29,6 +29,9 @@ domain = "programming-language implementation / type checkers" semantic-authority = "hyperpolymath/systemet" relationship = "implements" pin-required = true +# Discharged 2026-07-21: the systemet commit this kernel implements. +pinned-commit = "ba5930dc478c80b1f968eea4ca28acd0f9d67966" +pinned-date = "2026-07-18" extend-not-redefine = true [semantic-authority] diff --git a/.tool-versions b/.tool-versions index ce60c32..968684a 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,10 +1,3 @@ -# Uncomment and customize for your project -# rust nightly -# just 1.40.0 -# nickel 1.10.0 -# gleam 1.8.0 -# elixir 1.18.0 -# erlang 27.2 -# zig 0.14.0 -# idris2 0.7.0 rust nightly +idris2 0.7.0 +zig 0.16.0 diff --git a/AFFIRMATION.adoc b/AFFIRMATION.adoc index 83af40a..df145e5 100644 --- a/AFFIRMATION.adoc +++ b/AFFIRMATION.adoc @@ -35,14 +35,17 @@ file is a draft. == What we do NOT claim -* *There is no working type checker yet.* `src/`, `tests/`, and `verification/proofs/` - are RSR *scaffolding* inherited from the template, not an anytype implementation. -* *The pluggable-grade interface does not exist in code yet.* It is the first build - target, not a shipped feature. -* *No layer is implemented.* The L0–L4 table in the README is intent + status, not a - record of working code. +* *The kernel is an MVP cut, not a general-purpose type checker.* No dependent + types, no branching, no L3 recursion, no L0 lowering, no L4 effects. +* *No soundness proof for the checker.* The grade-algebra laws are machine-checked + proof fields and the golden matrix is real, but progress/preservation for the + L1 checker is not proven. +* *The totality gate is syntactic* (no recursion constructor in the type-index + language), not a termination analysis. * *TEA-erasure is OPEN* (in systemet) and not started here. Do not cite it. -* *The ABI/FFI seam files are the template's*, not yet an anytype-specific ABI. +* *The seam transport is a spawned process*, not in-process linkage; five + never-compiling template proof modules are quarantined in + `scripts/check-idris2-proofs.sh`, not fixed. == Provenance note diff --git a/EXPLAINME.adoc b/EXPLAINME.adoc index d80430a..7a18652 100644 --- a/EXPLAINME.adoc +++ b/EXPLAINME.adoc @@ -23,18 +23,28 @@ its current state*. Claim: anytype is the reference kernel for Equality Theory. -Reality at this commit: - -* There is *no working checker yet*. `src/` contains RSR scaffolding - (`src/interface/Abi/*.idr`, `src/interface/ffi/*.zig`, READMEs, AI-manifests), not - an anytype implementation. -* `tests/` and `verification/proofs/` are template stubs, not anytype tests/proofs. -* What is real today: the repository *shape* (RSR), the *design* of the kernel in - this file and the README, and the *split* that makes systemet the theory and - anytype the engine. - -Everything below describes the *intended* mapping. Where a file does not yet exist or -is a stub, it is named as such. The dated, signed snapshot is `AFFIRMATION.adoc`. +Reality at this commit (2026-07-21, MVP kernel): + +* The kernel *exists for the MVP cut*: `src/kernel/` is a usage-counting + bidirectional checker for a simply-graded λ-calculus, parameterised by a + `GradeAlgebra` record whose ordered-semiring laws are proof fields. Two + instances ship — affine `{0,1,ω}` (mirroring AffineScript `lib/quantity.ml`) + and exact-usage `ℕ` — and the 19-case golden matrix shows the same rules + yielding distinct disciplines (affine accepts drop, exact rejects it). +* The seam is anytype's own: `src/interface/Abi/` (wire types with injective + codes; layouts proven `CABICompliant`), the `anytype-check` CLI + (`src/cli/`), and the Zig `anytype_check` export (`src/interface/ffi/`) + with comptime asserts against the proven layouts. MVP transport is a + spawned process; in-process RefC linkage is future work. +* Gates are real and hard-fail: `just test`, `just proof-check-idris2` + (manifest over every `.idr`; missing prover = FAIL), and CI + `idris2-proof.yml`. Five never-compiling template modules under + `verification/proofs/idris2/` are quarantined, not hidden. +* Not built: dependent types, branching (needs a grade join beyond the + stated laws), L3 recursion, L0 lowering, L4 effects (TEA is open in + systemet), and any soundness proof for the checker itself. + +The dated snapshot is `AFFIRMATION.adoc`. == Pluggable grades (the L2 mechanism) @@ -52,9 +62,14 @@ Division of responsibility: * systemet *defines the laws* a grade algebra must satisfy. * anytype *implements the interface and checks candidates against those laws*. -Caveat: +State: -* None of this interface exists in code yet. It is the kernel's first build target. +* Built (MVP): `src/kernel/Anytype/Grade/Algebra.idr` is the interface — a record + whose law fields make an unlawful algebra unrepresentable. `Affine.idr` and + `Exact.idr` are the first two instances. The richer grades (cost, + information-flow lattice, probability-like, privacy budget) remain future + instances; branching additionally needs a join operation the record does not + yet carry. == L1 equality and the totality gate @@ -67,10 +82,16 @@ Intended implementation: * A totality checker that rejects non-terminating type-level functions, so conversion terminates. -Caveat: +State and caveat: +* Built (MVP): `Anytype.Core.Normalise` + `Anytype.Core.Conversion`, invoked at the + single check/infer mode switch in `Anytype.Core.Check`. The MVP totality gate is + *syntactic*: the type-index language (`TNat`) has no recursion constructor, and the + normaliser is `%default total` — machine-checked, but a gate by construction, not a + termination analysis over a type-level function space (there is no type-level + function space yet). * The strength of "equality is conversion" is exactly the strength of the totality - checker. Any escape hatch must be recorded as an explicit unsafe boundary in + gate. Any escape hatch must be recorded as an explicit unsafe boundary in `AFFIRMATION.adoc`, never folded silently into equality. The *theorem* that this is sound is systemet's obligation; this repo only has to *implement the check*. @@ -123,10 +144,14 @@ How this is implemented: * `src/interface/Abi/` holds Idris2 interface/layout descriptions; `src/interface/ffi/` holds the Zig FFI; `src/interface/generated/` is where generated C headers land. -Caveat: +State: -* These are currently the *template's* seam files, not anytype-specific ones. They - demonstrate the pattern; they do not yet describe an anytype ABI. +* Built (MVP): `Abi.Types` (discipline/verdict codes, injectivity + round-trip + proofs), `Abi.Layout` (`anytype_request_t`/`anytype_response_t` proven + `CABICompliant`), `Abi.Foreign` (the `anytype_check` contract), and the Zig side + comptime-asserting the same layouts. Transport is a spawned `anytype-check` + process; `src/interface/generated/` C headers and in-process linkage are future + work. == RSR integration diff --git a/README.adoc b/README.adoc index 72296ca..f0e776f 100644 --- a/README.adoc +++ b/README.adoc @@ -91,11 +91,17 @@ only the implementation status. | *L2 · resources `□`* | The graded-modal substrate + the pluggable grade-algebra interface -| *design* — this is the kernel's centre of gravity +| *built (MVP)* — `Anytype.Grade.Algebra` is an ordered-semiring record whose laws +are proof fields; instances exist for affine `{0,1,ω}` (AffineScript's discipline) +and exact-usage `ℕ`. Same rules, distinct disciplines — demonstrated in the golden +matrix. | *L1 · equality* | Equality as `normalize` + `compare`; the totality check that makes it decidable -| *design* +| *built (MVP cut)* — a bidirectional simply-graded λ-calculus whose type-index +language has no recursion constructor, so type-level computation is total *by +construction* (a syntactic gate, machine-checked via `%default total`, not a +termination analysis). Conversion is normalise-and-compare at one site. | *L0 · runtime* | Lowering to a WASM/C target @@ -104,11 +110,19 @@ only the implementation status. [WARNING] ==== -*Honesty check.* At this commit there is *no working kernel*. The `src/`, `tests/`, -and `verification/proofs/` trees are RSR *scaffolding* inherited from the template, -not a checker. This README states intent (where anytype is going); the engineering -state lives in `EXPLAINME.adoc` and the dated snapshot in `AFFIRMATION.adoc`. Do not -cite anytype as a usable type checker yet. +*Honesty check.* At this commit the kernel exists *for the MVP cut only*: +a simply-graded λ-calculus (`src/kernel/`) with pluggable grade algebras, a +process-boundary seam (`anytype-check` + the Zig `anytype_check` export), and +real gates (`just test`, `just proof-check-idris2`, CI `idris2-proof.yml`). +What it is *not* yet: no dependent types, no branching (`if` needs a grade +join beyond the stated semiring+order laws), no L3 guarded recursion, no L0 +lowering, no L4 effects (gated on systemet's open TEA-erasure result), and +the seam transport is a spawned process, not in-process linkage. Five RSR +template modules under `verification/proofs/idris2/` never compiled and are +quarantined in `scripts/check-idris2-proofs.sh` rather than deleted. Do not +cite anytype as a general-purpose type checker; cite it as a working +demonstration that one set of rules yields distinct disciplines by choosing +the algebra. ==== == Quick start diff --git a/docs/status/PROOF-STATUS.adoc b/docs/status/PROOF-STATUS.adoc index aca702c..f66866d 100644 --- a/docs/status/PROOF-STATUS.adoc +++ b/docs/status/PROOF-STATUS.adoc @@ -1,94 +1,72 @@ // SPDX-License-Identifier: CC-BY-SA-4.0 // Copyright (c) Jonathan D.A. Jewell -// Template: rsr-template-repo/docs/status/PROOF-STATUS.adoc -// Tracks proof completion. Requirements defined in PROOF-NEEDS.adoc -= Proof Status — {{PROJECT}} += Proof Status — anytype -== Summary +The single source of truth for "does the Idris2 in this repo compile?" is +`scripts/check-idris2-proofs.sh` (run as `just proof-check-idris2`, and in CI +by `.github/workflows/idris2-proof.yml`). Its MANIFEST lists every `.idr` +file as `gated` (must compile) or `quarantine` (known-broken, must keep +failing); an unlisted module is an error. This page summarises; the script +decides. -[cols="2,1,1,1,1,1", options="header"] -|=== -| Category | Total | Done | In Progress | Blocked | Remaining - -| ABI/FFI (ABI) | 5 | 0 | 0 | 0 | 5 -| Typing (TP) | 2 | 0 | 0 | 0 | 2 -| Invariant (INV) | 0 | 0 | 0 | 0 | 0 -| Security (SEC) | 0 | 0 | 0 | 0 | 0 -| Concurrency (CONC) | 0 | 0 | 0 | 0 | 0 -| Algorithm (ALG) | 0 | 0 | 0 | 0 | 0 -| Domain (DOM) | 0 | 0 | 0 | 0 | 0 -| *Total* | *7* | *0* | *0* | *0* | *7* -|=== - -*Overall*: 0% proven +== What is actually proven (gated, `%default total`, no escape hatches) -== Proofs Done - -// Format: -// | ID | Proof | Prover | File | Date | Verified By | -// | ABI-1 | Non-null pointer proofs | Idris2 | verification/proofs/idris2/ABI/Pointers.idr | 2026-XX-XX | idris2 --check | - -[cols="1,3,1,3,1,2", options="header"] +[cols="2,3,3", options="header"] |=== -| ID | Proof | Prover | File | Date | Verified By - -| — | No proofs completed yet | — | — | — | — +| Area | Modules | What the proofs say + +| L2 grade algebras +| `src/kernel/Anytype/Grade/{Algebra,Affine,Exact}.idr` +| `GradeAlgebra` carries its ordered-semiring laws as proof fields, so an +unlawful algebra is unrepresentable. The affine `{0,1,ω}` instance (mirroring +AffineScript `lib/quantity.ml`) and the exact-usage `ℕ` instance discharge +every law — associativity, commutativity, identities, annihilation, +distributivity, order reflexivity/transitivity/antisymmetry, and +monotonicity of both operations. + +| L1 totality +| `src/kernel/Anytype/Core/{Syntax,Normalise,Conversion,Check}.idr` +| The type-index language has no recursion constructor and `normalise` is +machine-checked total, so conversion (normalise-and-compare) is decidable by +construction. This is a syntactic totality gate, not a termination analysis. + +| Seam encodings +| `src/interface/Abi/Types.idr` +| Discipline and verdict wire codes are injective; decoding inverts encoding. + +| Seam layouts +| `src/interface/Abi/Layout.idr` +| `anytype_request_t` / `anytype_response_t` (16 bytes, align 8) are proven +`CABICompliant`; the Zig side comptime-asserts the same numbers, so a layout +drift on either side breaks a gate. |=== -== Proofs In Progress +== Quarantined (RSR template stock, never compiled) -[cols="1,3,1,2,1,2", options="header"] -|=== -| ID | Proof | Prover | Assignee | Started | Blocker +Five modules under `verification/proofs/idris2/` are template inheritance +that predates the kernel and does not compile (missing `Data.Nat` imports; +one erased-field projection). They are quarantined in the MANIFEST with +per-module reasons: the gate requires them to KEEP failing, and flags them +for promotion if one starts passing. `ABI/Foreign.idr` is the one template +module that compiles and is gated. Their fate (fix or delete) is tracked in +`STATE.a2ml` critical-next-actions. -| — | — | — | — | — | — -|=== +== Not proven (open obligations) -== Proofs Blocked +* Type safety (progress/preservation) of the L1 checker — the checker is + executable and golden-tested, not yet accompanied by a soundness proof. +* systemet's theory obligations (L1 soundness/completeness of + conversion-as-equality, trope preservation, TEA erasure) live upstream in + systemet and are all open there. +* The Agda/Coq/Lean4/TLA+ stubs under `verification/proofs/` are untouched + template files with no gate; they claim nothing. -[cols="1,3,2,3", options="header"] -|=== -| ID | Proof | Blocked By | Notes - -| — | — | — | — -|=== +== Verification commands -== Proofs Remaining - -[cols="1,3,1,1,1,1", options="header"] -|=== -| ID | Proof | Category | Prover | Priority | Est. Effort - -| ABI-1 | Non-null pointer proofs | ABI | Idris2 | P1 | 2h -| ABI-2 | Memory layout correctness | ABI | Idris2 | P1 | 4h -| ABI-3 | Platform type size proofs | ABI | Idris2 | P1 | 2h -| ABI-4 | FFI function return type proofs | ABI | Idris2 | P1 | 2h -| ABI-5 | C ABI compliance | ABI | Idris2 | P1 | 4h -| TP-1 | Core data type well-formedness | TP | Idris2 | P1 | 4h -| TP-2 | Public API type safety | TP | Lean4 | P2 | 4h -|=== - -== Verification Commands - -[source,bash] +[source,sh] ---- -# Check all Idris2 proofs -just proof-check-idris2 - -# Check all Lean4 proofs -just proof-check-lean4 - -# Check all Agda proofs -just proof-check-agda - -# Check all Coq proofs -just proof-check-coq - -# Run all proof checks -just proof-check-all - -# Scan for dangerous patterns -panic-attack assail --proofs-only +just proof-check-idris2 # every .idr, manifest-gated, hard-fails without idris2 +just test # kernel build + 19-case golden matrix + seam tests ---- == Changelog @@ -98,4 +76,5 @@ panic-attack assail --proofs-only | Date | Change | By | 2026-04-04 | Initial proof status tracking | Template +| 2026-07-21 | Re-scoped from template to the real kernel: gated/quarantine MANIFEST, law-field proofs, layout proofs | MVP kernel work |=== diff --git a/docs/status/ROADMAP.adoc b/docs/status/ROADMAP.adoc index bafe0ce..fe37b46 100644 --- a/docs/status/ROADMAP.adoc +++ b/docs/status/ROADMAP.adoc @@ -1,23 +1,33 @@ // SPDX-License-Identifier: CC-BY-SA-4.0 // Copyright (c) Jonathan D.A. Jewell -= YOUR Template Repo Roadmap += anytype Roadmap -== Current Status +Mirrors `[route-to-mvp]` in `.machine_readable/6a2/STATE.a2ml` (which is the +machine-readable source of truth). -Initial development phase. +== Done -== Milestones +* [x] Phase 0 — split the kernel out of the EveryType draft; RSR repo +* [x] Phase 2 — L2 grade-algebra interface (laws as proof fields) + affine + `{0,1,ω}` and exact-usage `ℕ` instances +* [x] Phase 3 — L1 conversion checker (normalise-and-compare) + syntactic + totality gate, with the 19-case golden matrix +* [x] Phase 4 — anytype-specific seam: `Abi.{Types,Layout,Foreign}` rewritten + from the template, `anytype-check` CLI, Zig `anytype_check` export with + comptime layout asserts (MVP transport: spawned process) -=== v0.1.0 - Foundation -* [ ] Core functionality -* [ ] Basic documentation -* [ ] CI/CD pipeline +== Next -=== v1.0.0 - Stable Release -* [ ] Full feature set -* [ ] Comprehensive tests -* [ ] Production ready +* [ ] Phase 1 residue — finish the design write-up (currently 80%) +* [ ] Branching in L1 — needs a grade join beyond the stated semiring+order + laws; design against systemet first, then extend `GradeAlgebra` +* [ ] Phase 5 — L3 guarded recursion; L0 lowering target +* [ ] In-process seam — link the kernel via the RefC backend instead of + spawning `anytype-check` +* [ ] Quarantined template proofs — fix or delete the five never-compiling + modules under `verification/proofs/idris2/` (see the MANIFEST) -== Future Directions +== Blocked -_To be determined based on community feedback._ +* Phase 6 — L4 effect handlers + TEA erasure: gated on systemet's open + TEA-erasure result (the headline open problem upstream). diff --git a/mise.toml b/mise.toml index 6dd983f..360c2b5 100644 --- a/mise.toml +++ b/mise.toml @@ -1,57 +1,5 @@ [tools] -# Language runtimes -node = "latest" -python = "latest" -rust = "latest" -go = "latest" -zig = "latest" -java = "latest" -bun = "latest" -denojs = "latest" - -# Package managers -npm = "latest" -yarn = "latest" -pnpm = "latest" -pip = "latest" -cargo = "latest" -go-task = "latest" - -# Formatting & Linting -gofmt = "latest" -black = "latest" -isort = "latest" -ruff = "latest" -prettier = "latest" -shfmt = "latest" -stylua = "latest" - -# Build tools -cmake = "latest" -make = "latest" -ninja = "latest" - -# Shell tools -git = "latest" -gnu-sed = "latest" -gnu-tar = "latest" -gnu-grep = "latest" - -# Testing -vitest = "latest" -pytest = "latest" -jest = "latest" - -[env] -# Common environment variables -NODE_ENV = "development" -PYTHONDONTWRITEBYTECODE = "1" -PYTHONUNBUFFERED = "1" - -# Task runner alias -[alias] -task = "go-task" -build = "cargo build --release || npm run build || go build" -test = "cargo test || npm test || go test ./..." -lint = "ruff check . || prettier --check . || black --check ." -fmt = "ruff format . || prettier --write . || black ." +# Kernel toolchain (see .tool-versions for authoritative pins) +idris2 = "0.7.0" +zig = "0.16.0" +rust = "nightly" diff --git a/src/interface/ffi/README.adoc b/src/interface/ffi/README.adoc index ca14320..24df480 100644 --- a/src/interface/ffi/README.adoc +++ b/src/interface/ffi/README.adoc @@ -1,3 +1,28 @@ // SPDX-License-Identifier: CC-BY-SA-4.0 // Copyright (c) Jonathan D.A. Jewell -= ffi Logic += anytype FFI (Zig) + +`libanytype` exports `anytype_check(discipline: u8, term: [*:0]const u8) u8`, +the C symbol declared in `src/interface/Abi/Foreign.idr`. Verdict return +values are `Abi.Types.verdictCode`: 0 accepted, 1 rejected, 2 ill-formed. + +*MVP transport is a spawned process*: the export locates the `anytype-check` +kernel binary (`$ANYTYPE_CHECK_BIN`, else PATH) and speaks the seam protocol +(term on stdin, verdict as exit code). In-process linkage of the Idris2 +kernel (RefC backend) is future work. A missing binary reports ill-formed — +the seam never invents an acceptance. + +Wire structs (`anytype_request_t`, `anytype_response_t`) are comptime-asserted +against the layouts proven `CABICompliant` in `src/interface/Abi/Layout.idr`; +edit a layout on either side and one of the two gates fails. + +Build and test (Zig 0.16, pinned in `.tool-versions`): + +[source,sh] +---- +zig build # static libanytype +zig build test # comptime layout asserts + kernel round-trip tests +---- + +The round-trip tests need `build/exec/anytype-check` at the repo root +(`just test` builds it) and FAIL when it is absent, never skip. From 2fd40372c908673cec83fc8ed29c0078449fa841 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Tue, 21 Jul 2026 07:36:19 +0100 Subject: [PATCH 6/6] chore: stop tracking build/ output (drop the stale gitignore whitelist) The !/build/ negations existed for the old tracked build/ config directory; after its removal they were re-including Idris2's compiled artifacts (.so/.ss executables), which landed in the previous commits. build/ is generated output only now. Co-Authored-By: Claude Fable 5 --- .gitignore | 15 +- build/exec/anytype-check | 15 - build/exec/anytype-check_app/anytype-check.so | Bin 43350 -> 0 bytes build/exec/anytype-check_app/anytype-check.ss | 807 ------------------ build/exec/anytype-check_app/compileChez | 1 - .../anytype-check_app/libidris2_support.so | Bin 50080 -> 0 bytes build/exec/anytype-tests | 15 - build/exec/anytype-tests_app/anytype-tests.so | Bin 28880 -> 0 bytes build/exec/anytype-tests_app/anytype-tests.ss | 763 ----------------- build/exec/anytype-tests_app/compileChez | 1 - .../anytype-tests_app/libidris2_support.so | Bin 50080 -> 0 bytes 11 files changed, 4 insertions(+), 1613 deletions(-) delete mode 100755 build/exec/anytype-check delete mode 100755 build/exec/anytype-check_app/anytype-check.so delete mode 100755 build/exec/anytype-check_app/anytype-check.ss delete mode 100755 build/exec/anytype-check_app/compileChez delete mode 100644 build/exec/anytype-check_app/libidris2_support.so delete mode 100755 build/exec/anytype-tests delete mode 100755 build/exec/anytype-tests_app/anytype-tests.so delete mode 100755 build/exec/anytype-tests_app/anytype-tests.ss delete mode 100755 build/exec/anytype-tests_app/compileChez delete mode 100644 build/exec/anytype-tests_app/libidris2_support.so diff --git a/.gitignore b/.gitignore index ccf874b..998a123 100644 --- a/.gitignore +++ b/.gitignore @@ -109,17 +109,10 @@ deps/ build/ dist/ -# /build/ is a tracked config directory (build orchestration: contractile.just, -# guix.scm, just/*.just, etc.) introduced in chore/root-cleanup. Whitelist -# root-level /build/ so its contents are tracked. The blanket `build/` rule -# above still ignores any nested `build/` directories (e.g. Rust crate -# target/build/) — only the root-level path is exempt. -!/build/ -!/build/** - -# ...but never track Idris2 typecheck output. `idris2 --typecheck abi.ipkg` -# writes compiled .ttc/.ttm under build/ttc/; these are generated artifacts. -/build/ttc/ +# build/ is generated output only (Idris2 .ttc/.ttm and executables, Zig +# artifacts). The old tracked build/ config directory (contractile.just, +# guix.scm, just/*.just) was removed with the fake-gate recipes; nothing +# under build/ is source any more. # Arrival-pack build artifact (regenerated from a2ml) .machine_readable/arrival-pack/claude-md-data.json diff --git a/build/exec/anytype-check b/build/exec/anytype-check deleted file mode 100755 index 280f8ce..0000000 --- a/build/exec/anytype-check +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# @generated by Idris 0.7.0, Chez backend - -set -e # exit on any error - -if [ "$(uname)" = Darwin ]; then - DIR=$(zsh -c 'printf %s "$0:A:h"' "$0") -else - DIR=$(dirname "$(readlink -f -- "$0")") -fi -export LD_LIBRARY_PATH="$DIR/anytype-check_app:$LD_LIBRARY_PATH" -export DYLD_LIBRARY_PATH="$DIR/anytype-check_app:$DYLD_LIBRARY_PATH" -export IDRIS2_INC_SRC="$DIR/anytype-check_app" - -"$DIR/anytype-check_app/anytype-check.so" "$@" \ No newline at end of file diff --git a/build/exec/anytype-check_app/anytype-check.so b/build/exec/anytype-check_app/anytype-check.so deleted file mode 100755 index e176c68e4c55413e6eafb63a59fee0f097f445a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43350 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%0A% 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 b 0) (- q 1) (+ q 1)) - q))) - -(define (blodwen-euclidMod a b) - (let ((r (remainder a b))) - (if (< r 0) - (if (> b 0) (+ r b) (- r b)) - r))) - -; flonum constants - -(define (blodwen-calcFlonumUnitRoundoff) - (let loop [(uro 1.0)] - (if (fl= 1.0 (fl+ 1.0 uro)) - uro - (loop (fl/ uro 2.0))))) - -(define (blodwen-calcFlonumEpsilon) - (fl* (blodwen-calcFlonumUnitRoundoff) 2.0)) - -(define (blodwen-flonumNaN) - +nan.0) - -(define (blodwen-flonumInf) - +inf.0) - -; Bits - -(define bu+ (lambda (x y bits) (blodwen-toUnsignedInt (+ x y) bits))) -(define bu- (lambda (x y bits) (blodwen-toUnsignedInt (- x y) bits))) -(define bu* (lambda (x y bits) (blodwen-toUnsignedInt (* x y) bits))) -(define bu/ (lambda (x y bits) (blodwen-toUnsignedInt (quotient x y) bits))) - -(define bs+ (lambda (x y bits) (blodwen-toSignedInt (+ x y) bits))) -(define bs- (lambda (x y bits) (blodwen-toSignedInt (- x y) bits))) -(define bs* (lambda (x y bits) (blodwen-toSignedInt (* x y) bits))) -(define bs/ (lambda (x y bits) (blodwen-toSignedInt (blodwen-euclidDiv x y) bits))) - -(define (integer->bits8 x) (logand x (sub1 (ash 1 8)))) -(define (integer->bits16 x) (logand x (sub1 (ash 1 16)))) -(define (integer->bits32 x) (logand x (sub1 (ash 1 32)))) -(define (integer->bits64 x) (logand x (sub1 (ash 1 64)))) - -(define (bits16->bits8 x) (logand x (sub1 (ash 1 8)))) -(define (bits32->bits8 x) (logand x (sub1 (ash 1 8)))) -(define (bits64->bits8 x) (logand x (sub1 (ash 1 8)))) -(define (bits32->bits16 x) (logand x (sub1 (ash 1 16)))) -(define (bits64->bits16 x) (logand x (sub1 (ash 1 16)))) -(define (bits64->bits32 x) (logand x (sub1 (ash 1 32)))) - -(define (blodwen-bits-shl-signed x y bits) (blodwen-toSignedInt (ash x y) bits)) - -(define (blodwen-bits-shl x y bits) (logand (ash x y) (sub1 (ash 1 bits)))) - -(define blodwen-shl (lambda (x y) (ash x y))) -(define blodwen-shr (lambda (x y) (ash x (- y)))) -(define blodwen-and (lambda (x y) (logand x y))) -(define blodwen-or (lambda (x y) (logor x y))) -(define blodwen-xor (lambda (x y) (logxor x y))) - -(define cast-num - (lambda (x) - (if (number? x) x 0))) -(define destroy-prefix - (lambda (x) - (cond - ((equal? x "") "") - ((equal? (string-ref x 0) #\#) "") - (else x)))) - -(define exact-floor - (lambda (x) - (inexact->exact (floor x)))) - -(define exact-truncate - (lambda (x) - (inexact->exact (truncate x)))) - -(define exact-truncate-boundedInt - (lambda (x y) - (blodwen-toSignedInt (exact-truncate x) y))) - -(define exact-truncate-boundedUInt - (lambda (x y) - (blodwen-toUnsignedInt (exact-truncate x) y))) - -(define cast-char-boundedInt - (lambda (x y) - (blodwen-toSignedInt (char->integer x) y))) - -(define cast-char-boundedUInt - (lambda (x y) - (blodwen-toUnsignedInt (char->integer x) y))) - -(define cast-string-int - (lambda (x) - (exact-truncate (cast-num (string->number (destroy-prefix x)))))) - -(define cast-string-boundedInt - (lambda (x y) - (blodwen-toSignedInt (cast-string-int x) y))) - -(define cast-string-boundedUInt - (lambda (x y) - (blodwen-toUnsignedInt (cast-string-int x) y))) - -(define cast-int-char - (lambda (x) - (if (or - (and (>= x 0) (<= x #xd7ff)) - (and (>= x #xe000) (<= x #x10ffff))) - (integer->char x) - (integer->char 0)))) - -(define cast-string-double - (lambda (x) - (exact->inexact (cast-num (string->number (destroy-prefix x)))))) - - -(define (string-concat xs) (apply string-append xs)) -(define (string-unpack s) (string->list s)) -(define (string-pack xs) (list->string xs)) - -(define string-cons (lambda (x y) (string-append (string x) y))) -(define string-reverse (lambda (x) - (list->string (reverse (string->list x))))) -(define (string-substr off len s) - (let* ((l (string-length s)) - (b (max 0 off)) - (x (max 0 len)) - (end (min l (+ b x)))) - (if (> b l) - "" - (substring s b end)))) - -(define (blodwen-string-iterator-new s) - 0) - -(define (blodwen-string-iterator-to-string _ s ofs f) - (f (substring s ofs (string-length s)))) - -(define (blodwen-string-iterator-next s ofs) - (if (>= ofs (string-length s)) - '() ; EOF - (cons (string-ref s ofs) (+ ofs 1)))) - -(define either-left - (lambda (x) - (vector 0 x))) - -(define either-right - (lambda (x) - (vector 1 x))) - -(define blodwen-error-quit - (lambda (msg) - (display msg) - (newline) - (exit 1))) - -(define (blodwen-get-line p) - (if (port? p) - (let ((str (get-line p))) - (if (eof-object? str) - "" - str)) - void)) - -(define (blodwen-get-char p) - (if (port? p) - (let ((chr (get-char p))) - (if (eof-object? chr) - #\nul - chr)) - void)) - -;; Buffers - -(define (blodwen-new-buffer size) - (make-bytevector size 0)) - -(define (blodwen-buffer-size buf) - (bytevector-length buf)) - -(define (blodwen-buffer-setbyte buf loc val) - (bytevector-u8-set! buf loc val)) - -(define (blodwen-buffer-getbyte buf loc) - (bytevector-u8-ref buf loc)) - -(define (blodwen-buffer-setbits16 buf loc val) - (bytevector-u16-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getbits16 buf loc) - (bytevector-u16-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setbits32 buf loc val) - (bytevector-u32-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getbits32 buf loc) - (bytevector-u32-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setbits64 buf loc val) - (bytevector-u64-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getbits64 buf loc) - (bytevector-u64-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setint8 buf loc val) - (bytevector-s8-set! buf loc val)) - -(define (blodwen-buffer-getint8 buf loc) - (bytevector-s8-ref buf loc)) - -(define (blodwen-buffer-setint16 buf loc val) - (bytevector-s16-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getint16 buf loc) - (bytevector-s16-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setint32 buf loc val) - (bytevector-s32-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getint32 buf loc) - (bytevector-s32-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setint buf loc val) - (bytevector-s64-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getint buf loc) - (bytevector-s64-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setint64 buf loc val) - (bytevector-s64-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getint64 buf loc) - (bytevector-s64-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setdouble buf loc val) - (bytevector-ieee-double-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getdouble buf loc) - (bytevector-ieee-double-ref buf loc (native-endianness))) - -(define (blodwen-stringbytelen str) - (bytevector-length (string->utf8 str))) - -(define (blodwen-buffer-setstring buf loc val) - (let* [(strvec (string->utf8 val)) - (len (bytevector-length strvec))] - (bytevector-copy! strvec 0 buf loc len))) - -(define (blodwen-buffer-getstring buf loc len) - (let [(newvec (make-bytevector len))] - (bytevector-copy! buf loc newvec 0 len) - (utf8->string newvec))) - -(define (blodwen-buffer-copydata buf start len dest loc) - (bytevector-copy! buf start dest loc len)) - -;; Threads - -(define-record thread-handle (semaphore)) - -(define (blodwen-thread proc) - (let [(sema (blodwen-make-semaphore 0))] - (fork-thread (lambda () (proc (vector 0)) (blodwen-semaphore-post sema))) - (make-thread-handle sema) - )) - -(define (blodwen-thread-wait handle) - (blodwen-semaphore-wait (thread-handle-semaphore handle))) - -;; Thread mailboxes - -(define blodwen-thread-data - (make-thread-parameter #f)) - -(define (blodwen-get-thread-data ty) - (blodwen-thread-data)) - -(define (blodwen-set-thread-data ty a) - (blodwen-thread-data a)) - -;; Semaphore - -(define-record semaphore (box mutex condition)) - -(define (blodwen-make-semaphore init) - (make-semaphore (box init) (make-mutex) (make-condition))) - -(define (blodwen-semaphore-post sema) - (with-mutex (semaphore-mutex sema) - (let [(sema-box (semaphore-box sema))] - (set-box! sema-box (+ (unbox sema-box) 1)) - (condition-signal (semaphore-condition sema)) - ))) - -(define (blodwen-semaphore-wait sema) - (with-mutex (semaphore-mutex sema) - (let [(sema-box (semaphore-box sema))] - (when (= (unbox sema-box) 0) - (condition-wait (semaphore-condition sema) (semaphore-mutex sema))) - (set-box! sema-box (- (unbox sema-box) 1)) - ))) - -;; Barrier - -(define-record barrier (count-box num-threads mutex cond)) - -(define (blodwen-make-barrier num-threads) - (make-barrier (box 0) num-threads (make-mutex) (make-condition))) - -(define (blodwen-barrier-wait barrier) - (let [(count-box (barrier-count-box barrier)) - (num-threads (barrier-num-threads barrier)) - (mutex (barrier-mutex barrier)) - (condition (barrier-cond barrier))] - (with-mutex mutex - (let* [(count-old (unbox count-box)) - (count-new (+ count-old 1))] - (set-box! count-box count-new) - (if (= count-new num-threads) - (condition-broadcast condition) - (condition-wait condition mutex)) - )))) - -;; Channel -; With thanks to Alain Zscheile (@zseri) for help with understanding condition -; variables, and figuring out where the problems were and how to solve them. - -(define-record channel (read-mut read-cv read-box val-cv val-box)) - -(define (blodwen-make-channel ty) - (make-channel - (make-mutex) - (make-condition) - (box #t) - (make-condition) - (box '()) - )) - -; block on the read status using read-cv until the value has been read -(define (channel-put-while-helper chan) - (let ([read-mut (channel-read-mut chan)] - [read-box (channel-read-box chan)] - [read-cv (channel-read-cv chan)] - ) - (if (unbox read-box) - (void) ; val has been read, so everything is fine - (begin ; otherwise, block/spin with cv - (condition-wait read-cv read-mut) - (channel-put-while-helper chan) - ) - ))) - -(define (blodwen-channel-put ty chan val) - (with-mutex (channel-read-mut chan) - (channel-put-while-helper chan) - (let ([read-box (channel-read-box chan)] - [val-box (channel-val-box chan)] - ) - (set-box! val-box val) - (set-box! read-box #f) - )) - (condition-signal (channel-val-cv chan)) - ) - -; block on the value until it has been set -(define (channel-get-while-helper chan) - (let ([read-mut (channel-read-mut chan)] - [read-box (channel-read-box chan)] - [val-cv (channel-val-cv chan)] - ) - (if (unbox read-box) - (begin - (condition-wait val-cv read-mut) - (channel-get-while-helper chan) - ) - (void) - ))) - -(define (blodwen-channel-get ty chan) - (mutex-acquire (channel-read-mut chan)) - (channel-get-while-helper chan) - (let* ([val-box (channel-val-box chan)] - [read-box (channel-read-box chan)] - [read-cv (channel-read-cv chan)] - [the-val (unbox val-box)] - ) - (set-box! val-box '()) - (set-box! read-box #t) - (mutex-release (channel-read-mut chan)) - (condition-signal read-cv) - the-val)) - -;; Mutex - -(define (blodwen-make-mutex) - (make-mutex)) -(define (blodwen-mutex-acquire mutex) - (mutex-acquire mutex)) -(define (blodwen-mutex-release mutex) - (mutex-release mutex)) - -;; Condition variable - -(define (blodwen-make-condition) - (make-condition)) -(define (blodwen-condition-wait condition mutex) - (condition-wait condition mutex)) -(define (blodwen-condition-wait-timeout condition mutex timeout) - (let* [(sec (div timeout 1000000)) - (micro (mod timeout 1000000))] - (condition-wait condition mutex (make-time 'time-duration (* 1000 micro) sec)))) -(define (blodwen-condition-signal condition) - (condition-signal condition)) -(define (blodwen-condition-broadcast condition) - (condition-broadcast condition)) - -;; Future - -(define-record future-internal (result ready mutex signal)) -(define (blodwen-make-future work) - (let ([future (make-future-internal #f #f (make-mutex) (make-condition))]) - (fork-thread (lambda () - (let ([result (work)]) - (with-mutex (future-internal-mutex future) - (set-future-internal-result! future result) - (set-future-internal-ready! future #t) - (condition-broadcast (future-internal-signal future)))))) - future)) -(define (blodwen-await-future ty future) - (let ([mutex (future-internal-mutex future)]) - (with-mutex mutex - (if (not (future-internal-ready future)) - (condition-wait (future-internal-signal future) mutex)) - (future-internal-result future)))) - -(define (blodwen-sleep s) (sleep (make-time 'time-duration 0 s))) -(define (blodwen-usleep s) - (let ((sec (div s 1000000)) - (micro (mod s 1000000))) - (sleep (make-time 'time-duration (* 1000 micro) sec)))) - -(define (blodwen-clock-time-utc) (current-time 'time-utc)) -(define (blodwen-clock-time-monotonic) (current-time 'time-monotonic)) -(define (blodwen-clock-time-duration) (current-time 'time-duration)) -(define (blodwen-clock-time-process) (current-time 'time-process)) -(define (blodwen-clock-time-thread) (current-time 'time-thread)) -(define (blodwen-clock-time-gccpu) (current-time 'time-collector-cpu)) -(define (blodwen-clock-time-gcreal) (current-time 'time-collector-real)) -(define (blodwen-is-time? clk) (if (time? clk) 1 0)) -(define (blodwen-clock-second time) (time-second time)) -(define (blodwen-clock-nanosecond time) (time-nanosecond time)) - - -(define (blodwen-arg-count) - (length (command-line))) - -(define (blodwen-arg n) - (if (< n (length (command-line))) (list-ref (command-line) n) "")) - -(define (blodwen-hasenv var) - (if (eq? (getenv var) #f) 0 1)) - -;; Randoms -(define random-seed-register 0) -(define (initialize-random-seed-once) - (if (= (virtual-register random-seed-register) 0) - (let ([seed (time-nanosecond (current-time))]) - (set-virtual-register! random-seed-register seed) - (random-seed seed)))) - -(define (blodwen-random-seed seed) - (set-virtual-register! random-seed-register seed) - (random-seed seed)) -(define blodwen-random - (case-lambda - ;; no argument, pick a real value from [0, 1.0) - [() (begin - (initialize-random-seed-once) - (random 1.0))] - ;; single argument k, pick an integral value from [0, k) - [(k) - (begin - (initialize-random-seed-once) - (if (> k 0) - (random k) - (assertion-violationf 'blodwen-random "invalid range argument ~a" k)))])) - -;; For finalisers - -(define blodwen-finaliser (make-guardian)) -(define (blodwen-register-object obj proc) - (let [(x (cons obj proc))] - (blodwen-finaliser x) - x)) -(define blodwen-run-finalisers - (lambda () - (let run () - (let ([x (blodwen-finaliser)]) - (when x - (((cdr x) (car x)) 'erased) - (run)))))) - -;; For creating and reading back scheme objects - -; read a scheme string and evaluate it, returning 'Just result' on success -; TODO: catch exception! -(define (blodwen-eval-scheme str) - (guard - (x [#t '()]) ; Nothing on failure - (box (eval (read (open-input-string str))))) - ); box == Just - -(define (blodwen-eval-okay obj) - (if (null? obj) - 0 - 1)) - -(define (blodwen-get-eval-result obj) - (unbox obj)) - -(define (blodwen-debug-scheme obj) - (display obj) (newline)) - -(define (blodwen-is-number obj) - (if (number? obj) 1 0)) - -(define (blodwen-is-integer obj) - (if (and (number? obj) (exact? obj)) 1 0)) - -(define (blodwen-is-float obj) - (if (flonum? obj) 1 0)) - -(define (blodwen-is-char obj) - (if (char? obj) 1 0)) - -(define (blodwen-is-string obj) - (if (string? obj) 1 0)) - -(define (blodwen-is-procedure obj) - (if (procedure? obj) 1 0)) - -(define (blodwen-is-symbol obj) - (if (symbol? obj) 1 0)) - -(define (blodwen-is-vector obj) - (if (vector? obj) 1 0)) - -(define (blodwen-is-nil obj) - (if (null? obj) 1 0)) - -(define (blodwen-is-pair obj) - (if (pair? obj) 1 0)) - -(define (blodwen-is-box obj) - (if (box? obj) 1 0)) - -(define (blodwen-make-symbol str) - (string->symbol str)) - -; The below rely on checking that the objects are the right type first. - -(define (blodwen-vector-ref obj i) - (vector-ref obj i)) - -(define (blodwen-vector-length obj) - (vector-length obj)) - -(define (blodwen-vector-list obj) - (vector->list obj)) - -(define (blodwen-unbox obj) - (unbox obj)) - -(define (blodwen-apply obj arg) - (obj arg)) - -(define (blodwen-force obj) - (obj)) - -(define (blodwen-read-symbol sym) - (symbol->string sym)) - -(define (blodwen-id x) x) -(define PreludeC-45Types-fastUnpack (lambda (farg-0) (string-unpack farg-0))) -(define PreludeC-45Types-fastPack (lambda (farg-0) (string-pack farg-0))) -(define PreludeC-45IO-prim__putStr (lambda (farg-0 farg-1) ((foreign-procedure "idris2_putStr" (string) void) farg-0))) -(define PreludeC-45IO-prim__getStr (lambda (farg-0) ((foreign-procedure "idris2_getStr" () string) ))) -(define System-prim__getArgCount (lambda (farg-0) (blodwen-arg-count ))) -(define System-prim__getArg (lambda (farg-0 farg-1) (blodwen-arg farg-0))) -(define System-prim__exit (lambda (farg-0 farg-1) ((foreign-procedure "exit" (int) void) farg-0))) -(define PreludeC-45IO-u--map_Functor_IO (lambda (arg-2 arg-3 ext-0) (let ((act-2 (arg-3 ext-0))) (arg-2 act-2)))) -(define csegen-13 (cons (vector (vector (lambda (u--b) (lambda (u--a) (lambda (u--func) (lambda (arg-8885) (lambda (eta-0) (PreludeC-45IO-u--map_Functor_IO u--func arg-8885 eta-0)))))) (lambda (u--a) (lambda (arg-9931) (lambda (eta-0) arg-9931))) (lambda (u--b) (lambda (u--a) (lambda (arg-9937) (lambda (arg-9944) (lambda (world-4) (let ((act-5 (arg-9937 world-4))) (let ((act-3 (arg-9944 world-4))) (act-5 act-3))))))))) (lambda (u--b) (lambda (u--a) (lambda (arg-10411) (lambda (arg-10414) (lambda (world-0) (let ((act-1 (arg-10411 world-0))) ((arg-10414 act-1) world-0))))))) (lambda (u--a) (lambda (arg-10425) (lambda (world-0) (let ((act-1 (arg-10425 world-0))) (act-1 world-0)))))) (lambda (u--a) (lambda (arg-13095) arg-13095)))) -(define PreludeC-45Types-prim__integerToNat (lambda (arg-0) (let ((sc0 (or (and (<= 0 arg-0) 1) 0))) (cond ((equal? sc0 0) 0)(else arg-0))))) -(define csegen-25 (vector (lambda (arg-5904) (lambda (arg-5907) (+ arg-5904 arg-5907))) (lambda (arg-5914) (lambda (arg-5917) (* arg-5914 arg-5917))) (lambda (arg-5924) (PreludeC-45Types-prim__integerToNat arg-5924)))) -(define csegen-81 (vector (lambda (arg-5904) (lambda (arg-5907) (bs+ arg-5904 arg-5907 63))) (lambda (arg-5914) (lambda (arg-5917) (bs* arg-5914 arg-5917 63))) (lambda (arg-5924) (blodwen-toSignedInt arg-5924 63)))) -(define u--prim__sub_Integer (lambda (arg-0 arg-1) (- arg-0 arg-1))) -(define Builtin-fst (lambda (arg-2) (let ((e-2 (car arg-2))) e-2))) -(define DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 (lambda (arg-4 arg-5 arg-6) (if (null? arg-5) '() (let ((e-3 (car arg-5))) (let ((e-4 (cdr arg-5))) (let ((e-8 (car arg-6))) (let ((e-9 (cdr arg-6))) (cons ((arg-4 e-3) e-8) (DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 arg-4 e-4 e-9))))))))) -(define AnytypeC-45CoreC-45Check-addU (lambda (arg-2 ext-0 ext-1) (DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 (let ((e-3 (vector-ref arg-2 2))) e-3) ext-0 ext-1))) -(define AnytypeC-45CoreC-45Normalise-nval (lambda (arg-0) (case (vector-ref arg-0 0) ((0) 0) ((1) (let ((e-0 (vector-ref arg-0 1))) (+ (AnytypeC-45CoreC-45Normalise-nval e-0) 1))) ((2) (let ((e-1 (vector-ref arg-0 1))) (let ((e-2 (vector-ref arg-0 2))) (+ (AnytypeC-45CoreC-45Normalise-nval e-1) (AnytypeC-45CoreC-45Normalise-nval e-2))))) (else (let ((e-3 (vector-ref arg-0 1))) (let ((e-4 (vector-ref arg-0 2))) (* (AnytypeC-45CoreC-45Normalise-nval e-3) (AnytypeC-45CoreC-45Normalise-nval e-4)))))))) -(define AnytypeC-45CoreC-45Normalise-tnatOfNat (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else (let ((e-0 (- arg-0 1))) (vector 1 (AnytypeC-45CoreC-45Normalise-tnatOfNat e-0))))))) -(define AnytypeC-45CoreC-45Normalise-nnorm (lambda (ext-0) (AnytypeC-45CoreC-45Normalise-tnatOfNat (AnytypeC-45CoreC-45Normalise-nval ext-0)))) -(define AnytypeC-45CoreC-45Normalise-normalise (lambda (arg-1) (case (vector-ref arg-1 0) ((0) (vector 0 )) ((1) (vector 1 )) ((2) (let ((e-3 (vector-ref arg-1 1))) (vector 2 (AnytypeC-45CoreC-45Normalise-nnorm e-3)))) ((3) (let ((e-5 (vector-ref arg-1 1))) (let ((e-6 (vector-ref arg-1 2))) (let ((e-7 (vector-ref arg-1 3))) (vector 3 e-5 (AnytypeC-45CoreC-45Normalise-normalise e-6) (AnytypeC-45CoreC-45Normalise-normalise e-7)))))) (else (let ((e-9 (vector-ref arg-1 1))) (let ((e-10 (vector-ref arg-1 2))) (vector 4 (AnytypeC-45CoreC-45Normalise-normalise e-9) (AnytypeC-45CoreC-45Normalise-normalise e-10)))))))) -(define AnytypeC-45CoreC-45Conversion-tnatEq (lambda (arg-0 arg-1) (case (vector-ref arg-0 0) ((0) (case (vector-ref arg-1 0) ((0) 1)(else 0))) ((1) (let ((e-0 (vector-ref arg-0 1))) (case (vector-ref arg-1 0) ((1) (let ((e-1 (vector-ref arg-1 1))) (AnytypeC-45CoreC-45Conversion-tnatEq e-0 e-1)))(else 0))))(else 0)))) -(define AnytypeC-45CoreC-45Conversion-structEq (lambda (arg-1 arg-2 arg-3) (case (vector-ref arg-2 0) ((0) (case (vector-ref arg-3 0) ((0) 1)(else 0))) ((1) (case (vector-ref arg-3 0) ((1) 1)(else 0))) ((2) (let ((e-3 (vector-ref arg-2 1))) (case (vector-ref arg-3 0) ((2) (let ((e-14 (vector-ref arg-3 1))) (AnytypeC-45CoreC-45Conversion-tnatEq e-3 e-14)))(else 0)))) ((3) (let ((e-5 (vector-ref arg-2 1))) (let ((e-6 (vector-ref arg-2 2))) (let ((e-7 (vector-ref arg-2 3))) (case (vector-ref arg-3 0) ((3) (let ((e-16 (vector-ref arg-3 1))) (let ((e-17 (vector-ref arg-3 2))) (let ((e-18 (vector-ref arg-3 3))) (let ((e-26 (vector-ref arg-1 5))) (let ((sc2 ((e-26 e-5) e-16))) (case (vector-ref sc2 0) ((0) (let ((sc3 (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-6 e-17))) (cond ((equal? sc3 1) (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-7 e-18)) (else 0)))) (else 0))))))))(else 0)))))) ((4) (let ((e-9 (vector-ref arg-2 1))) (let ((e-10 (vector-ref arg-2 2))) (case (vector-ref arg-3 0) ((4) (let ((e-20 (vector-ref arg-3 1))) (let ((e-21 (vector-ref arg-3 2))) (let ((sc2 (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-9 e-20))) (cond ((equal? sc2 1) (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-10 e-21)) (else 0))))))(else 0)))))(else 0)))) -(define AnytypeC-45CoreC-45Conversion-convertible (lambda (arg-1 arg-2 arg-3) (AnytypeC-45CoreC-45Conversion-structEq arg-1 (AnytypeC-45CoreC-45Normalise-normalise arg-2) (AnytypeC-45CoreC-45Normalise-normalise arg-3)))) -(define PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (lambda (arg-3 arg-4) (case (vector-ref arg-3 0) ((0) (let ((e-2 (vector-ref arg-3 1))) (vector 0 e-2))) (else (let ((e-5 (vector-ref arg-3 1))) (arg-4 e-5)))))) -(define AnytypeC-45CoreC-45Check-check (lambda (arg-1 arg-2 arg-3 arg-4 arg-5) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 arg-4) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (let ((sc1 (AnytypeC-45CoreC-45Conversion-convertible arg-1 e-2 arg-5))) (cond ((equal? sc1 1) (vector 1 e-3)) (else (vector 0 2)))))))))) -(define DataC-45Vect-index (lambda (arg-2 arg-3) (cond ((equal? arg-2 0) (let ((e-5 (car arg-3))) e-5))(else (let ((e-2 (- arg-2 1))) (let ((e-10 (cdr arg-3))) (DataC-45Vect-index e-2 e-10))))))) -(define DataC-45Vect-replicate (lambda (arg-1 arg-2) (cond ((equal? arg-1 0) '())(else (let ((e-0 (- arg-1 1))) (cons arg-2 (DataC-45Vect-replicate e-0 arg-2))))))) -(define AnytypeC-45CoreC-45Check-zeroU (lambda (arg-1 arg-2) (DataC-45Vect-replicate arg-2 (let ((e-1 (vector-ref arg-1 0))) e-1)))) -(define AnytypeC-45CoreC-45Check-oneAt (lambda (arg-1 arg-2 arg-3) (cond ((equal? arg-2 0) (blodwen-error-quit "Nat case not covered"))(else (let ((e-0 (- arg-2 1))) (cond ((equal? arg-3 0) (cons (let ((e-2 (vector-ref arg-1 1))) e-2) (AnytypeC-45CoreC-45Check-zeroU arg-1 e-0)))(else (let ((e-3 (- arg-3 1))) (cons (let ((e-1 (vector-ref arg-1 0))) e-1) (AnytypeC-45CoreC-45Check-oneAt arg-1 e-0 e-3)))))))))) -(define DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 (lambda (arg-3 arg-4) (if (null? arg-4) '() (let ((e-3 (car arg-4))) (let ((e-4 (cdr arg-4))) (cons (arg-3 e-3) (DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 arg-3 e-4))))))) -(define AnytypeC-45CoreC-45Check-scaleU (lambda (arg-2 arg-3 ext-0) (DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 (let ((e-4 (vector-ref arg-2 3))) (e-4 arg-3)) ext-0))) -(define AnytypeC-45CoreC-45Check-infer (lambda (arg-1 arg-2 arg-3 arg-4) (case (vector-ref arg-4 0) ((0) (let ((e-2 (vector-ref arg-4 1))) (vector 1 (cons (DataC-45Vect-index e-2 arg-3) (AnytypeC-45CoreC-45Check-oneAt arg-1 arg-2 e-2))))) ((1) (let ((e-5 (vector-ref arg-4 1))) (let ((e-6 (vector-ref arg-4 2))) (let ((e-7 (vector-ref arg-4 3))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 (+ arg-2 1) (cons e-6 arg-3) e-7) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (let ((e-8 (car e-3))) (let ((e-4 (cdr e-3))) (let ((sc3 (let ((e-25 (vector-ref arg-1 4))) ((e-25 e-8) e-5)))) (cond ((equal? sc3 1) (vector 1 (cons (vector 3 e-5 e-6 e-2) e-4))) (else (vector 0 3)))))))))))))) ((2) (let ((e-10 (vector-ref arg-4 1))) (let ((e-11 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-10) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (case (vector-ref e-2 0) ((3) (let ((e-1 (vector-ref e-2 1))) (let ((e-5 (vector-ref e-2 2))) (let ((e-4 (vector-ref e-2 3))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-check arg-1 arg-2 arg-3 e-11 e-5) (lambda (u--ux) (vector 1 (cons e-4 (AnytypeC-45CoreC-45Check-addU arg-1 e-3 (AnytypeC-45CoreC-45Check-scaleU arg-1 e-1 u--ux))))))))))(else (vector 0 0)))))))))) ((3) (let ((e-14 (vector-ref arg-4 1))) (let ((e-15 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-14) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-15) (lambda (_-1) (let ((e-5 (car _-1))) (let ((e-4 (cdr _-1))) (vector 1 (cons (vector 4 e-2 e-5) (AnytypeC-45CoreC-45Check-addU arg-1 e-3 e-4)))))))))))))) ((4) (let ((e-18 (vector-ref arg-4 1))) (let ((e-19 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-18) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (case (vector-ref e-2 0) ((4) (let ((e-1 (vector-ref e-2 1))) (let ((e-4 (vector-ref e-2 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 (+ (+ arg-2 1) 1) (cons e-4 (cons e-1 arg-3)) e-19) (lambda (_-1) (let ((e-6 (car _-1))) (let ((e-5 (cdr _-1))) (let ((e-8 (car e-5))) (let ((e-7 (cdr e-5))) (let ((e-10 (car e-7))) (let ((e-9 (cdr e-7))) (let ((sc6 (let ((sc7 (let ((e-29 (vector-ref arg-1 4))) ((e-29 e-10) (let ((e-53 (vector-ref arg-1 1))) e-53))))) (cond ((equal? sc7 1) (let ((e-29 (vector-ref arg-1 4))) ((e-29 e-8) (let ((e-53 (vector-ref arg-1 1))) e-53)))) (else 0))))) (cond ((equal? sc6 1) (vector 1 (cons e-6 (AnytypeC-45CoreC-45Check-addU arg-1 e-3 e-9)))) (else (vector 0 3)))))))))))))))(else (vector 0 1)))))))))) ((5) (vector 1 (cons (vector 0 ) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))) ((6) (vector 1 (cons (vector 1 ) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))) (else (let ((e-27 (vector-ref arg-4 1))) (vector 1 (cons (vector 2 e-27) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))))))) -(define AnytypeC-45Kernel-checkClosed (lambda (arg-1 arg-2) (let ((sc0 (AnytypeC-45CoreC-45Check-infer arg-1 0 '() arg-2))) (case (vector-ref sc0 0) ((0) (let ((e-2 (vector-ref sc0 1))) (vector 0 e-2))) (else (let ((e-5 (vector-ref sc0 1))) (vector 1 (AnytypeC-45CoreC-45Normalise-normalise (Builtin-fst e-5))))))))) -(define System-exitWith (lambda (arg-2 arg-3) (if (null? arg-3) (let ((e-2 (cdr arg-2))) ((e-2 'erased) (lambda (eta-0) (System-prim__exit 0 eta-0)))) (let ((e-0 (car arg-3))) (let ((e-2 (cdr arg-2))) ((e-2 'erased) (lambda (eta-0) (System-prim__exit e-0 eta-0)))))))) -(define AnytypeC-45Main-exitVerdict (lambda (arg-0) (cond ((equal? arg-0 0) (System-exitWith csegen-13 '())) ((equal? arg-0 1) (System-exitWith csegen-13 (cons 1 (vector 0 )))) (else (System-exitWith csegen-13 (cons 2 (vector 0 ))))))) -(define PreludeC-45Show-firstCharIs (lambda (arg-0 arg-1) (cond ((equal? arg-1 "") 0)(else (arg-0 (string-ref arg-1 0)))))) -(define PreludeC-45Show-showParens (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) arg-1) (else (string-append "(" (string-append arg-1 ")")))))) -(define PreludeC-45EqOrd-u--C-61C-61_Eq_Char (lambda (arg-0 arg-1) (let ((sc0 (or (and (char=? arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 1)(else 0))) ((equal? arg-0 1) (cond ((equal? arg-1 1) 1)(else 0))) ((equal? arg-0 2) (cond ((equal? arg-1 2) 1)(else 0)))(else 0)))) -(define PreludeC-45EqOrd-u--C-47C-61_Eq_Ordering (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else 1))))) -(define PreludeC-45Show-precCon (lambda (arg-0) (case (vector-ref arg-0 0) ((0) 0) ((1) 1) ((2) 2) ((3) 3) ((4) 4) ((5) 5) (else 6)))) -(define PreludeC-45EqOrd-u--C-60_Ord_Integer (lambda (arg-0 arg-1) (let ((sc0 (or (and (< arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-61C-61_Eq_Integer (lambda (arg-0 arg-1) (let ((sc0 (or (and (= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--compare_Ord_Integer (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-60_Ord_Integer arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else (let ((sc1 (PreludeC-45EqOrd-u--C-61C-61_Eq_Integer arg-0 arg-1))) (cond ((equal? sc1 1) 1) (else 2)))))))) -(define PreludeC-45Show-u--compare_Ord_Prec (lambda (arg-0 arg-1) (case (vector-ref arg-0 0) ((4) (let ((e-0 (vector-ref arg-0 1))) (case (vector-ref arg-1 0) ((4) (let ((e-1 (vector-ref arg-1 1))) (PreludeC-45EqOrd-u--compare_Ord_Integer e-0 e-1)))(else (PreludeC-45EqOrd-u--compare_Ord_Integer (PreludeC-45Show-precCon arg-0) (PreludeC-45Show-precCon arg-1))))))(else (PreludeC-45EqOrd-u--compare_Ord_Integer (PreludeC-45Show-precCon arg-0) (PreludeC-45Show-precCon arg-1)))))) -(define PreludeC-45Show-u--C-62C-61_Ord_Prec (lambda (arg-0 arg-1) (PreludeC-45EqOrd-u--C-47C-61_Eq_Ordering (PreludeC-45Show-u--compare_Ord_Prec arg-0 arg-1) 0))) -(define PreludeC-45Show-primNumShow (lambda (arg-1 arg-2 arg-3) (let ((u--str (arg-1 arg-3))) (PreludeC-45Show-showParens (let ((sc0 (PreludeC-45Show-u--C-62C-61_Ord_Prec arg-2 (vector 5 )))) (cond ((equal? sc0 1) (PreludeC-45Show-firstCharIs (lambda (arg-0) (PreludeC-45EqOrd-u--C-61C-61_Eq_Char arg-0 #\-)) u--str)) (else 0))) u--str)))) -(define PreludeC-45Show-u--showPrec_Show_Integer (lambda (ext-0 ext-1) (PreludeC-45Show-primNumShow (lambda (eta-0) (number->string eta-0)) ext-0 ext-1))) -(define PreludeC-45Show-u--show_Show_Integer (lambda (arg-0) (PreludeC-45Show-u--showPrec_Show_Integer (vector 0 ) arg-0))) -(define PreludeC-45Show-u--show_Show_Nat (lambda (arg-0) (PreludeC-45Show-u--show_Show_Integer arg-0))) -(define AnytypeC-45Kernel-showTy (lambda (arg-1 arg-2) (case (vector-ref arg-2 0) ((0) "Unit") ((1) "Bool") ((2) (let ((e-3 (vector-ref arg-2 1))) (string-append "Bits " (PreludeC-45Show-u--show_Show_Nat (AnytypeC-45CoreC-45Normalise-nval e-3))))) ((3) (let ((e-5 (vector-ref arg-2 1))) (let ((e-6 (vector-ref arg-2 2))) (let ((e-7 (vector-ref arg-2 3))) (string-append "(" (string-append (AnytypeC-45Kernel-showTy arg-1 e-6) (string-append " " (string-append (arg-1 e-5) (string-append "-> " (string-append (AnytypeC-45Kernel-showTy arg-1 e-7) ")")))))))))) (else (let ((e-9 (vector-ref arg-2 1))) (let ((e-10 (vector-ref arg-2 2))) (string-append "(" (string-append (AnytypeC-45Kernel-showTy arg-1 e-9) (string-append " * " (string-append (AnytypeC-45Kernel-showTy arg-1 e-10) ")")))))))))) -(define AnytypeC-45CoreC-45Syntax-u--show_Show_CheckError (lambda (arg-0) (cond ((equal? arg-0 0) "not a function") ((equal? arg-0 1) "not a pair") ((equal? arg-0 2) "type mismatch") (else "usage violation")))) -(define AnytypeC-45Main-case--run-4631 (lambda (arg-1 arg-2 arg-3 arg-4 arg-5 ext-0) (if (null? arg-5) (let ((act-1 (PreludeC-45IO-prim__putStr "ILLFORMED unreadable or ill-scoped term\xa;" ext-0))) ((AnytypeC-45Main-exitVerdict 2) ext-0)) (let ((e-2 (unbox arg-5))) (let ((sc1 (AnytypeC-45Kernel-checkClosed arg-3 e-2))) (case (vector-ref sc1 0) ((1) (let ((e-3 (vector-ref sc1 1))) (let ((act-1 (PreludeC-45IO-prim__putStr (string-append (string-append "ACCEPT " (AnytypeC-45Kernel-showTy arg-2 e-3)) "\xa;") ext-0))) ((AnytypeC-45Main-exitVerdict 0) ext-0)))) (else (let ((e-5 (vector-ref sc1 1))) (let ((act-1 (PreludeC-45IO-prim__putStr (string-append (string-append "REJECT " (AnytypeC-45CoreC-45Syntax-u--show_Show_CheckError e-5)) "\xa;") ext-0))) ((AnytypeC-45Main-exitVerdict 1) ext-0)))))))))) -(define AnytypeC-45Main-usage (lambda (ext-0) (let ((act-1 (PreludeC-45IO-prim__putStr "ILLFORMED usage: anytype-check --discipline affine|exact\xa;" ext-0))) ((AnytypeC-45Main-exitVerdict 2) ext-0)))) -(define DataC-45Nat-fromLteSucc (lambda (arg-2) (cond ((equal? arg-2 0) (blodwen-error-quit "Nat case not covered"))(else (let ((e-2 (- arg-2 1))) e-2))))) -(define DataC-45Nat-succNotLTEzero (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define DataC-45Nat-isLTE (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (vector 0 0))(else (let ((e-0 (- arg-0 1))) (cond ((equal? arg-1 0) (vector 1 (lambda (eta-0) (DataC-45Nat-succNotLTEzero eta-0))))(else (let ((e-1 (- arg-1 1))) (let ((sc0 (DataC-45Nat-isLTE e-0 e-1))) (case (vector-ref sc0 0) ((1) (let ((e-2 (vector-ref sc0 1))) (vector 1 (lambda (eta-0) (e-2 (DataC-45Nat-fromLteSucc eta-0)))))) (else (let ((e-3 (vector-ref sc0 1))) (vector 0 (+ e-3 1)))))))))))))) -(define DataC-45Nat-isLT (lambda (arg-0 arg-1) (DataC-45Nat-isLTE (+ arg-0 1) arg-1))) -(define DataC-45Fin-natToFin (lambda (arg-0 arg-1) (let ((sc0 (DataC-45Nat-isLT arg-0 arg-1))) (case (vector-ref sc0 0) ((0) (box arg-0)) (else '()))))) -(define DataC-45String-strM (lambda (arg-0) (cond ((equal? arg-0 "") '())(else (cons (string-ref arg-0 0) (substring arg-0 1 (string-length arg-0))))))) -(define DataC-45String-with--asList-9518 (lambda (arg-0 arg-1) (cond ((equal? arg-0 "") (if (null? arg-1) (vector 0 ) (let ((e-0 (car arg-1))) (let ((e-1 (cdr arg-1))) (vector 1 e-0 e-1 (lambda () (DataC-45String-asList e-1)))))))(else (let ((e-0 (car arg-1))) (let ((e-1 (cdr arg-1))) (vector 1 e-0 e-1 (lambda () (DataC-45String-asList e-1))))))))) -(define DataC-45String-asList (lambda (arg-0) (DataC-45String-with--asList-9518 arg-0 (DataC-45String-strM arg-0)))) -(define PreludeC-45Types-isSpace (lambda (arg-0) (cond ((equal? arg-0 #\ ) 1) ((equal? arg-0 (integer->char 9)) 1) ((equal? arg-0 (integer->char 13)) 1) ((equal? arg-0 (integer->char 10)) 1) ((equal? arg-0 (integer->char 12)) 1) ((equal? arg-0 (integer->char 11)) 1) ((equal? arg-0 (integer->char 160)) 1)(else 0)))) -(define DataC-45String-with--ltrim-9542 (lambda (arg-0 arg-1) (cond ((equal? arg-0 "") (case (vector-ref arg-1 0) ((0) "")(else (let ((e-0 (vector-ref arg-1 1))) (let ((e-1 (vector-ref arg-1 2))) (let ((e-2 (vector-ref arg-1 3))) (let ((u--str (string-cons e-0 e-1))) (let ((sc2 (PreludeC-45Types-isSpace e-0))) (cond ((equal? sc2 1) (DataC-45String-with--ltrim-9542 e-1 (e-2))) (else u--str))))))))))(else (let ((e-0 (vector-ref arg-1 1))) (let ((e-1 (vector-ref arg-1 2))) (let ((e-2 (vector-ref arg-1 3))) (let ((u--str (string-cons e-0 e-1))) (let ((sc1 (PreludeC-45Types-isSpace e-0))) (cond ((equal? sc1 1) (DataC-45String-with--ltrim-9542 e-1 (e-2))) (else u--str))))))))))) -(define DataC-45String-ltrim (lambda (arg-0) (DataC-45String-with--ltrim-9542 arg-0 (DataC-45String-asList arg-0)))) -(define DataC-45String-trim (lambda (ext-0) (DataC-45String-ltrim (string-reverse (DataC-45String-ltrim (string-reverse ext-0)))))) -(define PreludeC-45EqOrd-u--C-60C-61_Ord_Char (lambda (arg-0 arg-1) (let ((sc0 (or (and (char<=? arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-62C-61_Ord_Char (lambda (arg-0 arg-1) (let ((sc0 (or (and (char>=? arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define DataC-45String-parseNumWithoutSign (lambda (arg-0 arg-1) (if (null? arg-0) (box arg-1) (let ((e-2 (car arg-0))) (let ((e-3 (cdr arg-0))) (let ((sc1 (let ((sc2 (PreludeC-45EqOrd-u--C-62C-61_Ord_Char e-2 #\0))) (cond ((equal? sc2 1) (PreludeC-45EqOrd-u--C-60C-61_Ord_Char e-2 #\9)) (else 0))))) (cond ((equal? sc1 1) (DataC-45String-parseNumWithoutSign e-3 (+ (* arg-1 10) (bs- (cast-char-boundedInt e-2 63) (cast-char-boundedInt #\0 63) 63)))) (else '())))))))) -(define PreludeC-45Types-u--map_Functor_Maybe (lambda (arg-2 arg-3) (if (null? arg-3) '() (let ((e-1 (unbox arg-3))) (box (arg-2 e-1)))))) -(define DataC-45String-with--parsePositiveC-44parsePosTrimmed-9869 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (cond ((equal? arg-3 "") (if (null? arg-4) '() (let ((e-0 (car arg-4))) (let ((e-1 (cdr arg-4))) (cond ((equal? e-0 #\+) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (let ((e-3 (vector-ref arg-1 2))) (e-3 eta-0))) (DataC-45String-parseNumWithoutSign (PreludeC-45Types-fastUnpack e-1) 0)))(else (let ((sc3 (let ((sc4 (PreludeC-45EqOrd-u--C-62C-61_Ord_Char e-0 #\0))) (cond ((equal? sc4 1) (PreludeC-45EqOrd-u--C-60C-61_Ord_Char e-0 #\9)) (else 0))))) (cond ((equal? sc3 1) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (let ((e-3 (vector-ref arg-1 2))) (e-3 eta-0))) (DataC-45String-parseNumWithoutSign (PreludeC-45Types-fastUnpack e-1) (bs- (cast-char-boundedInt e-0 63) (cast-char-boundedInt #\0 63) 63)))) (else '())))))))))(else (let ((e-0 (car arg-4))) (let ((e-1 (cdr arg-4))) (cond ((equal? e-0 #\+) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (let ((e-3 (vector-ref arg-1 2))) (e-3 eta-0))) (DataC-45String-parseNumWithoutSign (PreludeC-45Types-fastUnpack e-1) 0)))(else (let ((sc1 (let ((sc2 (PreludeC-45EqOrd-u--C-62C-61_Ord_Char e-0 #\0))) (cond ((equal? sc2 1) (PreludeC-45EqOrd-u--C-60C-61_Ord_Char e-0 #\9)) (else 0))))) (cond ((equal? sc1 1) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (let ((e-3 (vector-ref arg-1 2))) (e-3 eta-0))) (DataC-45String-parseNumWithoutSign (PreludeC-45Types-fastUnpack e-1) (bs- (cast-char-boundedInt e-0 63) (cast-char-boundedInt #\0 63) 63)))) (else '()))))))))))) -(define DataC-45String-n--4450-9863-u--parsePosTrimmed (lambda (arg-1 arg-2 arg-3) (DataC-45String-with--parsePositiveC-44parsePosTrimmed-9869 'erased arg-1 arg-3 arg-3 (DataC-45String-strM arg-3)))) -(define DataC-45String-parsePositive (lambda (arg-1 arg-2) (DataC-45String-n--4450-9863-u--parsePosTrimmed arg-1 arg-2 (DataC-45String-trim arg-2)))) -(define PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (lambda (arg-2 arg-3) (if (null? arg-2) '() (let ((e-1 (unbox arg-2))) (if (null? arg-3) '() (let ((e-3 (unbox arg-3))) (box (e-1 e-3)))))))) -(define AnytypeC-45Sexp-parseTNat (lambda (arg-0) (case (vector-ref arg-0 0) ((0) (let ((e-0 (vector-ref arg-0 1))) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (AnytypeC-45CoreC-45Normalise-tnatOfNat eta-0)) (DataC-45String-parsePositive csegen-25 e-0)))) ((1) (let ((e-1 (vector-ref arg-0 1))) (if (null? e-1) '() (let ((e-3 (car e-1))) (let ((e-4 (cdr e-1))) (case (vector-ref e-3 0) ((0) (let ((e-5 (vector-ref e-3 1))) (cond ((equal? e-5 "+") (if (null? e-4) '() (let ((e-7 (car e-4))) (let ((e-8 (cdr e-4))) (if (null? e-8) '() (let ((e-10 (car e-8))) (let ((e-11 (cdr e-8))) (if (null? e-11) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 2 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTNat e-7)) (AnytypeC-45Sexp-parseTNat e-10)) '())))))))) ((equal? e-5 "*") (if (null? e-4) '() (let ((e-14 (car e-4))) (let ((e-15 (cdr e-4))) (if (null? e-15) '() (let ((e-17 (car e-15))) (let ((e-18 (cdr e-15))) (if (null? e-18) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 3 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTNat e-14)) (AnytypeC-45Sexp-parseTNat e-17)) '()))))))))(else '()))))(else '())))))))(else '())))) -(define AnytypeC-45Sexp-parseTy (lambda (arg-1 arg-2) (case (vector-ref arg-2 0) ((0) (let ((e-0 (vector-ref arg-2 1))) (cond ((equal? e-0 "unit") (box (vector 0 ))) ((equal? e-0 "bool") (box (vector 1 )))(else '())))) ((1) (let ((e-1 (vector-ref arg-2 1))) (if (null? e-1) '() (let ((e-3 (car e-1))) (let ((e-4 (cdr e-1))) (case (vector-ref e-3 0) ((0) (let ((e-5 (vector-ref e-3 1))) (cond ((equal? e-5 "bits") (if (null? e-4) '() (let ((e-7 (car e-4))) (let ((e-8 (cdr e-4))) (if (null? e-8) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (vector 2 eta-0)) (AnytypeC-45Sexp-parseTNat e-7)) '()))))) ((equal? e-5 "arr") (if (null? e-4) '() (let ((e-11 (car e-4))) (let ((e-12 (cdr e-4))) (case (vector-ref e-11 0) ((0) (let ((e-13 (vector-ref e-11 1))) (if (null? e-12) '() (let ((e-15 (car e-12))) (let ((e-16 (cdr e-12))) (if (null? e-16) '() (let ((e-18 (car e-16))) (let ((e-19 (cdr e-16))) (if (null? e-19) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (vector 3 eta-0 eta-1 eta-2))))) (arg-1 e-13)) (AnytypeC-45Sexp-parseTy arg-1 e-15)) (AnytypeC-45Sexp-parseTy arg-1 e-18)) '())))))))))(else '())))))) ((equal? e-5 "prod") (if (null? e-4) '() (let ((e-22 (car e-4))) (let ((e-23 (cdr e-4))) (if (null? e-23) '() (let ((e-25 (car e-23))) (let ((e-26 (cdr e-23))) (if (null? e-26) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 4 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTy arg-1 e-22)) (AnytypeC-45Sexp-parseTy arg-1 e-25)) '()))))))))(else '()))))(else '())))))))(else '())))) -(define PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (lambda (arg-2 arg-3) (if (null? arg-2) '() (let ((e-2 (unbox arg-2))) (arg-3 e-2))))) -(define AnytypeC-45Sexp-parseTerm (lambda (arg-1 arg-2 arg-3) (case (vector-ref arg-3 0) ((1) (let ((e-0 (vector-ref arg-3 1))) (if (null? e-0) '() (let ((e-3 (car e-0))) (let ((e-4 (cdr e-0))) (case (vector-ref e-3 0) ((0) (let ((e-5 (vector-ref e-3 1))) (cond ((equal? e-5 "var") (if (null? e-4) '() (let ((e-7 (car e-4))) (let ((e-8 (cdr e-4))) (case (vector-ref e-7 0) ((0) (let ((e-9 (vector-ref e-7 1))) (if (null? e-8) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (DataC-45String-parsePositive csegen-25 e-9) (lambda (u--kn) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (DataC-45Fin-natToFin u--kn arg-2) (lambda (u--i) (box (vector 0 u--i)))))) '())))(else '())))))) ((equal? e-5 "lam") (if (null? e-4) '() (let ((e-12 (car e-4))) (let ((e-13 (cdr e-4))) (case (vector-ref e-12 0) ((0) (let ((e-14 (vector-ref e-12 1))) (if (null? e-13) '() (let ((e-16 (car e-13))) (let ((e-17 (cdr e-13))) (if (null? e-17) '() (let ((e-19 (car e-17))) (let ((e-20 (cdr e-17))) (if (null? e-20) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (vector 1 eta-0 eta-1 eta-2))))) (arg-1 e-14)) (AnytypeC-45Sexp-parseTy arg-1 e-16)) (AnytypeC-45Sexp-parseTerm arg-1 (+ arg-2 1) e-19)) '())))))))))(else '())))))) ((equal? e-5 "app") (if (null? e-4) '() (let ((e-23 (car e-4))) (let ((e-24 (cdr e-4))) (if (null? e-24) '() (let ((e-26 (car e-24))) (let ((e-27 (cdr e-24))) (if (null? e-27) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 2 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-23)) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-26)) '())))))))) ((equal? e-5 "pair") (if (null? e-4) '() (let ((e-30 (car e-4))) (let ((e-31 (cdr e-4))) (if (null? e-31) '() (let ((e-33 (car e-31))) (let ((e-34 (cdr e-31))) (if (null? e-34) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 3 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-30)) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-33)) '())))))))) ((equal? e-5 "letpair") (if (null? e-4) '() (let ((e-37 (car e-4))) (let ((e-38 (cdr e-4))) (if (null? e-38) '() (let ((e-40 (car e-38))) (let ((e-41 (cdr e-38))) (if (null? e-41) (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (PreludeC-45Types-u--C-60C-42C-62_Applicative_Maybe (box (lambda (eta-0) (lambda (eta-1) (vector 4 eta-0 eta-1)))) (AnytypeC-45Sexp-parseTerm arg-1 arg-2 e-37)) (AnytypeC-45Sexp-parseTerm arg-1 (+ (+ arg-2 1) 1) e-40)) '())))))))) ((equal? e-5 "word") (if (null? e-4) '() (let ((e-44 (car e-4))) (let ((e-45 (cdr e-4))) (if (null? e-45) (PreludeC-45Types-u--map_Functor_Maybe (lambda (eta-0) (vector 7 eta-0)) (AnytypeC-45Sexp-parseTNat e-44)) '())))))(else '()))))(else '()))))))) ((0) (let ((e-1 (vector-ref arg-3 1))) (cond ((equal? e-1 "tt") (box (vector 5 ))) ((equal? e-1 "true") (box (vector 6 1))) ((equal? e-1 "false") (box (vector 6 0)))(else '()))))(else '())))) -(define PreludeC-45TypesC-45List-lengthPlus (lambda (arg-1 arg-2) (if (null? arg-2) arg-1 (let ((e-3 (cdr arg-2))) (PreludeC-45TypesC-45List-lengthPlus (+ arg-1 1) e-3))))) -(define PreludeC-45TypesC-45List-lengthTR (lambda (ext-0) (PreludeC-45TypesC-45List-lengthPlus 0 ext-0))) -(define AnytypeC-45Sexp-readMany (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) '())(else (let ((e-0 (- arg-0 1))) (if (null? arg-1) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readOne e-0 arg-1) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readMany e-0 e-3) (lambda (_-1) (let ((e-5 (car _-1))) (let ((e-4 (cdr _-1))) (box (cons (cons e-2 e-5) e-4)))))))))) (let ((e-2 (car arg-1))) (let ((e-3 (cdr arg-1))) (case (vector-ref e-2 0) ((1) (box (cons '() e-3)))(else (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readOne e-0 arg-1) (lambda (_-0) (let ((e-5 (car _-0))) (let ((e-4 (cdr _-0))) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readMany e-0 e-4) (lambda (_-1) (let ((e-7 (car _-1))) (let ((e-6 (cdr _-1))) (box (cons (cons e-5 e-7) e-6)))))))))))))))))))) -(define AnytypeC-45Sexp-readOne (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) '())(else (let ((e-0 (- arg-0 1))) (if (null? arg-1) '() (let ((e-2 (car arg-1))) (let ((e-3 (cdr arg-1))) (case (vector-ref e-2 0) ((2) (let ((e-4 (vector-ref e-2 1))) (box (cons (vector 0 e-4) e-3)))) ((0) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readMany e-0 e-3) (lambda (_-0) (let ((e-5 (car _-0))) (let ((e-4 (cdr _-0))) (box (cons (vector 1 e-5) e-4)))))))(else '())))))))))) -(define PreludeC-45TypesC-45List-reverseOnto (lambda (arg-1 arg-2) (if (null? arg-2) arg-1 (let ((e-2 (car arg-2))) (let ((e-3 (cdr arg-2))) (PreludeC-45TypesC-45List-reverseOnto (cons e-2 arg-1) e-3)))))) -(define PreludeC-45TypesC-45List-reverse (lambda (ext-0) (PreludeC-45TypesC-45List-reverseOnto '() ext-0))) -(define AnytypeC-45Sexp-flush (lambda (arg-0 arg-1) (if (null? arg-0) arg-1 (cons (vector 2 (PreludeC-45Types-fastPack (PreludeC-45TypesC-45List-reverse arg-0))) arg-1)))) -(define AnytypeC-45Sexp-tokGo (lambda (arg-0 arg-1) (if (null? arg-1) (AnytypeC-45Sexp-flush arg-0 '()) (let ((e-2 (car arg-1))) (let ((e-3 (cdr arg-1))) (let ((sc1 (PreludeC-45EqOrd-u--C-61C-61_Eq_Char e-2 #\())) (cond ((equal? sc1 1) (AnytypeC-45Sexp-flush arg-0 (cons (vector 0 ) (AnytypeC-45Sexp-tokGo '() e-3)))) (else (let ((sc2 (PreludeC-45EqOrd-u--C-61C-61_Eq_Char e-2 #\)))) (cond ((equal? sc2 1) (AnytypeC-45Sexp-flush arg-0 (cons (vector 1 ) (AnytypeC-45Sexp-tokGo '() e-3)))) (else (let ((sc3 (PreludeC-45Types-isSpace e-2))) (cond ((equal? sc3 1) (AnytypeC-45Sexp-flush arg-0 (AnytypeC-45Sexp-tokGo '() e-3))) (else (AnytypeC-45Sexp-tokGo (cons e-2 arg-0) e-3))))))))))))))) -(define AnytypeC-45Sexp-tokenise (lambda (arg-0) (AnytypeC-45Sexp-tokGo '() (PreludeC-45Types-fastUnpack arg-0)))) -(define AnytypeC-45Sexp-readSexp (lambda (arg-0) (let ((u--toks (AnytypeC-45Sexp-tokenise arg-0))) (let ((sc0 (AnytypeC-45Sexp-readOne (+ (PreludeC-45TypesC-45List-lengthTR u--toks) 1) u--toks))) (if (null? sc0) '() (let ((e-1 (unbox sc0))) (if (null? e-1) '() (let ((e-4 (car e-1))) (let ((e-5 (cdr e-1))) (if (null? e-5) (box e-4) '())))))))))) -(define AnytypeC-45Sexp-parseClosed (lambda (arg-1 arg-2) (PreludeC-45Types-u--C-62C-62C-61_Monad_Maybe (AnytypeC-45Sexp-readSexp arg-2) (lambda (eta-0) (AnytypeC-45Sexp-parseTerm arg-1 0 eta-0))))) -(define AnytypeC-45Main-run (lambda (arg-1 arg-2 arg-3 arg-4) (lambda (eta-0) (AnytypeC-45Main-case--run-4631 arg-4 arg-3 arg-2 arg-1 (AnytypeC-45Sexp-parseClosed arg-1 arg-4) eta-0)))) -(define AnytypeC-45GradeC-45Affine-qadd (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 2))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 1) ((equal? arg-1 1) 2) (else 2))) (else (cond ((equal? arg-1 0) 2) ((equal? arg-1 1) 2) (else 2)))))) -(define AnytypeC-45GradeC-45Affine-qaddAssoc (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qaddComm (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 ))))))) -(define PreludeC-45Uninhabited-void (lambda (ext-0) (display "Error: Executed 'void'"))) -(define PreludeC-45Uninhabited-absurd (lambda (arg-2 arg-3) (PreludeC-45Uninhabited-void 'erased))) -(define DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Affine-qaddMono (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 ))))))))))) -(define AnytypeC-45GradeC-45Affine-qaddZeroL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-q0NotQ1 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Affine-q0NotQW (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Affine-q1NotQW (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Affine-qdec (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 (vector 0 ))) ((equal? arg-1 1) (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q0NotQ1 eta-0)))) (else (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q0NotQW eta-0)))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q0NotQ1 (vector 0 ))))) ((equal? arg-1 1) (vector 0 (vector 0 ))) (else (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q1NotQW eta-0)))))) (else (cond ((equal? arg-1 0) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q0NotQW (vector 0 ))))) ((equal? arg-1 1) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q1NotQW (vector 0 ))))) (else (vector 0 (vector 0 )))))))) -(define AnytypeC-45GradeC-45Affine-qdistribL (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qdistribR (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qleq (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 1) ((equal? arg-1 1) 1) (else 1))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 1))) (else (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 0) (else 1)))))) -(define AnytypeC-45GradeC-45Affine-qleqAntisym (lambda (arg-0 arg-1 arg-2 arg-3) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) ((equal? arg-1 1) (vector 0 )) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) (else (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) ((equal? arg-1 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) (else (vector 0 ))))))) -(define AnytypeC-45GradeC-45Affine-qleqRefl (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-qleqTrans (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qmul (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 0) (else 0))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 2))) (else (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 2) (else 2)))))) -(define AnytypeC-45GradeC-45Affine-qmulAssoc (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qmulMono (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 ))))))))))) -(define AnytypeC-45GradeC-45Affine-qmulOneL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-qmulOneR (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-qmulZeroL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-qmulZeroR (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-AffineAlgebra (lambda () (vector 0 1 (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qadd eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qmul eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qleq eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qdec eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qaddAssoc eta-0 eta-1 eta-2)))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qaddComm eta-0 eta-1))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qaddZeroL eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qmulAssoc eta-0 eta-1 eta-2)))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulOneL eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulOneR eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulZeroL eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulZeroR eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qdistribL eta-0 eta-1 eta-2)))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qdistribR eta-0 eta-1 eta-2)))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qleqRefl eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (AnytypeC-45GradeC-45Affine-qleqTrans eta-0 eta-1 eta-2 eta-3 eta-4)))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (AnytypeC-45GradeC-45Affine-qleqAntisym eta-0 eta-1 eta-2 eta-3))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Affine-qaddMono eta-0 eta-1 eta-2 eta-3 eta-4 eta-5))))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Affine-qmulMono eta-0 eta-1 eta-2 eta-3 eta-4 eta-5)))))))))) -(define AnytypeC-45GradeC-45Exact-eqRefl (lambda (arg-0) (vector 0 ))) -(define AnytypeC-45GradeC-45Exact-addMonoC-39 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (AnytypeC-45GradeC-45Exact-eqRefl (+ arg-1 arg-3)))) -(define AnytypeC-45GradeC-45Exact-eqTrans (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (AnytypeC-45GradeC-45Exact-eqRefl arg-2))) -(define AnytypeC-45GradeC-45Exact-mulMonoC-39 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (AnytypeC-45GradeC-45Exact-eqRefl (* arg-1 arg-3)))) -(define PreludeC-45Basics-irrelevantEq (vector 0 )) -(define DataC-45Nat-multAssociative (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-multDistributesOverPlusLeft (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-multDistributesOverPlusRight (lambda (arg-0 arg-1 arg-2) PreludeC-45Basics-irrelevantEq)) -(define DataC-45Nat-plusZeroRightNeutral (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-multOneLeftNeutral (lambda (arg-0) (DataC-45Nat-plusZeroRightNeutral arg-0))) -(define DataC-45Nat-multOneRightNeutral (lambda (arg-0) PreludeC-45Basics-irrelevantEq)) -(define DataC-45Nat-multZeroLeftZero (lambda (arg-0) (vector 0 ))) -(define DataC-45Nat-multZeroRightZero (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else (let ((e-0 (- arg-0 1))) (DataC-45Nat-multZeroRightZero e-0)))))) -(define DataC-45Nat-plusAssociative (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-plusCommutative (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) PreludeC-45Basics-irrelevantEq)(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-plusZeroLeftNeutral (lambda (arg-0) (vector 0 ))) -(define PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Exact-natEqSound (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 ))(else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 eta-0)) arg-2))))(else (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 eta-0)) arg-2))(else (vector 0 ))))))) -(define DataC-45So-soToEq (lambda (arg-1) (vector 0 ))) -(define AnytypeC-45GradeC-45Exact-soSound (lambda (arg-0 arg-1 arg-2) (AnytypeC-45GradeC-45Exact-natEqSound arg-0 arg-1 (DataC-45So-soToEq arg-2)))) -(define DecidableC-45EqualityC-45Core-decEqCong (lambda (arg-6) (case (vector-ref arg-6 0) ((0) (vector 0 (vector 0 ))) (else (let ((e-3 (vector-ref arg-6 1))) (vector 1 (lambda (u--c) (e-3 PreludeC-45Basics-irrelevantEq)))))))) -(define DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define DecidableC-45Equality-u--decEq_DecEq_Nat (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 (vector 0 )))(else (vector 1 (lambda (eta-0) (PreludeC-45Uninhabited-absurd (lambda (eta-1) (DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-124C-41 eta-1)) eta-0))))))(else (let ((e-0 (- arg-0 1))) (cond ((equal? arg-1 0) (vector 1 (lambda (eta-0) (PreludeC-45Uninhabited-absurd (lambda (eta-1) (DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-124C-41 eta-1)) eta-0))))(else (let ((e-2 (- arg-1 1))) (DecidableC-45EqualityC-45Core-decEqCong (DecidableC-45Equality-u--decEq_DecEq_Nat e-0 e-2)))))))))) -(define AnytypeC-45GradeC-45Exact-ExactAlgebra (lambda () (vector 0 1 (lambda (eta-0) (lambda (eta-1) (+ eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (* eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (or (and (= eta-0 eta-1) 1) 0))) (lambda (eta-0) (lambda (eta-1) (DecidableC-45Equality-u--decEq_DecEq_Nat eta-0 eta-1))) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-plusAssociative u--a u--b u--c)))) (lambda (eta-0) (lambda (eta-1) (DataC-45Nat-plusCommutative eta-0 eta-1))) (lambda (eta-0) (DataC-45Nat-plusZeroLeftNeutral eta-0)) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multAssociative u--a u--b u--c)))) (lambda (eta-0) (DataC-45Nat-multOneLeftNeutral eta-0)) (lambda (eta-0) (DataC-45Nat-multOneRightNeutral eta-0)) (lambda (eta-0) (DataC-45Nat-multZeroLeftZero eta-0)) (lambda (eta-0) (DataC-45Nat-multZeroRightZero eta-0)) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multDistributesOverPlusRight u--a u--b u--c)))) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multDistributesOverPlusLeft u--a u--b u--c)))) (lambda (eta-0) (AnytypeC-45GradeC-45Exact-eqRefl eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (AnytypeC-45GradeC-45Exact-eqTrans eta-0 eta-1 eta-2 eta-3 eta-4)))))) (lambda (u--a) (lambda (u--b) (lambda (u--s1) (lambda (_-3986) (AnytypeC-45GradeC-45Exact-soSound u--a u--b u--s1))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Exact-addMonoC-39 eta-0 eta-1 eta-2 eta-3 eta-4 eta-5))))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Exact-mulMonoC-39 eta-0 eta-1 eta-2 eta-3 eta-4 eta-5)))))))))) -(define AnytypeC-45Sexp-affineGrade (lambda (arg-0) (cond ((equal? arg-0 "0") (box 0)) ((equal? arg-0 "1") (box 1)) ((equal? arg-0 "w") (box 2))(else '())))) -(define AnytypeC-45Sexp-exactGrade (lambda (ext-0) (DataC-45String-parsePositive csegen-25 ext-0))) -(define PreludeC-45Basics-flip (lambda (arg-3 ext-0 ext-1) ((arg-3 ext-1) ext-0))) -(define PreludeC-45EqOrd-u--C-61C-61_Eq_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-47C-61_Eq_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else 1))))) -(define PreludeC-45EqOrd-u--C-60C-61_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (<= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-60_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (< arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-62C-61_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (>= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-62_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (or (and (> arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--compare_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-60_Ord_Int arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else (let ((sc1 (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-0 arg-1))) (cond ((equal? sc1 1) 1) (else 2)))))))) -(define PreludeC-45Num-u--div_Integral_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-1 (blodwen-toSignedInt 0 63)))) (cond ((equal? sc0 0) (bs/ arg-0 arg-1 63))(else (blodwen-error-quit (string-append "ERROR: " "Unhandled input for Prelude.Num.case block in div at Prelude.Num:128:3--130:40"))))))) -(define PreludeC-45EqOrd-u--max_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-62_Ord_Int arg-0 arg-1))) (cond ((equal? sc0 1) arg-0) (else arg-1))))) -(define PreludeC-45EqOrd-u--min_Ord_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-60_Ord_Int arg-0 arg-1))) (cond ((equal? sc0 1) arg-0) (else arg-1))))) -(define PreludeC-45Num-u--mod_Integral_Int (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-1 (blodwen-toSignedInt 0 63)))) (cond ((equal? sc0 0) (blodwen-euclidMod arg-0 arg-1))(else (blodwen-error-quit (string-append "ERROR: " "Unhandled input for Prelude.Num.case block in mod at Prelude.Num:131:3--133:40"))))))) -(define PreludeC-45Types-countFrom (lambda (arg-1 arg-2) (cons arg-1 (lambda () (PreludeC-45Types-countFrom (arg-2 arg-1) arg-2))))) -(define Builtin-snd (lambda (arg-2) (let ((e-3 (cdr arg-2))) e-3))) -(define PreludeC-45Types-takeUntil (lambda (arg-1 arg-2) (let ((e-1 (car arg-2))) (let ((e-2 (cdr arg-2))) (let ((sc1 (arg-1 e-1))) (cond ((equal? sc1 1) (cons e-1 '())) (else (cons e-1 (PreludeC-45Types-takeUntil arg-1 (e-2)))))))))) -(define PreludeC-45Types-u--pure_Applicative_List (lambda (arg-1) (cons arg-1 '()))) -(define PreludeC-45Types-u--rangeFromTo_Range_C-36a (lambda (arg-1 arg-2 arg-3) (let ((sc0 (let ((sc1 (Builtin-fst (Builtin-snd arg-1)))) (let ((e-2 (vector-ref sc1 1))) ((e-2 arg-2) arg-3))))) (cond ((equal? sc0 0) (PreludeC-45Types-takeUntil (lambda (arg-0) (let ((sc1 (Builtin-fst (Builtin-snd arg-1)))) (let ((e-6 (vector-ref sc1 5))) ((e-6 arg-0) arg-3)))) (PreludeC-45Types-countFrom arg-2 (lambda (arg-0) (let ((sc1 (Builtin-snd (Builtin-snd arg-1)))) (let ((e-1 (vector-ref sc1 0))) (let ((e-6 (vector-ref e-1 0))) ((e-6 arg-0) (let ((sc1 (Builtin-snd (Builtin-snd arg-1)))) (let ((e-9 (vector-ref sc1 0))) (let ((e-10 (vector-ref e-9 2))) (e-10 1)))))))))))) ((equal? sc0 1) (PreludeC-45Types-u--pure_Applicative_List arg-2)) (else (PreludeC-45Types-takeUntil (lambda (arg-0) (let ((sc1 (Builtin-fst (Builtin-snd arg-1)))) (let ((e-5 (vector-ref sc1 4))) ((e-5 arg-0) arg-3)))) (PreludeC-45Types-countFrom arg-2 (lambda (u--x) (let ((sc1 (Builtin-snd (Builtin-snd arg-1)))) (let ((e-3 (vector-ref sc1 2))) ((e-3 u--x) (let ((sc1 (Builtin-snd (Builtin-snd arg-1)))) (let ((e-6 (vector-ref sc1 0))) (let ((e-7 (vector-ref e-6 2))) (e-7 1))))))))))))))) -(define PreludeC-45Types-u--traverse_Traversable_List (lambda (arg-3 arg-4 arg-5) (if (null? arg-5) (let ((e-2 (vector-ref arg-3 1))) ((e-2 'erased) '())) (let ((e-2 (car arg-5))) (let ((e-3 (cdr arg-5))) (let ((e-4 (vector-ref arg-3 2))) ((((e-4 'erased) 'erased) (let ((e-6 (vector-ref arg-3 2))) ((((e-6 'erased) 'erased) (let ((e-10 (vector-ref arg-3 1))) ((e-10 'erased) (lambda (eta-0) (lambda (eta-1) (cons eta-0 eta-1)))))) (arg-4 e-2)))) (PreludeC-45Types-u--traverse_Traversable_List arg-3 arg-4 e-3)))))))) -(define System-getArgs (lambda (arg-1) (let ((e-1 (car arg-1))) (let ((e-4 (vector-ref e-1 1))) ((((e-4 'erased) 'erased) (let ((e-6 (cdr arg-1))) ((e-6 'erased) (lambda (eta-0) (System-prim__getArgCount eta-0))))) (lambda (u--n) (let ((sc1 (PreludeC-45EqOrd-u--C-62_Ord_Int u--n (blodwen-toSignedInt 0 63)))) (cond ((equal? sc1 1) (PreludeC-45Basics-flip (lambda (clam-0) (lambda (clam-1) (PreludeC-45Types-u--traverse_Traversable_List (let ((e-7 (car arg-1))) (let ((e-10 (vector-ref e-7 0))) e-10)) clam-0 clam-1))) (PreludeC-45Types-u--rangeFromTo_Range_C-36a (cons (vector csegen-81 (lambda (arg-6312) (lambda (arg-6315) (PreludeC-45Num-u--div_Integral_Int arg-6312 arg-6315))) (lambda (arg-6322) (lambda (arg-6325) (PreludeC-45Num-u--mod_Integral_Int arg-6322 arg-6325)))) (cons (vector (cons (lambda (arg-676) (lambda (arg-679) (PreludeC-45EqOrd-u--C-61C-61_Eq_Int arg-676 arg-679))) (lambda (arg-686) (lambda (arg-689) (PreludeC-45EqOrd-u--C-47C-61_Eq_Int arg-686 arg-689)))) (lambda (arg-1566) (lambda (arg-1569) (PreludeC-45EqOrd-u--compare_Ord_Int arg-1566 arg-1569))) (lambda (arg-1576) (lambda (arg-1579) (PreludeC-45EqOrd-u--C-60_Ord_Int arg-1576 arg-1579))) (lambda (arg-1586) (lambda (arg-1589) (PreludeC-45EqOrd-u--C-62_Ord_Int arg-1586 arg-1589))) (lambda (arg-1596) (lambda (arg-1599) (PreludeC-45EqOrd-u--C-60C-61_Ord_Int arg-1596 arg-1599))) (lambda (arg-1606) (lambda (arg-1609) (PreludeC-45EqOrd-u--C-62C-61_Ord_Int arg-1606 arg-1609))) (lambda (arg-1616) (lambda (arg-1619) (PreludeC-45EqOrd-u--max_Ord_Int arg-1616 arg-1619))) (lambda (arg-1626) (lambda (arg-1629) (PreludeC-45EqOrd-u--min_Ord_Int arg-1626 arg-1629)))) (vector csegen-81 (lambda (arg-6023) (bs- 0 arg-6023 63)) (lambda (arg-6029) (lambda (arg-6032) (bs- arg-6029 arg-6032 63)))))) 0 (bs- u--n 1 63)) (lambda (eta-0) (let ((e-6 (cdr arg-1))) ((e-6 'erased) (lambda (eta-1) (System-prim__getArg eta-0 eta-1))))))) (else (let ((e-7 (car arg-1))) (let ((e-10 (vector-ref e-7 0))) (let ((e-12 (vector-ref e-10 1))) ((e-12 'erased) '()))))))))))))) -(define AnytypeC-45GradeC-45Affine-u--show_Show_Q (lambda (arg-0) (cond ((equal? arg-0 0) "0") ((equal? arg-0 1) "1") (else "w")))) -(define AnytypeC-45Main-main (lambda (ext-0) (let ((act-1 ((System-getArgs csegen-13) ext-0))) (let ((act-2 (PreludeC-45IO-prim__getStr ext-0))) (if (null? act-1) (AnytypeC-45Main-usage ext-0) (let ((e-2 (cdr act-1))) (if (null? e-2) (AnytypeC-45Main-usage ext-0) (let ((e-4 (car e-2))) (let ((e-5 (cdr e-2))) (cond ((equal? e-4 "--discipline") (if (null? e-5) (AnytypeC-45Main-usage ext-0) (let ((e-7 (car e-5))) (let ((e-8 (cdr e-5))) (cond ((equal? e-7 "affine") (if (null? e-8) ((AnytypeC-45Main-run (lambda (eta-0) (AnytypeC-45Sexp-affineGrade eta-0)) (AnytypeC-45GradeC-45Affine-AffineAlgebra) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-u--show_Show_Q eta-0)) act-2) ext-0) (AnytypeC-45Main-usage ext-0))) ((equal? e-7 "exact") (if (null? e-8) ((AnytypeC-45Main-run (lambda (eta-0) (AnytypeC-45Sexp-exactGrade eta-0)) (AnytypeC-45GradeC-45Exact-ExactAlgebra) (lambda (eta-0) (PreludeC-45Show-u--show_Show_Nat eta-0)) act-2) ext-0) (AnytypeC-45Main-usage ext-0)))(else (AnytypeC-45Main-usage ext-0)))))))(else (AnytypeC-45Main-usage ext-0)))))))))))) -(define PreludeC-45EqOrd-compareInteger (lambda (ext-0 ext-1) (PreludeC-45EqOrd-u--compare_Ord_Integer ext-0 ext-1))) -(define PrimIO-unsafeCreateWorld (lambda (arg-1) (arg-1 #f))) -(define PrimIO-unsafePerformIO (lambda (arg-1) (PrimIO-unsafeCreateWorld (lambda (u--w) (let ((eff-0 (arg-1 u--w))) eff-0))))) -(collect-request-handler (lambda () (collect) (blodwen-run-finalisers))) -(PrimIO-unsafePerformIO (lambda (eta-0) (AnytypeC-45Main-main eta-0))) - (collect 4) - (blodwen-run-finalisers) - - ) \ No newline at end of file diff --git a/build/exec/anytype-check_app/compileChez b/build/exec/anytype-check_app/compileChez deleted file mode 100755 index 62fda32..0000000 --- a/build/exec/anytype-check_app/compileChez +++ /dev/null @@ -1 +0,0 @@ -(parameterize ([optimize-level 3] [compile-file-message #f]) (compile-program "/home/hyperpolymath/developer/hyper-repos/_LANGUAGES _SET/anytype/.claude/worktrees/anytype-mvp-kernel/build/exec/anytype-check_app/anytype-check.ss")) \ No newline at end of file diff --git a/build/exec/anytype-check_app/libidris2_support.so b/build/exec/anytype-check_app/libidris2_support.so deleted file mode 100644 index 8c45d9fb9f1e7d1d52f644f6c20f46ed0bf4ead8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50080 zcmeHw4S18)+5gj0u+rKF1;ybjkyR~<7 zD|MZs!;j7AoMY--=ltN^n1l}joo*Era5}AKI9v7J5Uni1!S2PLjN$`f{Sa0LvTc$&4$it8WytHh0VX z%|FVf$G8z@VHEPXTs|(T+#W8shs!CNU}q^>DAj7Dj$SiK!4R}e!kVHaOUd@Pa4TJ# zgM$4Ey@3T4RpqWkIkNNLP24;8j0wq4w$@Z@=-Oj`E+D z9C_;Qw#QDo`|(e@ZY5hf@mhcv)i)Zikp-R6{HRuJnY+=HA1yEHn^Iog*zkjsZMJBB zUo;xmw7kidCu>LM6+}m9mgBYB(=_cCZT#7VCeto!b;0=6e~A{fl@u4AQMl*)%Zl#S z@^0Q(oL6~wGuPquJ-j#+wcBw0eY}2v*By9Kx(lx#iYxhc zH(%ew^gd7yVeQ9^>B;@fJOKKjJ_FZ3!Rx1ZJ&e~TyeK__*Q4TU@a?g|OYL#p^)GS# zgpPj(*Z;}<7SIGHOv`bxp?&j;~nZ5}62fY4>*UNalg4ce$Uc>7RyeRz{ zuQ$b2_S=Nt&D-*?nfGrv^yALa{v%(UqgjfUJ~d*`!tp61Wc-;6OE2ykeaQ6Q^=E83 zch<6wuZ@g-^KjypeC6l?%hYt?qZ<#OHLv`KTV~aM_r!^ve?94%cmDCx+SJ?IFVCBB@zDb} z)`xD3Z;0Tfl`lH|TG;is!)H}49a-|gd8dqBzwfc#=l^`%=hrM9@#LE6 z*7cTaf3f@A4{lpO>+bvB`mAQ+GY202+ACY$_Dx?t;f;@8dc#%VdHleqlkPh0jHiCM z`+*1Yw>@xl%e*c77rp)3fm=>n{k750tV!PZ{&HEj_3TUEy62tNL(NO>nf>yj?bBzyw(7wJkKc6o?A0qLj_iEt?bXjT&3XI0 z3s($W_|$^h)Q?}TXnXUt2O{TA=zjC_`#1Quz4Sm=>yJ0=nzzS)Yus_(CwJ|daM#l> zj{Vid-+x(%wmBM48sGiNn$i19ZtS@u9vM^pdeQ9d-Mc1q-Fj;L;R9R8o_?gDplkEE z2VS0c=Z4TVpS=Clz;jn-M^83aHcHb@%!UMaI~IhY@LyvB9SVOjhn|~q=qbX4Jd~b4 z=fG(mHV8(S8cNS!a`+)XhyS0+;h&dt*grc*ytU@A6V+;Fyo~8}=pSmlJe$Lw zhjP^0m7`y7%hBHBa`aby4*8$v7{Bl4@bh1D^viWQ`qu-;4AqYx<CNki28K@RIwy*9qlQDgIC5r@TEbdf9%cZqaJ z#80tiVmsA+#1i5EV$D2P%Bgzk=JZ6ZSo>9-#FhRc5x1vk3APi>5$R2CZ-U#a?EHk= zJHYLQm`JVMu0FaULrREuO*>PJFZ7o~0%tIuW_xs1<25>krr@uiAA!%U7_x!hgp8575mfl0&@XehTu`zk3XR zJB{s(vz3-EfcvqC@na}R{TQViU?kP9S6IG><*$St zl%}%%eJo!rVeRkA9`@TsjIU-tSh(NSdBd}eM;TY~a|hRJ;d;lio_o39`yCQscWV>5 z-Z=YV0?WUdFWc4MC;_My={;_5fbCa)3oHAVNV!cc|5t9WjrC7u{BP{%KEwR*KI8oc z{AJct!Fo<&JvVXuI5QNt9G6R+r)lju*579scW;|__d{+h-1m^q$RzwCq<%`*e_ z+44_wy%k)qQ)X+QGd{pL)QWT``^U!psPu;!7l(L|RP(?(_P>Swtm63!w$oy;^Y182 zcG|46K5n))g8iwnKb4+UEZ@WJs*}aEE7))StVhL94f|hX|HEvN<}+?G;J;u!4mPBk z<(({VHps8xIH}+`QT2Y0`>W3(6+o>>KW0Dlu^;ICk|8(QxvQ!!R#B z%Xap%ovPkPS&y0fQQ_ZEcGBT0(mqMFB5qfL=O5*t4)%XP`=6Vwy~udnu#P;*?X7T1 z#cI8HgY`QMa`ATZ$HmJW^UK(tY71JsAIgA z~3v8%l8`Q znH#yi7DNATW%;N<{s{L=A3LUl>vgf70ro>R<3DFTHiMp09@jnGUn&l1_)~wy=ST%_ zvYy?nr^lej!R<|OdrxKgT^#>W4iM$Hue1GTjyE-L&*%QK@xrD0>q?gIVfhnT|C?-2 z!eCDi%iGvLV_AML+Y@JdrZfI~_FJMs0?N*fV95_rr^FAi{4-o{z)&@_8XBp7u0 z!nK~Dt0n9YuA=;w6|E|}!xi+nSJ~Z8kJps}TiTqyxOS1{=F+hL_M?D6}Q-k_`9-yuYU?K%ZM*Ge+G&KHK&sJc~` zM|I7C$(oz4lp;~3gvF)8(PTpB`879)&#!Re>ViRk5FQkS8_M{gU`t!OKjR%~E-8dn zWVv450_q+&Iy;;}1Aebp3%R`Tzrq4~s{>iKhFq@e8g>0g4L9;NZO&jwb5oYmNY~X7 zH`-C_3_BINBIpUbL}_;*5)Ng-I%&6%Q@IpOI!82l+Ot|X*Wc=Kdt9wXJPf(2mKIki zL^%swEqW!{ne#$l&DEm<0?=?Pb_8d8VMqDoglC@@%gyPP^yuLoVC z$9=A_eK3bOgq%xjj=1e@VZYBSu6$vCo0ldPd&u8%9R_L89`SirYN2qjB_MoC1p|m` za+|pJUzbr&Wn98Dl#>|<#5mnh6bi^l$pFyIYLJg%k}1pV43!Ow$QX~$?bkv9(6ESV zQq=763AfWV#K;DpQwBLfnRW#H!HoJAzt2Ylm^_ft%a(X)CKp{p#oeuHaAzrVJKH_p zj6X7Ucmf^MHEM?)jtnT{v$E}aJ2E-K$!tIiMt|6qFMJmsWNxa-)`jfGRgpwLxq`!XW<6pvhq|1s7kUj z^*u$ABAO(s%5D}4xtzW zU2bQ@n<;|D8qf60U{VHqPAv~ z1pDm><}QMzP{_5sgV=D;DWu(){lG>-!Ahpn$Tzh2@Py_?P>4A++Q2RdV_YuR<=3h1 zrqXbkoID51qkxjedZyz-UY9GN`J6t#yy7B}ERGf-RU96z3N8<6c4u&Ti+C52P4&V~ zWYzd1aKm8LfOK4)ufygX+!;Ze%a>8$^3iT?zHtrlZex7Y zgW0&^*WE91RIaHqg!JfeRGdj0b-1#fGUGb@oQyQSm!-q`h(+Y~>hN=Q@|$%y-%5(y zgbwFhPl4~z;dBqGQlAdzqgj!4P=~9t2FmEy;Xb8=Xk0S5-A11croyP|yni-c@R4=_$vc%;TVF;y6vc}~l z;T%!|u<7t(DI(sN=x}ugL>UepUP1t;wz#|?{iTc%3B)Bs_!xO9-dDyYL%2G#AS4>6 zciAR7yHaUgTwamGD#%55y%y_(XXr-jBs4L%3O9%J&B(A^Z#-UZ}$->2Q+{ z|GEwzufxl9xLJpvsl&^4_`N#3LWiHF!)NO7vvs&dhnMScs}7&6!)-cziVk0*!_U*< z4jn#KhqvkQZ|LxV4zJMRD|Prb9Uj%;l{$Q#4xgsOdvy5uI((xJS7&*Y9oOL(=;Sx) zaCO#6*}Xda1)cn69e$w>Pw4Pp>+n4~e5MZX)8QBC@Pj&hj}GtG;e6yNa+5mzVx9be z4xgpNkLhsr8JNiCb(7+MwoblKhksLtn{@c4I()nix9D)Q4)4?9{T;Z_~aTLh77)8X|x`6W8ss>2;R{4yQhro;KDTjU0GIDZr)@Rd4zu1-%> zhx126B6pn*|B+6gs zl%MKPBb~XO_&nnK1pgc2^NCLg{t4pg2sYI#_(zDRqt{ei@DCC{lK39M-$OhdwWgwi zznyqG4oC$A|2^UhiFXM87UJp1JY^I7^~BTBYsw<{An|nMnyL`|w}_{s)|6TB&BUKT zyh-p^6HiC0DNXS6iKipg)WDYj&b*9xI*L#A3%;6oI$BNj3I1Z@=}0w|5d1Xa>BuzI zEBJGWrz6o+T=0{KA4hzT;J-#Z9f78zfaR@ZTbyjv7;D!8a36M~o?x z;IAg0juumz;O7%hM~bO|FGT+nPe+NVe!*80Pe+BRKEYp1JRK3H5`v#bJRJ?DdIf(D z@pL4ZiVJ=c@pKfJ>Jj|ch^HgKR8;UM5>H2bses@|6HiBYDTmy#A|}zOZ=t84}32ApLh%L{es_4 zJRO;(`UL+Q;;V^I2>uD;>4+@VEBHrunqq0u9`!QW0i9gU>| zg8v@zbR?E?2>ur08;G|F{(9o+Xe?zBe2{oL5=&JG{#(S;QCP|>_-5ki2rOk1{ME$I zBVH5yeB$XSEH&_%=zrqrs4LYk_-f*>B)(7Z7ZXoMUa5rOrxCw^_+G)ELwpnQalv19 zHJ%>P1AfS4?VkN9f;ssR#$qatY0n1a`v~Xc?La#Bq_5rqU>N~7lgR6siEPP-q1jzJ z5ne{-^UH{g+)m`8W8ra_?r*zFPWQ*B`%5QAsp1_>A%C}!zu>0q5 z$HR-sR=n*Rc^>$@Yfv^*Kb23dKqlK$wYX|gL+ohP!iLzts+y`|uPn62URpq_R%6$t zbJwK9*IK(yx2}0Tyr?nn^TVg~G<5FHt6Eo|uDz%~JgK3(KHqxL!BDd`_F-~9db9Ib zI`U^?o&$sBuA^$#aav>SSi`w>8m)Uvuc=yAbxqZ^Rd&^$hTWqyv!-pOw`3^>L_@4j zYl!Wp#d79v2|c`)*2RXdQ4L);!q2B^4U^N>*qg~o5GJV;MTxxK4YAX$c{@_yM%%2r z6L?P_UhnR)#$Nu-Xm}{~SBS$8)UvJgYpmphFp*QflHCW#QYwUAt*QLp^uyai!0u^s9 zO?~<)dVCTDyJjZuCAV~+@TgR`nbgr_*$|@^M8Q@jl0Sqf_kZg5U)7&H0Dac3S-VjV z7I;wAQfs&EB(%a>TDN`2pf&EE)KWA?XCL`DSr45sZlu`iBxBG9!}6tJ7HQb!WSAN1 zrD4RvurDF1Q-=OZ{WjabsqbWqi2BZ^8nn)1Cxpv8kBteR)Ojqw+cpxW3IoJArQZ{Z z9^N6x6a8+F`N8H;eML012cgvKN3(eA%||w(Wb#Ss)!3of?&QTH)FUT%)s|IQZ{A6{ zIuC6Yf%q;emGQ#m-KGAKAEC{qlMBj{ZKSI^TxR-D3blq#4z+_@;O}Tsp{i9vdD0I)X0Q0-ZG6KOkm5n5CV^ z@=i^taZOQ8;}-Rgx5hrB<`r6F?^<^kl%Y1wy1TZFhJ%*8oCX{k+*MF!U9)#(DGVI1 z^B;|zBfC(5@sIK#AzK9*O#tv9xFIe+FwZ^syrKz)_PR-}Y zr!9UAxx11j@Ex2|dS`5lk$B^ZBqsP?vyEi+&F#Y~(EA2iPs7U(^0+>>1;<%I= zCxY%dXozhW!L?>@o)s{Kdm5!+?h%Fc!8^OV0jU8Ni&5o?* zSu|D4JE9hf=WjtZ1~0|)5*1d1J{MIU9*pO%5*6s_wkDYt+Rua0T3~U}Y?$%gMVKNLTb}lYW6y>t3D83<{h%uh9Whg>WsQIokq3=$2kCC^Myj4Vr z=)YX~h?1f6(Up~ZX?iKflu}HyZE_v_g;5wbA%u%D?@gBT-gsJOCy6$VyAb5rC-ZpT zd&!Iz-trN(@Pyw=fmZ=N`;-!Rj0Btz=%ILAlU_M7d@{{8*OK2brA(*j6!QuEN0(KY z7P?P(4aMNj4?!vu&(byoE<8-S#z9vyFo3R_nM}c42>(S2zYp^4i4c_w;Yj^R5x>AE;UB}Vv-MPD< zbWg1Q3+qKMN8Z<0*<)4Zn=UL6@p_z2_&{VpFHHF~{K!W~0@m)PvV1Y>XfdDz4Y4Y? z#YOC8>*RlSZu4$Sjle3n8U27^a=;zKYI*gC)OJ6XgV@2+F(br`XTn@(5?5winZ;EF zt}4Wp1y>evWy6*2W11tc#nrXws=!jch3=l%(bA_2E~H?S>vinty0Kt0>tU+P;NR=0 zD+cq8@heQ%mETMa)$D=2Ag{9A6&Qkp^>Q~F4Y=7)uw>V4?89hspyx(I_kCWtx{RNX~#1 zIYF$*a$Lg?2}Cw6?;i?hB!56fNN9%;OXi`_Z^d?U=U}|0KK~#q{!-`C@EFW5eI{#x z?h)(XR@!F@PyPs{t=*vlvGd$Yu}OO|?3lubMdjGoU{|Dz&(de=^OciC|KS!;KZ3TB zuTyi#DA_JrYN<0a{ct_Cl6G<;e<6AEQxW6TvvZFiGxjDnWzSn%`jX!z7W1hH7Sb%N zwzll8d_LLCdHUMjJ>qUwtb|ny8(ZF^TiP!gV;?SDkj#HSoot9I2EjQy=T=mJ4l~w-!zC* zo}qnBA{P_GtK_s~F{G+uJ1MM2%eMRpNNucN>~OIk%j$mI4;waQG#^{LZYrd8cx3YN z6uBRFlt0CV>c7I|Zg5?2JuPfa=rPezfyIl3Op#I5 ztc^XtAhwU@9)k_L(I2p(CiW(sMLeIRdTL<}^@la~0s6SM%W7)uvW!ozhjp`M{kh=itv)|L-MuhVp3O5P7;-8W|9paF3}`o+$WBH$ZnF-_Tx z-Hm0%mCx_C&@r_(Hp4Aw;&V(heYFEJzsu zjVUvYXY6alJd%8uqWQyQKPX9w-K0Et*-@ppKlZA)eG)Ce#6V4W16?ibr69fu#*@7b zEw47jl5B3}^Dq@=lC`2CY%et>c_X<~+KV_Z#qc77>Zu3Fe1kFK{_4Zz%pvSl^Y4Eb zzli6o8wlcQM^;+;j72w5X<{DVf%r$9pPwD{|9Obw<2xvZE#uPEBVY&P58DF~2bis* z)WXe0c+4_^&jQvwA`}_I_tjCXh!ioYmxgop_pEEp5pFLn#_#m#a z9XtsH8@vMeKi=&8Gov#s|#41_27aJOxVeML7R)Ji| zm6H$>9V>|ZUNF|!>ardI)?(qKQVHg0qqMrLk2%^btuE_ljy6oI%LbUU365-_ErmmH zv|k`DAULz&R+mLlB6;+0aOurEsTqd-73~~`ZXe1aekc^M1pY5?-^u?@`?^N%uF-WP zdLd3tyobW=e}5Cte@EYinfx8%KG;PiE;W@DvI^WKV%n-9jX8!5ime=`DbLr}X z2-MiXzWz1a!$)G?>kW-_djSi2Des)6S zyEsA} z6jSQMaT*Sgnzy@4-FrZ{i9^sG@PSdiw5JfK7eAGi7w*6*%$2Y|HWL?7(U1zgLE=0J zFph&V?Y)Y`uq(q3rmG;!`=q~XWGEEDm6(cxV0qX z)zzQHZxx@EJuU1J=V!DFe-|=1Hz`u*#qg875BsP`?`*MNRi<&YaT2t^E7$@qqfOtR zlH=etxMmF9Ta8B3O==y*_<(arULIZ@K~-3;50DI<87~-G-*ZAt>XSPk?q8$6`waSM zm(~z_1qZkbW1on1|K=lmFb6bZI<63Oec4RV)rqjBbn@yl3$9BiuP?I+x}nS==zV1Y zK_4oM3i?=CkDyPM#Rc6`)(hI$?JYA~v9~LHmLi=-jv2je?Z!Gv*|864Uspj;4Bbt* z2{b7z-$Y&@9Gq;PJ=?48>*I?GJrU@tMxvoC0&^}Q5CJlbULU7 zl%Aj71L_5hgGNDnK{tR7fcApg4yM!e|Fs;T{h)EsFF^Z2Pdg5JUQ4Gh0gZ#w{{={Z z(sRW7LF1s>pVH|kK~120K%=1l08N0Ja0uB4N{5mCpff=SKpW|B^7VAu0crvbgPK9t zfm%StSGqx;1n&Ud0~!E*1GMjrbb1Q>Isl4)g@}J-2fu-uLEAtrpc_DYL3=?faPZOx zY6E=-)B$=7Gzw}$|0Y1oKnFl)g7)A*XBlW5GyvKQx*9YAx)HPw^fAzW&;;lJ=qsQa zo$`R1K)(R(1#QAPbp;O9qM$a=ji9}t^m&v8N2ddXgBIXC+5tKqGypmUv=_7qGyzJ# z%;^KY0kj{q2UNr9-zLxs&^}NbXcDv+v<$!8G2!@f87Q51hCv;manJzhlb})1J)m*W zcR+hVzW}YkVRZ%KwHGuB8o<%^K~OV3KV9iVT3 z20#Zuqo4)&et!?>c+fcL6wqE!3upqg3A7KCev#AHzhEMnR*XanKE*y`Y;wEAT<}E1(Y0 zBxnHi3(zR2=_J$xS`OL^Y6VSzE(0~;n-{A=9iY9Sl*A{{pn2EN*YZ}H@+K4?SJ;C| zstnj^csZWO*uvbPm6+y~jK8e3XhmUEyYy?b&N;tq5>QdT7Ifnu&=&-7vV!8r2U`4( z>GYd~RhO8)pI==v{`fVs*;MTlJe>j zGbB->x}?xrB%Ud^2`Z-drPBy2k?1S3Tkxs?R!2x}iD~KRlEONS19YW!5U*C`k?E8O zJA#)37!5H>W_m+gmnj`pC8o}N2eecb)rfcb?5i@!tb;_{ zV4H!F52gHK`Zq=*QJFCE_vp${Th;;F39Oo=(3ZJeKgmCYykk0f!sv6bf9NnXuor<1 z=yY5Q9dn8r@Lpfk01K$x0Ax;kIomG<_^e{Q4kLTU0~-sBei)_Im&Ef(+2uvzSzyzV zHxqewm6tEuNBV8ZyTPEV71&B(;<-y`n~mE>zKSC6KIC0Ox`c1Ph1|JCHL#cRVp_;PD+4}LCrjn&{}gnCF<={Xm}ozg_W%=f0<2XrQwE&MV`ydSrq4{MydG=h@(QE=aR6HnIq`pv zgiorZPb%_%gzk|(sViEXxvnY_eL?%6))&%gOqZB@Dmq83%@_SfpR?SD{SQxH0^12} z6EHMMB=Q&Siykt_9Rb#>!$dpLfhV9IOrN69D6&NS1E=zS!V!0Ex|p4gykp4wj?6Q` zctqG7AwhN1-fIc=X2N#xgwZ~%6&Q#}R5$I(96F3LNOlA8HsItxN`!3!wgK1~0+DkU z?csWX-9eZbI}Ih#y!=~LoKd-c$V|chkG5Bo2>S=Ha$wk+i9}c-m@;6<%3!AfGaIl9 zV5b4o`??m`c!Rzrz{VOd+B=$bSQBcB0xJe~JJpKudmD}4ZdxPO7u1%NucbAjbJV<& zKtB9SYXe4hW^Je{y6P(!)X-Qw2)#|vyMpwJxWn?*Ibu#pPu>l3TEJMuVnO{-0OxFi ztcU?b7Y4qCA#>^qDC6T)Hk%39YFqC$`^H5sg7FIkza*MYD7oO zDZ;umzD`_M6_KxL?`y?gTkmVy2iF>~`+!+!Pfq%g%JAw1b_p;smky4n#u9V08cm{) z4??a9a@fX+MD-p4W;4{Gp)HNT)S5{C7z>Q-n?NNI`-{+Es(T7>DnFUFavxYpnjAqi!rIuhI1}M9J5iPuH`}TY#wO966_?0^5snn2QNUZXL*$ew2I6U`sjhW5AyTJ{8w;-9UV-Mc-lF zxYn>%lwps*8M6AAp9zf0t3ISTqY+pyFyS}&r!${c5V^L{{RGKVKhXMqIdUp+83j)E zi8vMO7tCKf0v_lrScoRojxI6RD0{H}Qkf@F=2%u4vF2SyWv(!msh4YZ5@jxYZg4&= zSUX}pmO!luuL5*_Iqu;SxYqRxc46zuw`)f>P`}U?E%?7{!g zx@X*!tyhfghD?8x-e%}E=%~dwGh)y~{-ggvl!RV=f6)KseFvE850ZNWSib=q0QLqj ze4Ab*Gu{iZV3EFy2$@6uwsiE4lEN#B5YY8IWS!-ZDZqU!rWKJWwl1NC4j5dUNmMW0 zs~v+rv8P#5Vlo4xCnS_Xb{|QK*k~x}%g^7f=4z5z4;i{w{;y zat>fO7_cy~l?H4bu&@EU4_Lr}^#b!6u${o#4A?0@au zF!G<8cd4(-fi(dWWqAD3wFP)1aOFdiZ31Qmb{Vc|tmoI2&~2*b1y24E>kN33jRGTo ze;wB}*IvtW=tkfV0iRF!+!8aE#X^$r1%3p$(GI%*eg`+xg2=?rHg0q`r`N7SM|N~G&W&c`i|NVI14 z16zhNHbTU>gEOxlEo`kXT2^AhjRv)?5a$W2{~I|{L9){!y9u%f2*8}(P4~6yvCqd^ zR6}dgWhDbD#zUEA5s5rMC~c)f1FUlR#GO5B-mDo zw4_;5b*`xXuZg%PL{_29*60CZl+^z>q4NexD*ux&<tX4b5<<-8C+06ff=s8EqE4+NNMxZ`ziQ0W#%XH3 zRQM~v^J%rSC`8gf0T=%-damTv`g{Yx7jmXg;LPaA%}SmoI;6FdXgxXPA5`)VDTr_q>DM{r zcd@*M{jB`+I^*$1Szg)sG275t$N5+;RGUM75%8h> zNl!W!|974HcLnR|VBGls?YkH^{{Qwn6n>Rdpgte?;Dn*u^%%=n7{=)f0%s$1Yc}-PX^b2HUwtLx4#T*k?+KFM;#R2`tVj)v zCwRQ8{)py@)b@A@^quEWjw%f%hhZ5GTzUEXRxlHD*Q?bfEDQp#(Q~w`#R%W z1|^;J?#GKb??c9;94824kw#!5B0oeOl82Z`Co$f`{VTq|fSfZJ?>G3Zl5sQl zBUq8D1kQ|(EXaYoSx*JGSJ~5%Lw+602kcV0x(~dU@m{vGjO+d-<9#eI&hnABGl%{I zIq+l-{GY6UV4kc{%_pU}fgEann3My*P~f=BHu!T+4*6v{a3AaG<+uVX()Elxnk29M zOrOJ3JoGrS@w)^rG5!0d9Qbc@;D5-0J4AfyHOuRMA&+^IRPZ29*9D#s|2+RGj~e@jk=6@s!eEFZC-uyBIgKKTR@Q+pqMnes#Vxz<94= z{-o~@kl!pkj+CAPOzeaYSfye$Z;ul=SEeK7EN^0evO4X89P$l0a3|~Obx7qCxek90 zdHUXgnPv3k`@qNG{-y6hiDDTNX)SK#R17dA$emno1@8xV8PI;3quys&-b6QONc$ww zb}=4UC;Kozp9hG>Wk9^&O$o!jT|_A-b;FH3$pbr zX57K`Du0FEaWR|mfWiNlGahAJ`M+7|aY)0}{Y8h8=kcg)TMc}ub?qJ@&yClS z$8+FYbKv`O;D-c`eFFO#)2T?GG9EYBd3>q#k2Y7zsrHrwH%ln%y;{g;L4vtD2i~3o zzeV8K=kRz}_f7XOKESxzXFkGsf1|8h$?s;|#`BN5&wY(?#}!iE&n6EjoZE}(QKWw{ zZsYm+B*sgzV5vT3NDwpdNqT^u+{??fAK9 zFl2W|R%$K&_JG#~T~jNDmcS2UeIC0r7<8_(4Eu-L469sU;!5UHVM3*IqTRYHmXf(E51`?R8czV6B}GsA+DEDq7!oMRir9{faqr z7SuJ_o2sfC>!6StCC#5^4~5~{poS)e?Y^)-V5x6xsIIY3!zVr$C>i)8-6@ z&=am~S>Z&4TqL{zKM+QAL_)!78h$k0k)=|J`2#NBw3;@Lx7F(OwR&Aa&Djj^XUW>_ zXtB?4_xfA#lV!gzE0b-f3hd3R!iX|f9mG$UJ6v<%3e--QS;b(O2Q9ZZG|jaS#wvP( zBDKlcj8gD4epj4TidB<;7vPuD5DB&fRvAU8Yg+t19|nllejNhNC_pX@xx$e^6M{)| zqjmlvW#qV}CR`E81OQb&*Wc=Kdt9y5wW_@%XQAy)}Y-J=$KA@?`#eVyU8O6HpER! zhdbzR$BZO1RK?lRIxmE9g?zx1Z3esF6VgX5egMz2nruTI#foyupa&a#3hQtMJ?>R@ z{%Jo2f-mD-87Z|M46xRqigcY*ge8Yk;mwK}i15<>cm{^rRM005rVZ^p&#+!H= zfT}3ub-4l>4Tm8DhLq7r8+0HdFM{ww<$B*DKNJ5EA41IK>rfR)S167uqQFuboNmlA zuJ8;k*lw&JRe4=s>3tEy;h>0Jt)cW^SU1|UoZK1-Ov?f&@Uj5bBwHya6q~1&pP`T?81e;z=y7)z$bN(uB0kSb&FA#_ zMTcYwxiP7QvJfs7aJjBij`Y%^mx(n*g{`4h^Y~lB-mH?yz(XanAUT$@AUBC+A>2&h zG`$8qf$V9GvqLb5A~EwUilKCf@Iz0ike~ol*TRjeNdfMPffNcbh{C_d z@6ANN(nkT>f+;2Jva1O~X(ry48GJ2REtk7=7C~udG?NxpT+AR>hk%s zppc8UY}t@lo-38d#1bOnhE{+fhBVJLF6VNm$0s)m%4AsX4q)t($=nLLpUA4v?e<1O zZCTJ@M9;Iyhk#&Xs9KEaWpFZ=3$iknT1d^VYH4wW#3n~98>~*w1B>z4k?K`yXCa4X zR^@6z$^xN+8%hD^!&Xz7gMidc!92VFmm6bj)I4Di_Pexi^!PIkbHeICCh~cvhSzfi zDkLzGW+rzSLXkbsuen=kDmU7%Usv^;1>que&$lCkJ4)X6ajTU_FsHZsvnME8X^j=J zqXxYaaIW(DotYJx0!c&^tLJsb=uo>VMjp-#b1@gwqhr3Z5m@f?2Qi(<(GqS!DQtGK z_fX*$`0Ohvhet#%w`^2)g)9P{m|{J?62v= zZ=16)x0sf)Ag)iYDuxBa*I{$&7B!wF^n-wIhQ!8S-J)h~`ze;NhxPc}+0&LW-)f;1zlbz72vCYH>^z+cji-ZId!=oY#4i6Z7LmC zK*--pw_#IVZG1q{)(RzxlSSo8g)E`2Q3D2A3##{rNi&QSdYVHa4d*lM^sFv**z-T9 z^!dnfc;&N-nS7yWnL)KWw^Z;{TpY!Bzg2k$Unu$_7f|P6>T?=Zo_<$OXM?J|`aZm( z$+1$B)a2o%%B%0GTY!;nRbG9+UQzXZdWeWbI`oN-!|A*2s=WF>yQ1_xLQ2YhC8sDI z1JZZp6|cT8uc(CzBN^?ND1PJ0d8)kne!imW`}wMVWBYwvzM2)P@B1sNejh;P$Khox zzY-WVQGKqdS-?=ThsQ}XRrGj+ys`cC`4*MWS8@TqU~0}}NL;mB ziQkJ0eR=i$Rz>OAa{6RowVxZx$2+97q7Iz5>yz@E!hVeld}NV{Z}olU&Eyy)qrBo3 z-3l41LdB>0estpBEdP6yrPx#D)%Sk)aQOr|2T8SC)vNq?3-U-rm0x#1N#pnK-R0nGjSpqJD9CS{ACVVF bRYx(d>Q}P#8OTuOAOEeC_(%ydHJ1NB$wCl! diff --git a/build/exec/anytype-tests b/build/exec/anytype-tests deleted file mode 100755 index 50701c4..0000000 --- a/build/exec/anytype-tests +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# @generated by Idris 0.7.0, Chez backend - -set -e # exit on any error - -if [ "$(uname)" = Darwin ]; then - DIR=$(zsh -c 'printf %s "$0:A:h"' "$0") -else - DIR=$(dirname "$(readlink -f -- "$0")") -fi -export LD_LIBRARY_PATH="$DIR/anytype-tests_app:$LD_LIBRARY_PATH" -export DYLD_LIBRARY_PATH="$DIR/anytype-tests_app:$DYLD_LIBRARY_PATH" -export IDRIS2_INC_SRC="$DIR/anytype-tests_app" - -"$DIR/anytype-tests_app/anytype-tests.so" "$@" \ No newline at end of file diff --git a/build/exec/anytype-tests_app/anytype-tests.so b/build/exec/anytype-tests_app/anytype-tests.so deleted file mode 100755 index 6403d2da8c513b0e34795bec149e7bceeb72b955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28880 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 PKV$6u?^uNh0P+1d0}Lc^ diff --git a/build/exec/anytype-tests_app/anytype-tests.ss b/build/exec/anytype-tests_app/anytype-tests.ss deleted file mode 100755 index 9cfcfb0..0000000 --- a/build/exec/anytype-tests_app/anytype-tests.ss +++ /dev/null @@ -1,763 +0,0 @@ -#!/usr/bin/chezscheme --program - -;; @generated by Idris 0.7.0, Chez backend -(import (chezscheme)) -(case (machine-type) - [(i3fb ti3fb a6fb ta6fb) #f] - [(i3le ti3le a6le ta6le tarm64le) (load-shared-object "libc.so.6")] - [(i3osx ti3osx a6osx ta6osx tarm64osx) (load-shared-object "libc.dylib")] - [(i3nt ti3nt a6nt ta6nt) (load-shared-object "msvcrt.dll")] - [else (load-shared-object "libc.so")]) - -(load-shared-object "libidris2_support.so") - -(let () -(define (blodwen-os) - (case (machine-type) - [(i3le ti3le a6le ta6le tarm64le) "unix"] ; GNU/Linux - [(i3ob ti3ob a6ob ta6ob tarm64ob) "unix"] ; OpenBSD - [(i3fb ti3fb a6fb ta6fb tarm64fb) "unix"] ; FreeBSD - [(i3nb ti3nb a6nb ta6nb tarm64nb) "unix"] ; NetBSD - [(i3osx ti3osx a6osx ta6osx tarm64osx) "darwin"] - [(i3nt ti3nt a6nt ta6nt tarm64nt) "windows"] - [else "unknown"])) - -(define blodwen-lazy - (lambda (f) - (let ([evaluated #f] [res void]) - (lambda () - (if (not evaluated) - (begin (set! evaluated #t) - (set! res (f)) - (set! f void)) - (void)) - res)))) - -(define (blodwen-toSignedInt x bits) - (if (logbit? bits x) - (logor x (ash -1 bits)) - (logand x (sub1 (ash 1 bits))))) - -(define (blodwen-toUnsignedInt x bits) - (logand x (sub1 (ash 1 bits)))) - -(define (blodwen-euclidDiv a b) - (let ((q (quotient a b)) - (r (remainder a b))) - (if (< r 0) - (if (> b 0) (- q 1) (+ q 1)) - q))) - -(define (blodwen-euclidMod a b) - (let ((r (remainder a b))) - (if (< r 0) - (if (> b 0) (+ r b) (- r b)) - r))) - -; flonum constants - -(define (blodwen-calcFlonumUnitRoundoff) - (let loop [(uro 1.0)] - (if (fl= 1.0 (fl+ 1.0 uro)) - uro - (loop (fl/ uro 2.0))))) - -(define (blodwen-calcFlonumEpsilon) - (fl* (blodwen-calcFlonumUnitRoundoff) 2.0)) - -(define (blodwen-flonumNaN) - +nan.0) - -(define (blodwen-flonumInf) - +inf.0) - -; Bits - -(define bu+ (lambda (x y bits) (blodwen-toUnsignedInt (+ x y) bits))) -(define bu- (lambda (x y bits) (blodwen-toUnsignedInt (- x y) bits))) -(define bu* (lambda (x y bits) (blodwen-toUnsignedInt (* x y) bits))) -(define bu/ (lambda (x y bits) (blodwen-toUnsignedInt (quotient x y) bits))) - -(define bs+ (lambda (x y bits) (blodwen-toSignedInt (+ x y) bits))) -(define bs- (lambda (x y bits) (blodwen-toSignedInt (- x y) bits))) -(define bs* (lambda (x y bits) (blodwen-toSignedInt (* x y) bits))) -(define bs/ (lambda (x y bits) (blodwen-toSignedInt (blodwen-euclidDiv x y) bits))) - -(define (integer->bits8 x) (logand x (sub1 (ash 1 8)))) -(define (integer->bits16 x) (logand x (sub1 (ash 1 16)))) -(define (integer->bits32 x) (logand x (sub1 (ash 1 32)))) -(define (integer->bits64 x) (logand x (sub1 (ash 1 64)))) - -(define (bits16->bits8 x) (logand x (sub1 (ash 1 8)))) -(define (bits32->bits8 x) (logand x (sub1 (ash 1 8)))) -(define (bits64->bits8 x) (logand x (sub1 (ash 1 8)))) -(define (bits32->bits16 x) (logand x (sub1 (ash 1 16)))) -(define (bits64->bits16 x) (logand x (sub1 (ash 1 16)))) -(define (bits64->bits32 x) (logand x (sub1 (ash 1 32)))) - -(define (blodwen-bits-shl-signed x y bits) (blodwen-toSignedInt (ash x y) bits)) - -(define (blodwen-bits-shl x y bits) (logand (ash x y) (sub1 (ash 1 bits)))) - -(define blodwen-shl (lambda (x y) (ash x y))) -(define blodwen-shr (lambda (x y) (ash x (- y)))) -(define blodwen-and (lambda (x y) (logand x y))) -(define blodwen-or (lambda (x y) (logor x y))) -(define blodwen-xor (lambda (x y) (logxor x y))) - -(define cast-num - (lambda (x) - (if (number? x) x 0))) -(define destroy-prefix - (lambda (x) - (cond - ((equal? x "") "") - ((equal? (string-ref x 0) #\#) "") - (else x)))) - -(define exact-floor - (lambda (x) - (inexact->exact (floor x)))) - -(define exact-truncate - (lambda (x) - (inexact->exact (truncate x)))) - -(define exact-truncate-boundedInt - (lambda (x y) - (blodwen-toSignedInt (exact-truncate x) y))) - -(define exact-truncate-boundedUInt - (lambda (x y) - (blodwen-toUnsignedInt (exact-truncate x) y))) - -(define cast-char-boundedInt - (lambda (x y) - (blodwen-toSignedInt (char->integer x) y))) - -(define cast-char-boundedUInt - (lambda (x y) - (blodwen-toUnsignedInt (char->integer x) y))) - -(define cast-string-int - (lambda (x) - (exact-truncate (cast-num (string->number (destroy-prefix x)))))) - -(define cast-string-boundedInt - (lambda (x y) - (blodwen-toSignedInt (cast-string-int x) y))) - -(define cast-string-boundedUInt - (lambda (x y) - (blodwen-toUnsignedInt (cast-string-int x) y))) - -(define cast-int-char - (lambda (x) - (if (or - (and (>= x 0) (<= x #xd7ff)) - (and (>= x #xe000) (<= x #x10ffff))) - (integer->char x) - (integer->char 0)))) - -(define cast-string-double - (lambda (x) - (exact->inexact (cast-num (string->number (destroy-prefix x)))))) - - -(define (string-concat xs) (apply string-append xs)) -(define (string-unpack s) (string->list s)) -(define (string-pack xs) (list->string xs)) - -(define string-cons (lambda (x y) (string-append (string x) y))) -(define string-reverse (lambda (x) - (list->string (reverse (string->list x))))) -(define (string-substr off len s) - (let* ((l (string-length s)) - (b (max 0 off)) - (x (max 0 len)) - (end (min l (+ b x)))) - (if (> b l) - "" - (substring s b end)))) - -(define (blodwen-string-iterator-new s) - 0) - -(define (blodwen-string-iterator-to-string _ s ofs f) - (f (substring s ofs (string-length s)))) - -(define (blodwen-string-iterator-next s ofs) - (if (>= ofs (string-length s)) - '() ; EOF - (cons (string-ref s ofs) (+ ofs 1)))) - -(define either-left - (lambda (x) - (vector 0 x))) - -(define either-right - (lambda (x) - (vector 1 x))) - -(define blodwen-error-quit - (lambda (msg) - (display msg) - (newline) - (exit 1))) - -(define (blodwen-get-line p) - (if (port? p) - (let ((str (get-line p))) - (if (eof-object? str) - "" - str)) - void)) - -(define (blodwen-get-char p) - (if (port? p) - (let ((chr (get-char p))) - (if (eof-object? chr) - #\nul - chr)) - void)) - -;; Buffers - -(define (blodwen-new-buffer size) - (make-bytevector size 0)) - -(define (blodwen-buffer-size buf) - (bytevector-length buf)) - -(define (blodwen-buffer-setbyte buf loc val) - (bytevector-u8-set! buf loc val)) - -(define (blodwen-buffer-getbyte buf loc) - (bytevector-u8-ref buf loc)) - -(define (blodwen-buffer-setbits16 buf loc val) - (bytevector-u16-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getbits16 buf loc) - (bytevector-u16-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setbits32 buf loc val) - (bytevector-u32-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getbits32 buf loc) - (bytevector-u32-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setbits64 buf loc val) - (bytevector-u64-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getbits64 buf loc) - (bytevector-u64-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setint8 buf loc val) - (bytevector-s8-set! buf loc val)) - -(define (blodwen-buffer-getint8 buf loc) - (bytevector-s8-ref buf loc)) - -(define (blodwen-buffer-setint16 buf loc val) - (bytevector-s16-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getint16 buf loc) - (bytevector-s16-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setint32 buf loc val) - (bytevector-s32-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getint32 buf loc) - (bytevector-s32-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setint buf loc val) - (bytevector-s64-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getint buf loc) - (bytevector-s64-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setint64 buf loc val) - (bytevector-s64-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getint64 buf loc) - (bytevector-s64-ref buf loc (native-endianness))) - -(define (blodwen-buffer-setdouble buf loc val) - (bytevector-ieee-double-set! buf loc val (native-endianness))) - -(define (blodwen-buffer-getdouble buf loc) - (bytevector-ieee-double-ref buf loc (native-endianness))) - -(define (blodwen-stringbytelen str) - (bytevector-length (string->utf8 str))) - -(define (blodwen-buffer-setstring buf loc val) - (let* [(strvec (string->utf8 val)) - (len (bytevector-length strvec))] - (bytevector-copy! strvec 0 buf loc len))) - -(define (blodwen-buffer-getstring buf loc len) - (let [(newvec (make-bytevector len))] - (bytevector-copy! buf loc newvec 0 len) - (utf8->string newvec))) - -(define (blodwen-buffer-copydata buf start len dest loc) - (bytevector-copy! buf start dest loc len)) - -;; Threads - -(define-record thread-handle (semaphore)) - -(define (blodwen-thread proc) - (let [(sema (blodwen-make-semaphore 0))] - (fork-thread (lambda () (proc (vector 0)) (blodwen-semaphore-post sema))) - (make-thread-handle sema) - )) - -(define (blodwen-thread-wait handle) - (blodwen-semaphore-wait (thread-handle-semaphore handle))) - -;; Thread mailboxes - -(define blodwen-thread-data - (make-thread-parameter #f)) - -(define (blodwen-get-thread-data ty) - (blodwen-thread-data)) - -(define (blodwen-set-thread-data ty a) - (blodwen-thread-data a)) - -;; Semaphore - -(define-record semaphore (box mutex condition)) - -(define (blodwen-make-semaphore init) - (make-semaphore (box init) (make-mutex) (make-condition))) - -(define (blodwen-semaphore-post sema) - (with-mutex (semaphore-mutex sema) - (let [(sema-box (semaphore-box sema))] - (set-box! sema-box (+ (unbox sema-box) 1)) - (condition-signal (semaphore-condition sema)) - ))) - -(define (blodwen-semaphore-wait sema) - (with-mutex (semaphore-mutex sema) - (let [(sema-box (semaphore-box sema))] - (when (= (unbox sema-box) 0) - (condition-wait (semaphore-condition sema) (semaphore-mutex sema))) - (set-box! sema-box (- (unbox sema-box) 1)) - ))) - -;; Barrier - -(define-record barrier (count-box num-threads mutex cond)) - -(define (blodwen-make-barrier num-threads) - (make-barrier (box 0) num-threads (make-mutex) (make-condition))) - -(define (blodwen-barrier-wait barrier) - (let [(count-box (barrier-count-box barrier)) - (num-threads (barrier-num-threads barrier)) - (mutex (barrier-mutex barrier)) - (condition (barrier-cond barrier))] - (with-mutex mutex - (let* [(count-old (unbox count-box)) - (count-new (+ count-old 1))] - (set-box! count-box count-new) - (if (= count-new num-threads) - (condition-broadcast condition) - (condition-wait condition mutex)) - )))) - -;; Channel -; With thanks to Alain Zscheile (@zseri) for help with understanding condition -; variables, and figuring out where the problems were and how to solve them. - -(define-record channel (read-mut read-cv read-box val-cv val-box)) - -(define (blodwen-make-channel ty) - (make-channel - (make-mutex) - (make-condition) - (box #t) - (make-condition) - (box '()) - )) - -; block on the read status using read-cv until the value has been read -(define (channel-put-while-helper chan) - (let ([read-mut (channel-read-mut chan)] - [read-box (channel-read-box chan)] - [read-cv (channel-read-cv chan)] - ) - (if (unbox read-box) - (void) ; val has been read, so everything is fine - (begin ; otherwise, block/spin with cv - (condition-wait read-cv read-mut) - (channel-put-while-helper chan) - ) - ))) - -(define (blodwen-channel-put ty chan val) - (with-mutex (channel-read-mut chan) - (channel-put-while-helper chan) - (let ([read-box (channel-read-box chan)] - [val-box (channel-val-box chan)] - ) - (set-box! val-box val) - (set-box! read-box #f) - )) - (condition-signal (channel-val-cv chan)) - ) - -; block on the value until it has been set -(define (channel-get-while-helper chan) - (let ([read-mut (channel-read-mut chan)] - [read-box (channel-read-box chan)] - [val-cv (channel-val-cv chan)] - ) - (if (unbox read-box) - (begin - (condition-wait val-cv read-mut) - (channel-get-while-helper chan) - ) - (void) - ))) - -(define (blodwen-channel-get ty chan) - (mutex-acquire (channel-read-mut chan)) - (channel-get-while-helper chan) - (let* ([val-box (channel-val-box chan)] - [read-box (channel-read-box chan)] - [read-cv (channel-read-cv chan)] - [the-val (unbox val-box)] - ) - (set-box! val-box '()) - (set-box! read-box #t) - (mutex-release (channel-read-mut chan)) - (condition-signal read-cv) - the-val)) - -;; Mutex - -(define (blodwen-make-mutex) - (make-mutex)) -(define (blodwen-mutex-acquire mutex) - (mutex-acquire mutex)) -(define (blodwen-mutex-release mutex) - (mutex-release mutex)) - -;; Condition variable - -(define (blodwen-make-condition) - (make-condition)) -(define (blodwen-condition-wait condition mutex) - (condition-wait condition mutex)) -(define (blodwen-condition-wait-timeout condition mutex timeout) - (let* [(sec (div timeout 1000000)) - (micro (mod timeout 1000000))] - (condition-wait condition mutex (make-time 'time-duration (* 1000 micro) sec)))) -(define (blodwen-condition-signal condition) - (condition-signal condition)) -(define (blodwen-condition-broadcast condition) - (condition-broadcast condition)) - -;; Future - -(define-record future-internal (result ready mutex signal)) -(define (blodwen-make-future work) - (let ([future (make-future-internal #f #f (make-mutex) (make-condition))]) - (fork-thread (lambda () - (let ([result (work)]) - (with-mutex (future-internal-mutex future) - (set-future-internal-result! future result) - (set-future-internal-ready! future #t) - (condition-broadcast (future-internal-signal future)))))) - future)) -(define (blodwen-await-future ty future) - (let ([mutex (future-internal-mutex future)]) - (with-mutex mutex - (if (not (future-internal-ready future)) - (condition-wait (future-internal-signal future) mutex)) - (future-internal-result future)))) - -(define (blodwen-sleep s) (sleep (make-time 'time-duration 0 s))) -(define (blodwen-usleep s) - (let ((sec (div s 1000000)) - (micro (mod s 1000000))) - (sleep (make-time 'time-duration (* 1000 micro) sec)))) - -(define (blodwen-clock-time-utc) (current-time 'time-utc)) -(define (blodwen-clock-time-monotonic) (current-time 'time-monotonic)) -(define (blodwen-clock-time-duration) (current-time 'time-duration)) -(define (blodwen-clock-time-process) (current-time 'time-process)) -(define (blodwen-clock-time-thread) (current-time 'time-thread)) -(define (blodwen-clock-time-gccpu) (current-time 'time-collector-cpu)) -(define (blodwen-clock-time-gcreal) (current-time 'time-collector-real)) -(define (blodwen-is-time? clk) (if (time? clk) 1 0)) -(define (blodwen-clock-second time) (time-second time)) -(define (blodwen-clock-nanosecond time) (time-nanosecond time)) - - -(define (blodwen-arg-count) - (length (command-line))) - -(define (blodwen-arg n) - (if (< n (length (command-line))) (list-ref (command-line) n) "")) - -(define (blodwen-hasenv var) - (if (eq? (getenv var) #f) 0 1)) - -;; Randoms -(define random-seed-register 0) -(define (initialize-random-seed-once) - (if (= (virtual-register random-seed-register) 0) - (let ([seed (time-nanosecond (current-time))]) - (set-virtual-register! random-seed-register seed) - (random-seed seed)))) - -(define (blodwen-random-seed seed) - (set-virtual-register! random-seed-register seed) - (random-seed seed)) -(define blodwen-random - (case-lambda - ;; no argument, pick a real value from [0, 1.0) - [() (begin - (initialize-random-seed-once) - (random 1.0))] - ;; single argument k, pick an integral value from [0, k) - [(k) - (begin - (initialize-random-seed-once) - (if (> k 0) - (random k) - (assertion-violationf 'blodwen-random "invalid range argument ~a" k)))])) - -;; For finalisers - -(define blodwen-finaliser (make-guardian)) -(define (blodwen-register-object obj proc) - (let [(x (cons obj proc))] - (blodwen-finaliser x) - x)) -(define blodwen-run-finalisers - (lambda () - (let run () - (let ([x (blodwen-finaliser)]) - (when x - (((cdr x) (car x)) 'erased) - (run)))))) - -;; For creating and reading back scheme objects - -; read a scheme string and evaluate it, returning 'Just result' on success -; TODO: catch exception! -(define (blodwen-eval-scheme str) - (guard - (x [#t '()]) ; Nothing on failure - (box (eval (read (open-input-string str))))) - ); box == Just - -(define (blodwen-eval-okay obj) - (if (null? obj) - 0 - 1)) - -(define (blodwen-get-eval-result obj) - (unbox obj)) - -(define (blodwen-debug-scheme obj) - (display obj) (newline)) - -(define (blodwen-is-number obj) - (if (number? obj) 1 0)) - -(define (blodwen-is-integer obj) - (if (and (number? obj) (exact? obj)) 1 0)) - -(define (blodwen-is-float obj) - (if (flonum? obj) 1 0)) - -(define (blodwen-is-char obj) - (if (char? obj) 1 0)) - -(define (blodwen-is-string obj) - (if (string? obj) 1 0)) - -(define (blodwen-is-procedure obj) - (if (procedure? obj) 1 0)) - -(define (blodwen-is-symbol obj) - (if (symbol? obj) 1 0)) - -(define (blodwen-is-vector obj) - (if (vector? obj) 1 0)) - -(define (blodwen-is-nil obj) - (if (null? obj) 1 0)) - -(define (blodwen-is-pair obj) - (if (pair? obj) 1 0)) - -(define (blodwen-is-box obj) - (if (box? obj) 1 0)) - -(define (blodwen-make-symbol str) - (string->symbol str)) - -; The below rely on checking that the objects are the right type first. - -(define (blodwen-vector-ref obj i) - (vector-ref obj i)) - -(define (blodwen-vector-length obj) - (vector-length obj)) - -(define (blodwen-vector-list obj) - (vector->list obj)) - -(define (blodwen-unbox obj) - (unbox obj)) - -(define (blodwen-apply obj arg) - (obj arg)) - -(define (blodwen-force obj) - (obj)) - -(define (blodwen-read-symbol sym) - (symbol->string sym)) - -(define (blodwen-id x) x) -(define PreludeC-45IO-prim__putStr (lambda (farg-0 farg-1) ((foreign-procedure "idris2_putStr" (string) void) farg-0))) -(define System-prim__exit (lambda (farg-0 farg-1) ((foreign-procedure "exit" (int) void) farg-0))) -(define PreludeC-45IO-u--map_Functor_IO (lambda (arg-2 arg-3 ext-0) (let ((act-2 (arg-3 ext-0))) (arg-2 act-2)))) -(define csegen-6 (vector (lambda (u--b) (lambda (u--a) (lambda (u--func) (lambda (arg-8885) (lambda (eta-0) (PreludeC-45IO-u--map_Functor_IO u--func arg-8885 eta-0)))))) (lambda (u--a) (lambda (arg-9931) (lambda (eta-0) arg-9931))) (lambda (u--b) (lambda (u--a) (lambda (arg-9937) (lambda (arg-9944) (lambda (world-4) (let ((act-5 (arg-9937 world-4))) (let ((act-3 (arg-9944 world-4))) (act-5 act-3)))))))))) -(define TestsC-45Main-dup (vector 3 (vector 0 0) (vector 0 0))) -(define csegen-67 (vector 1 2 (vector 1 ) TestsC-45Main-dup)) -(define csegen-81 (vector 2 csegen-67 (vector 0 0))) -(define TestsC-45Main-two (vector 1 (vector 1 (vector 0 )))) -(define TestsC-45Main-three (vector 1 TestsC-45Main-two)) -(define csegen-107 (vector 7 (vector 2 TestsC-45Main-two TestsC-45Main-three))) -(define u--prim__sub_Integer (lambda (arg-0 arg-1) (- arg-0 arg-1))) -(define PreludeC-45EqOrd-u--C-61C-61_Eq_Bool (lambda (arg-0 arg-1) (cond ((equal? arg-0 1) (cond ((equal? arg-1 1) 1)(else 0))) ((equal? arg-0 0) (cond ((equal? arg-1 0) 1)(else 0)))(else 0)))) -(define PreludeC-45Show-u--show_Show_Bool (lambda (arg-0) (cond ((equal? arg-0 1) "True") (else "False")))) -(define TestsC-45Main-report (lambda (arg-0) (let ((e-2 (car arg-0))) (let ((e-3 (cdr arg-0))) (lambda (clam-0) (let ((e-6 (car e-3))) (let ((e-7 (cdr e-3))) (let ((sc2 (PreludeC-45EqOrd-u--C-61C-61_Eq_Bool e-6 e-7))) (cond ((equal? sc2 1) (PreludeC-45IO-u--map_Functor_IO (lambda (eta-0) 1) (lambda (eta-0) (PreludeC-45IO-prim__putStr (string-append (string-append " PASS " e-2) "\xa;") eta-0)) clam-0)) (else (PreludeC-45IO-u--map_Functor_IO (lambda (eta-0) 0) (lambda (eta-0) (PreludeC-45IO-prim__putStr (string-append (string-append " FAIL " (string-append e-2 (string-append " (expected accept=" (string-append (PreludeC-45Show-u--show_Show_Bool e-6) (string-append ", got accept=" (string-append (PreludeC-45Show-u--show_Show_Bool e-7) ")")))))) "\xa;") eta-0)) clam-0))))))))))) -(define AnytypeC-45GradeC-45Affine-qadd (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 2))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 1) ((equal? arg-1 1) 2) (else 2))) (else (cond ((equal? arg-1 0) 2) ((equal? arg-1 1) 2) (else 2)))))) -(define AnytypeC-45GradeC-45Affine-qaddAssoc (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qaddComm (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (vector 0 )) (else (vector 0 ))))))) -(define PreludeC-45Uninhabited-void (lambda (ext-0) (display "Error: Executed 'void'"))) -(define PreludeC-45Uninhabited-absurd (lambda (arg-2 arg-3) (PreludeC-45Uninhabited-void 'erased))) -(define DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Affine-qaddMono (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 ))))))))))) -(define AnytypeC-45GradeC-45Affine-qaddZeroL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-q0NotQ1 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Affine-q0NotQW (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Affine-q1NotQW (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Affine-qdec (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 (vector 0 ))) ((equal? arg-1 1) (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q0NotQ1 eta-0)))) (else (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q0NotQW eta-0)))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q0NotQ1 (vector 0 ))))) ((equal? arg-1 1) (vector 0 (vector 0 ))) (else (vector 1 (lambda (eta-0) (AnytypeC-45GradeC-45Affine-q1NotQW eta-0)))))) (else (cond ((equal? arg-1 0) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q0NotQW (vector 0 ))))) ((equal? arg-1 1) (vector 1 (lambda (u--p) (AnytypeC-45GradeC-45Affine-q1NotQW (vector 0 ))))) (else (vector 0 (vector 0 )))))))) -(define AnytypeC-45GradeC-45Affine-qdistribL (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qdistribR (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qleq (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 1) ((equal? arg-1 1) 1) (else 1))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 1))) (else (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 0) (else 1)))))) -(define AnytypeC-45GradeC-45Affine-qleqAntisym (lambda (arg-0 arg-1 arg-2 arg-3) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 )) ((equal? arg-1 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) ((equal? arg-1 1) (vector 0 )) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) (else (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) ((equal? arg-1 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-2)) (else (vector 0 ))))))) -(define AnytypeC-45GradeC-45Affine-qleqRefl (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-qleqTrans (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-3)))) (else (cond ((equal? arg-2 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-2 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qmul (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 0) (else 0))) ((equal? arg-0 1) (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 1) (else 2))) (else (cond ((equal? arg-1 0) 0) ((equal? arg-1 1) 2) (else 2)))))) -(define AnytypeC-45GradeC-45Affine-qmulAssoc (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-2 0) (vector 0 )) ((equal? arg-2 1) (vector 0 )) (else (vector 0 ))))))))) -(define AnytypeC-45GradeC-45Affine-qmulMono (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) ((equal? arg-0 1) (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 )))))))) (else (cond ((equal? arg-1 0) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) ((equal? arg-1 1) (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)) (else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-4)))))) (else (cond ((equal? arg-2 0) (cond ((equal? arg-3 0) (vector 0 )) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) ((equal? arg-2 1) (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (vector 0 )) (else (vector 0 )))) (else (cond ((equal? arg-3 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) ((equal? arg-3 1) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (DataC-45So-u--uninhabited_Uninhabited_C-40SoC-32FalseC-41 eta-0)) arg-5)) (else (vector 0 ))))))))))) -(define AnytypeC-45GradeC-45Affine-qmulOneL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-qmulOneR (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-qmulZeroL (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-qmulZeroR (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 )) ((equal? arg-0 1) (vector 0 )) (else (vector 0 ))))) -(define AnytypeC-45GradeC-45Affine-AffineAlgebra (lambda () (vector 0 1 (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qadd eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qmul eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qleq eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qdec eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qaddAssoc eta-0 eta-1 eta-2)))) (lambda (eta-0) (lambda (eta-1) (AnytypeC-45GradeC-45Affine-qaddComm eta-0 eta-1))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qaddZeroL eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qmulAssoc eta-0 eta-1 eta-2)))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulOneL eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulOneR eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulZeroL eta-0)) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qmulZeroR eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qdistribL eta-0 eta-1 eta-2)))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (AnytypeC-45GradeC-45Affine-qdistribR eta-0 eta-1 eta-2)))) (lambda (eta-0) (AnytypeC-45GradeC-45Affine-qleqRefl eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (AnytypeC-45GradeC-45Affine-qleqTrans eta-0 eta-1 eta-2 eta-3 eta-4)))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (AnytypeC-45GradeC-45Affine-qleqAntisym eta-0 eta-1 eta-2 eta-3))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Affine-qaddMono eta-0 eta-1 eta-2 eta-3 eta-4 eta-5))))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Affine-qmulMono eta-0 eta-1 eta-2 eta-3 eta-4 eta-5)))))))))) -(define TestsC-45Main-accepts (lambda (arg-1) (case (vector-ref arg-1 0) ((1) 1) (else 0)))) -(define AnytypeC-45CoreC-45Normalise-nval (lambda (arg-0) (case (vector-ref arg-0 0) ((0) 0) ((1) (let ((e-0 (vector-ref arg-0 1))) (+ (AnytypeC-45CoreC-45Normalise-nval e-0) 1))) ((2) (let ((e-1 (vector-ref arg-0 1))) (let ((e-2 (vector-ref arg-0 2))) (+ (AnytypeC-45CoreC-45Normalise-nval e-1) (AnytypeC-45CoreC-45Normalise-nval e-2))))) (else (let ((e-3 (vector-ref arg-0 1))) (let ((e-4 (vector-ref arg-0 2))) (* (AnytypeC-45CoreC-45Normalise-nval e-3) (AnytypeC-45CoreC-45Normalise-nval e-4)))))))) -(define AnytypeC-45CoreC-45Normalise-tnatOfNat (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else (let ((e-0 (- arg-0 1))) (vector 1 (AnytypeC-45CoreC-45Normalise-tnatOfNat e-0))))))) -(define AnytypeC-45CoreC-45Normalise-nnorm (lambda (ext-0) (AnytypeC-45CoreC-45Normalise-tnatOfNat (AnytypeC-45CoreC-45Normalise-nval ext-0)))) -(define AnytypeC-45CoreC-45Normalise-normalise (lambda (arg-1) (case (vector-ref arg-1 0) ((0) (vector 0 )) ((1) (vector 1 )) ((2) (let ((e-3 (vector-ref arg-1 1))) (vector 2 (AnytypeC-45CoreC-45Normalise-nnorm e-3)))) ((3) (let ((e-5 (vector-ref arg-1 1))) (let ((e-6 (vector-ref arg-1 2))) (let ((e-7 (vector-ref arg-1 3))) (vector 3 e-5 (AnytypeC-45CoreC-45Normalise-normalise e-6) (AnytypeC-45CoreC-45Normalise-normalise e-7)))))) (else (let ((e-9 (vector-ref arg-1 1))) (let ((e-10 (vector-ref arg-1 2))) (vector 4 (AnytypeC-45CoreC-45Normalise-normalise e-9) (AnytypeC-45CoreC-45Normalise-normalise e-10)))))))) -(define AnytypeC-45CoreC-45Conversion-tnatEq (lambda (arg-0 arg-1) (case (vector-ref arg-0 0) ((0) (case (vector-ref arg-1 0) ((0) 1)(else 0))) ((1) (let ((e-0 (vector-ref arg-0 1))) (case (vector-ref arg-1 0) ((1) (let ((e-1 (vector-ref arg-1 1))) (AnytypeC-45CoreC-45Conversion-tnatEq e-0 e-1)))(else 0))))(else 0)))) -(define AnytypeC-45CoreC-45Conversion-structEq (lambda (arg-1 arg-2 arg-3) (case (vector-ref arg-2 0) ((0) (case (vector-ref arg-3 0) ((0) 1)(else 0))) ((1) (case (vector-ref arg-3 0) ((1) 1)(else 0))) ((2) (let ((e-3 (vector-ref arg-2 1))) (case (vector-ref arg-3 0) ((2) (let ((e-14 (vector-ref arg-3 1))) (AnytypeC-45CoreC-45Conversion-tnatEq e-3 e-14)))(else 0)))) ((3) (let ((e-5 (vector-ref arg-2 1))) (let ((e-6 (vector-ref arg-2 2))) (let ((e-7 (vector-ref arg-2 3))) (case (vector-ref arg-3 0) ((3) (let ((e-16 (vector-ref arg-3 1))) (let ((e-17 (vector-ref arg-3 2))) (let ((e-18 (vector-ref arg-3 3))) (let ((e-26 (vector-ref arg-1 5))) (let ((sc2 ((e-26 e-5) e-16))) (case (vector-ref sc2 0) ((0) (let ((sc3 (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-6 e-17))) (cond ((equal? sc3 1) (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-7 e-18)) (else 0)))) (else 0))))))))(else 0)))))) ((4) (let ((e-9 (vector-ref arg-2 1))) (let ((e-10 (vector-ref arg-2 2))) (case (vector-ref arg-3 0) ((4) (let ((e-20 (vector-ref arg-3 1))) (let ((e-21 (vector-ref arg-3 2))) (let ((sc2 (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-9 e-20))) (cond ((equal? sc2 1) (AnytypeC-45CoreC-45Conversion-structEq arg-1 e-10 e-21)) (else 0))))))(else 0)))))(else 0)))) -(define AnytypeC-45CoreC-45Conversion-convertible (lambda (arg-1 arg-2 arg-3) (AnytypeC-45CoreC-45Conversion-structEq arg-1 (AnytypeC-45CoreC-45Normalise-normalise arg-2) (AnytypeC-45CoreC-45Normalise-normalise arg-3)))) -(define DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 (lambda (arg-4 arg-5 arg-6) (if (null? arg-5) '() (let ((e-3 (car arg-5))) (let ((e-4 (cdr arg-5))) (let ((e-8 (car arg-6))) (let ((e-9 (cdr arg-6))) (cons ((arg-4 e-3) e-8) (DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 arg-4 e-4 e-9))))))))) -(define AnytypeC-45CoreC-45Check-addU (lambda (arg-2 ext-0 ext-1) (DataC-45Vect-u--zipWith_Zippable_C-40VectC-32C-36kC-41 (let ((e-3 (vector-ref arg-2 2))) e-3) ext-0 ext-1))) -(define DataC-45Vect-index (lambda (arg-2 arg-3) (cond ((equal? arg-2 0) (let ((e-5 (car arg-3))) e-5))(else (let ((e-2 (- arg-2 1))) (let ((e-10 (cdr arg-3))) (DataC-45Vect-index e-2 e-10))))))) -(define DataC-45Vect-replicate (lambda (arg-1 arg-2) (cond ((equal? arg-1 0) '())(else (let ((e-0 (- arg-1 1))) (cons arg-2 (DataC-45Vect-replicate e-0 arg-2))))))) -(define AnytypeC-45CoreC-45Check-zeroU (lambda (arg-1 arg-2) (DataC-45Vect-replicate arg-2 (let ((e-1 (vector-ref arg-1 0))) e-1)))) -(define AnytypeC-45CoreC-45Check-oneAt (lambda (arg-1 arg-2 arg-3) (cond ((equal? arg-2 0) (blodwen-error-quit "Nat case not covered"))(else (let ((e-0 (- arg-2 1))) (cond ((equal? arg-3 0) (cons (let ((e-2 (vector-ref arg-1 1))) e-2) (AnytypeC-45CoreC-45Check-zeroU arg-1 e-0)))(else (let ((e-3 (- arg-3 1))) (cons (let ((e-1 (vector-ref arg-1 0))) e-1) (AnytypeC-45CoreC-45Check-oneAt arg-1 e-0 e-3)))))))))) -(define DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 (lambda (arg-3 arg-4) (if (null? arg-4) '() (let ((e-3 (car arg-4))) (let ((e-4 (cdr arg-4))) (cons (arg-3 e-3) (DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 arg-3 e-4))))))) -(define AnytypeC-45CoreC-45Check-scaleU (lambda (arg-2 arg-3 ext-0) (DataC-45Vect-u--map_Functor_C-40VectC-32C-36nC-41 (let ((e-4 (vector-ref arg-2 3))) (e-4 arg-3)) ext-0))) -(define PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (lambda (arg-3 arg-4) (case (vector-ref arg-3 0) ((0) (let ((e-2 (vector-ref arg-3 1))) (vector 0 e-2))) (else (let ((e-5 (vector-ref arg-3 1))) (arg-4 e-5)))))) -(define AnytypeC-45CoreC-45Check-infer (lambda (arg-1 arg-2 arg-3 arg-4) (case (vector-ref arg-4 0) ((0) (let ((e-2 (vector-ref arg-4 1))) (vector 1 (cons (DataC-45Vect-index e-2 arg-3) (AnytypeC-45CoreC-45Check-oneAt arg-1 arg-2 e-2))))) ((1) (let ((e-5 (vector-ref arg-4 1))) (let ((e-6 (vector-ref arg-4 2))) (let ((e-7 (vector-ref arg-4 3))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 (+ arg-2 1) (cons e-6 arg-3) e-7) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (let ((e-8 (car e-3))) (let ((e-4 (cdr e-3))) (let ((sc3 (let ((e-25 (vector-ref arg-1 4))) ((e-25 e-8) e-5)))) (cond ((equal? sc3 1) (vector 1 (cons (vector 3 e-5 e-6 e-2) e-4))) (else (vector 0 3)))))))))))))) ((2) (let ((e-10 (vector-ref arg-4 1))) (let ((e-11 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-10) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (case (vector-ref e-2 0) ((3) (let ((e-1 (vector-ref e-2 1))) (let ((e-5 (vector-ref e-2 2))) (let ((e-4 (vector-ref e-2 3))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-check arg-1 arg-2 arg-3 e-11 e-5) (lambda (u--ux) (vector 1 (cons e-4 (AnytypeC-45CoreC-45Check-addU arg-1 e-3 (AnytypeC-45CoreC-45Check-scaleU arg-1 e-1 u--ux))))))))))(else (vector 0 0)))))))))) ((3) (let ((e-14 (vector-ref arg-4 1))) (let ((e-15 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-14) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-15) (lambda (_-1) (let ((e-5 (car _-1))) (let ((e-4 (cdr _-1))) (vector 1 (cons (vector 4 e-2 e-5) (AnytypeC-45CoreC-45Check-addU arg-1 e-3 e-4)))))))))))))) ((4) (let ((e-18 (vector-ref arg-4 1))) (let ((e-19 (vector-ref arg-4 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 e-18) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (case (vector-ref e-2 0) ((4) (let ((e-1 (vector-ref e-2 1))) (let ((e-4 (vector-ref e-2 2))) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 (+ (+ arg-2 1) 1) (cons e-4 (cons e-1 arg-3)) e-19) (lambda (_-1) (let ((e-6 (car _-1))) (let ((e-5 (cdr _-1))) (let ((e-8 (car e-5))) (let ((e-7 (cdr e-5))) (let ((e-10 (car e-7))) (let ((e-9 (cdr e-7))) (let ((sc6 (let ((sc7 (let ((e-29 (vector-ref arg-1 4))) ((e-29 e-10) (let ((e-53 (vector-ref arg-1 1))) e-53))))) (cond ((equal? sc7 1) (let ((e-29 (vector-ref arg-1 4))) ((e-29 e-8) (let ((e-53 (vector-ref arg-1 1))) e-53)))) (else 0))))) (cond ((equal? sc6 1) (vector 1 (cons e-6 (AnytypeC-45CoreC-45Check-addU arg-1 e-3 e-9)))) (else (vector 0 3)))))))))))))))(else (vector 0 1)))))))))) ((5) (vector 1 (cons (vector 0 ) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))) ((6) (vector 1 (cons (vector 1 ) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))) (else (let ((e-27 (vector-ref arg-4 1))) (vector 1 (cons (vector 2 e-27) (AnytypeC-45CoreC-45Check-zeroU arg-1 arg-2)))))))) -(define AnytypeC-45CoreC-45Check-check (lambda (arg-1 arg-2 arg-3 arg-4 arg-5) (PreludeC-45Types-u--C-62C-62C-61_Monad_C-40EitherC-32C-36eC-41 (AnytypeC-45CoreC-45Check-infer arg-1 arg-2 arg-3 arg-4) (lambda (_-0) (let ((e-2 (car _-0))) (let ((e-3 (cdr _-0))) (let ((sc1 (AnytypeC-45CoreC-45Conversion-convertible arg-1 e-2 arg-5))) (cond ((equal? sc1 1) (vector 1 e-3)) (else (vector 0 2)))))))))) -(define AnytypeC-45Kernel-checkAgainst (lambda (arg-1 arg-2 arg-3) (let ((sc0 (AnytypeC-45CoreC-45Check-check arg-1 0 '() arg-2 arg-3))) (case (vector-ref sc0 0) ((0) (let ((e-2 (vector-ref sc0 1))) (vector 0 e-2))) (else (vector 1 (vector 0 ))))))) -(define Builtin-fst (lambda (arg-2) (let ((e-2 (car arg-2))) e-2))) -(define AnytypeC-45Kernel-checkClosed (lambda (arg-1 arg-2) (let ((sc0 (AnytypeC-45CoreC-45Check-infer arg-1 0 '() arg-2))) (case (vector-ref sc0 0) ((0) (let ((e-2 (vector-ref sc0 1))) (vector 0 e-2))) (else (let ((e-5 (vector-ref sc0 1))) (vector 1 (AnytypeC-45CoreC-45Normalise-normalise (Builtin-fst e-5))))))))) -(define TestsC-45Main-four (vector 1 TestsC-45Main-three)) -(define TestsC-45Main-five (vector 1 TestsC-45Main-four)) -(define TestsC-45Main-affineCases (lambda () (cons (cons "affine: use once at 1" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 1 ) (vector 0 0)))))) (cons (cons "affine: drop at 1 (weakening allowed)" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 1 ) (vector 5 )))))) (cons (cons "affine: double use at 1" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 1 ) TestsC-45Main-dup))))) (cons (cons "affine: double use at omega" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) csegen-67)))) (cons (cons "affine: erased binder unused" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 0 (vector 1 ) (vector 5 )))))) (cons (cons "affine: erased binder used" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 0 (vector 1 ) (vector 0 0)))))) (cons (cons "affine: omega-arrow scales usage past 1 (BUG-001 rule)" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 1 ) csegen-81))))) (cons (cons "affine: omega-arrow scaling admitted at omega" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 2 (vector 1 ) csegen-81))))) (cons (cons "affine: let-pair, each component once" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 4 (vector 1 ) (vector 0 )) (vector 4 (vector 0 0) (vector 3 (vector 0 1) (vector 0 0)))))))) (cons (cons "affine: let-pair, first component twice" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 1 1 (vector 4 (vector 1 ) (vector 0 )) (vector 4 (vector 0 0) (vector 3 (vector 0 1) (vector 0 1)))))))) (cons (cons "affine: conversion Bits(2+3) against Bits 5" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkAgainst (AnytypeC-45GradeC-45Affine-AffineAlgebra) csegen-107 (vector 2 TestsC-45Main-five))))) (cons (cons "affine: conversion Bits(2+2) against Bits 5" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkAgainst (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 7 (vector 2 TestsC-45Main-two TestsC-45Main-two)) (vector 2 TestsC-45Main-five))))) (cons (cons "affine: application converts Bits(2+3) argument at Bits 5" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Affine-AffineAlgebra) (vector 2 (vector 1 1 (vector 2 TestsC-45Main-five) (vector 0 0)) csegen-107))))) '()))))))))))))))) -(define AnytypeC-45GradeC-45Exact-eqRefl (lambda (arg-0) (vector 0 ))) -(define AnytypeC-45GradeC-45Exact-addMonoC-39 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (AnytypeC-45GradeC-45Exact-eqRefl (+ arg-1 arg-3)))) -(define AnytypeC-45GradeC-45Exact-eqTrans (lambda (arg-0 arg-1 arg-2 arg-3 arg-4) (AnytypeC-45GradeC-45Exact-eqRefl arg-2))) -(define AnytypeC-45GradeC-45Exact-mulMonoC-39 (lambda (arg-0 arg-1 arg-2 arg-3 arg-4 arg-5) (AnytypeC-45GradeC-45Exact-eqRefl (* arg-1 arg-3)))) -(define PreludeC-45Basics-irrelevantEq (vector 0 )) -(define DataC-45Nat-multAssociative (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-multDistributesOverPlusLeft (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-multDistributesOverPlusRight (lambda (arg-0 arg-1 arg-2) PreludeC-45Basics-irrelevantEq)) -(define DataC-45Nat-plusZeroRightNeutral (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-multOneLeftNeutral (lambda (arg-0) (DataC-45Nat-plusZeroRightNeutral arg-0))) -(define DataC-45Nat-multOneRightNeutral (lambda (arg-0) PreludeC-45Basics-irrelevantEq)) -(define DataC-45Nat-multZeroLeftZero (lambda (arg-0) (vector 0 ))) -(define DataC-45Nat-multZeroRightZero (lambda (arg-0) (cond ((equal? arg-0 0) (vector 0 ))(else (let ((e-0 (- arg-0 1))) (DataC-45Nat-multZeroRightZero e-0)))))) -(define DataC-45Nat-plusAssociative (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (vector 0 ))(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-plusCommutative (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) PreludeC-45Basics-irrelevantEq)(else PreludeC-45Basics-irrelevantEq)))) -(define DataC-45Nat-plusZeroLeftNeutral (lambda (arg-0) (vector 0 ))) -(define PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define AnytypeC-45GradeC-45Exact-natEqSound (lambda (arg-0 arg-1 arg-2) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 ))(else (PreludeC-45Uninhabited-absurd (lambda (eta-0) (PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 eta-0)) arg-2))))(else (cond ((equal? arg-1 0) (PreludeC-45Uninhabited-absurd (lambda (eta-0) (PreludeC-45Uninhabited-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32FalseC-41C-32TrueC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32FalseC-41C-32TrueC-41C-124C-41 eta-0)) arg-2))(else (vector 0 ))))))) -(define DataC-45So-soToEq (lambda (arg-1) (vector 0 ))) -(define AnytypeC-45GradeC-45Exact-soSound (lambda (arg-0 arg-1 arg-2) (AnytypeC-45GradeC-45Exact-natEqSound arg-0 arg-1 (DataC-45So-soToEq arg-2)))) -(define DecidableC-45EqualityC-45Core-decEqCong (lambda (arg-6) (case (vector-ref arg-6 0) ((0) (vector 0 (vector 0 ))) (else (let ((e-3 (vector-ref arg-6 1))) (vector 1 (lambda (u--c) (e-3 PreludeC-45Basics-irrelevantEq)))))))) -(define DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-124C-41 (lambda (arg-0) (blodwen-error-quit "No clauses"))) -(define DecidableC-45Equality-u--decEq_DecEq_Nat (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) (vector 0 (vector 0 )))(else (vector 1 (lambda (eta-0) (PreludeC-45Uninhabited-absurd (lambda (eta-1) (DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32ZC-41C-32C-40SC-32C-36nC-41C-41C-124C-41 eta-1)) eta-0))))))(else (let ((e-0 (- arg-0 1))) (cond ((equal? arg-1 0) (vector 1 (lambda (eta-0) (PreludeC-45Uninhabited-absurd (lambda (eta-1) (DataC-45Nat-u--uninhabited_Uninhabited_C-40C-124C-40C-40BuiltinC-46C-40C-61C-61C-61C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-44C-40C-40BuiltinC-46C-40C-126C-61C-126C-41C-32C-40SC-32C-36nC-41C-41C-32ZC-41C-124C-41 eta-1)) eta-0))))(else (let ((e-2 (- arg-1 1))) (DecidableC-45EqualityC-45Core-decEqCong (DecidableC-45Equality-u--decEq_DecEq_Nat e-0 e-2)))))))))) -(define AnytypeC-45GradeC-45Exact-ExactAlgebra (lambda () (vector 0 1 (lambda (eta-0) (lambda (eta-1) (+ eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (* eta-0 eta-1))) (lambda (eta-0) (lambda (eta-1) (or (and (= eta-0 eta-1) 1) 0))) (lambda (eta-0) (lambda (eta-1) (DecidableC-45Equality-u--decEq_DecEq_Nat eta-0 eta-1))) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-plusAssociative u--a u--b u--c)))) (lambda (eta-0) (lambda (eta-1) (DataC-45Nat-plusCommutative eta-0 eta-1))) (lambda (eta-0) (DataC-45Nat-plusZeroLeftNeutral eta-0)) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multAssociative u--a u--b u--c)))) (lambda (eta-0) (DataC-45Nat-multOneLeftNeutral eta-0)) (lambda (eta-0) (DataC-45Nat-multOneRightNeutral eta-0)) (lambda (eta-0) (DataC-45Nat-multZeroLeftZero eta-0)) (lambda (eta-0) (DataC-45Nat-multZeroRightZero eta-0)) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multDistributesOverPlusRight u--a u--b u--c)))) (lambda (u--a) (lambda (u--b) (lambda (u--c) (DataC-45Nat-multDistributesOverPlusLeft u--a u--b u--c)))) (lambda (eta-0) (AnytypeC-45GradeC-45Exact-eqRefl eta-0)) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (AnytypeC-45GradeC-45Exact-eqTrans eta-0 eta-1 eta-2 eta-3 eta-4)))))) (lambda (u--a) (lambda (u--b) (lambda (u--s1) (lambda (_-3986) (AnytypeC-45GradeC-45Exact-soSound u--a u--b u--s1))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Exact-addMonoC-39 eta-0 eta-1 eta-2 eta-3 eta-4 eta-5))))))) (lambda (eta-0) (lambda (eta-1) (lambda (eta-2) (lambda (eta-3) (lambda (eta-4) (lambda (eta-5) (AnytypeC-45GradeC-45Exact-mulMonoC-39 eta-0 eta-1 eta-2 eta-3 eta-4 eta-5)))))))))) -(define TestsC-45Main-exactCases (lambda () (cons (cons "exact: use once at 1" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 1 (vector 1 ) (vector 0 0)))))) (cons (cons "exact: drop at 1 REJECTED (the discipline split)" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 1 (vector 1 ) (vector 5 )))))) (cons (cons "exact: double use at 1" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 1 (vector 1 ) TestsC-45Main-dup))))) (cons (cons "exact: double use at exactly 2" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 2 (vector 1 ) TestsC-45Main-dup))))) (cons (cons "exact: zero binder unused" (cons 1 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 0 (vector 1 ) (vector 5 )))))) (cons (cons "exact: zero binder used" (cons 0 (TestsC-45Main-accepts (AnytypeC-45Kernel-checkClosed (AnytypeC-45GradeC-45Exact-ExactAlgebra) (vector 1 0 (vector 1 ) (vector 0 0)))))) '())))))))) -(define System-exitWith (lambda (arg-2 arg-3) (if (null? arg-3) (let ((e-2 (cdr arg-2))) ((e-2 'erased) (lambda (eta-0) (System-prim__exit 0 eta-0)))) (let ((e-0 (car arg-3))) (let ((e-2 (cdr arg-2))) ((e-2 'erased) (lambda (eta-0) (System-prim__exit e-0 eta-0)))))))) -(define System-exitFailure (lambda (arg-2) (System-exitWith arg-2 (cons 1 (vector 0 ))))) -(define PreludeC-45TypesC-45SnocList-C-60C-62C-62 (lambda (arg-1 arg-2) (if (null? arg-1) arg-2 (let ((e-2 (car arg-1))) (let ((e-3 (cdr arg-1))) (PreludeC-45TypesC-45SnocList-C-60C-62C-62 e-2 (cons e-3 arg-2))))))) -(define PreludeC-45TypesC-45List-filterAppend (lambda (arg-1 arg-2 arg-3) (if (null? arg-3) (PreludeC-45TypesC-45SnocList-C-60C-62C-62 arg-1 '()) (let ((e-1 (car arg-3))) (let ((e-2 (cdr arg-3))) (let ((sc1 (arg-2 e-1))) (cond ((equal? sc1 1) (PreludeC-45TypesC-45List-filterAppend (cons arg-1 e-1) arg-2 e-2)) (else (PreludeC-45TypesC-45List-filterAppend arg-1 arg-2 e-2))))))))) -(define PreludeC-45TypesC-45List-lengthPlus (lambda (arg-1 arg-2) (if (null? arg-2) arg-1 (let ((e-3 (cdr arg-2))) (PreludeC-45TypesC-45List-lengthPlus (+ arg-1 1) e-3))))) -(define PreludeC-45TypesC-45List-lengthTR (lambda (ext-0) (PreludeC-45TypesC-45List-lengthPlus 0 ext-0))) -(define PreludeC-45TypesC-45List-reverseOnto (lambda (arg-1 arg-2) (if (null? arg-2) arg-1 (let ((e-2 (car arg-2))) (let ((e-3 (cdr arg-2))) (PreludeC-45TypesC-45List-reverseOnto (cons e-2 arg-1) e-3)))))) -(define PreludeC-45TypesC-45List-reverse (lambda (ext-0) (PreludeC-45TypesC-45List-reverseOnto '() ext-0))) -(define PreludeC-45TypesC-45List-tailRecAppend (lambda (arg-1 arg-2) (PreludeC-45TypesC-45List-reverseOnto arg-2 (PreludeC-45TypesC-45List-reverse arg-1)))) -(define PreludeC-45Interfaces-when (lambda (arg-1 arg-2 arg-3) (cond ((equal? arg-2 1) (arg-3)) (else (let ((e-2 (vector-ref arg-1 1))) ((e-2 'erased) (vector 0 ))))))) -(define PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) (cond ((equal? arg-1 0) 1)(else 0))) ((equal? arg-0 1) (cond ((equal? arg-1 1) 1)(else 0))) ((equal? arg-0 2) (cond ((equal? arg-1 2) 1)(else 0)))(else 0)))) -(define PreludeC-45EqOrd-u--C-60_Ord_Integer (lambda (arg-0 arg-1) (let ((sc0 (or (and (< arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-61C-61_Eq_Integer (lambda (arg-0 arg-1) (let ((sc0 (or (and (= arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--compare_Ord_Integer (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-60_Ord_Integer arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else (let ((sc1 (PreludeC-45EqOrd-u--C-61C-61_Eq_Integer arg-0 arg-1))) (cond ((equal? sc1 1) 1) (else 2)))))))) -(define PreludeC-45Types-u--C-62_Ord_Nat (lambda (arg-0 arg-1) (PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering (PreludeC-45EqOrd-u--compare_Ord_Integer arg-0 arg-1) 2))) -(define PreludeC-45Show-firstCharIs (lambda (arg-0 arg-1) (cond ((equal? arg-1 "") 0)(else (arg-0 (string-ref arg-1 0)))))) -(define PreludeC-45Show-showParens (lambda (arg-0 arg-1) (cond ((equal? arg-0 0) arg-1) (else (string-append "(" (string-append arg-1 ")")))))) -(define PreludeC-45EqOrd-u--C-61C-61_Eq_Char (lambda (arg-0 arg-1) (let ((sc0 (or (and (char=? arg-0 arg-1) 1) 0))) (cond ((equal? sc0 0) 0)(else 1))))) -(define PreludeC-45EqOrd-u--C-47C-61_Eq_Ordering (lambda (arg-0 arg-1) (let ((sc0 (PreludeC-45EqOrd-u--C-61C-61_Eq_Ordering arg-0 arg-1))) (cond ((equal? sc0 1) 0) (else 1))))) -(define PreludeC-45Show-precCon (lambda (arg-0) (case (vector-ref arg-0 0) ((0) 0) ((1) 1) ((2) 2) ((3) 3) ((4) 4) ((5) 5) (else 6)))) -(define PreludeC-45Show-u--compare_Ord_Prec (lambda (arg-0 arg-1) (case (vector-ref arg-0 0) ((4) (let ((e-0 (vector-ref arg-0 1))) (case (vector-ref arg-1 0) ((4) (let ((e-1 (vector-ref arg-1 1))) (PreludeC-45EqOrd-u--compare_Ord_Integer e-0 e-1)))(else (PreludeC-45EqOrd-u--compare_Ord_Integer (PreludeC-45Show-precCon arg-0) (PreludeC-45Show-precCon arg-1))))))(else (PreludeC-45EqOrd-u--compare_Ord_Integer (PreludeC-45Show-precCon arg-0) (PreludeC-45Show-precCon arg-1)))))) -(define PreludeC-45Show-u--C-62C-61_Ord_Prec (lambda (arg-0 arg-1) (PreludeC-45EqOrd-u--C-47C-61_Eq_Ordering (PreludeC-45Show-u--compare_Ord_Prec arg-0 arg-1) 0))) -(define PreludeC-45Show-primNumShow (lambda (arg-1 arg-2 arg-3) (let ((u--str (arg-1 arg-3))) (PreludeC-45Show-showParens (let ((sc0 (PreludeC-45Show-u--C-62C-61_Ord_Prec arg-2 (vector 5 )))) (cond ((equal? sc0 1) (PreludeC-45Show-firstCharIs (lambda (arg-0) (PreludeC-45EqOrd-u--C-61C-61_Eq_Char arg-0 #\-)) u--str)) (else 0))) u--str)))) -(define PreludeC-45Show-u--showPrec_Show_Integer (lambda (ext-0 ext-1) (PreludeC-45Show-primNumShow (lambda (eta-0) (number->string eta-0)) ext-0 ext-1))) -(define PreludeC-45Show-u--show_Show_Integer (lambda (arg-0) (PreludeC-45Show-u--showPrec_Show_Integer (vector 0 ) arg-0))) -(define PreludeC-45Show-u--show_Show_Nat (lambda (arg-0) (PreludeC-45Show-u--show_Show_Integer arg-0))) -(define PreludeC-45Types-u--traverse_Traversable_List (lambda (arg-3 arg-4 arg-5) (if (null? arg-5) (let ((e-2 (vector-ref arg-3 1))) ((e-2 'erased) '())) (let ((e-2 (car arg-5))) (let ((e-3 (cdr arg-5))) (let ((e-4 (vector-ref arg-3 2))) ((((e-4 'erased) 'erased) (let ((e-6 (vector-ref arg-3 2))) ((((e-6 'erased) 'erased) (let ((e-10 (vector-ref arg-3 1))) ((e-10 'erased) (lambda (eta-0) (lambda (eta-1) (cons eta-0 eta-1)))))) (arg-4 e-2)))) (PreludeC-45Types-u--traverse_Traversable_List arg-3 arg-4 e-3)))))))) -(define TestsC-45Main-main (lambda (ext-0) (let ((act-1 (PreludeC-45IO-prim__putStr "=== anytype kernel golden matrix ===\xa;" ext-0))) (let ((act-2 ((PreludeC-45Types-u--traverse_Traversable_List csegen-6 (lambda (eta-0) (TestsC-45Main-report eta-0)) (PreludeC-45TypesC-45List-tailRecAppend (TestsC-45Main-affineCases) (TestsC-45Main-exactCases))) ext-0))) (let ((u--bad (PreludeC-45TypesC-45List-lengthTR (PreludeC-45TypesC-45List-filterAppend '() (lambda (eta-0) (cond ((equal? eta-0 1) 0) (else 1))) act-2)))) (let ((act-3 (PreludeC-45IO-prim__putStr (string-append (string-append "=== " (string-append (PreludeC-45Show-u--show_Show_Nat (PreludeC-45TypesC-45List-lengthTR act-2)) (string-append " cases, " (string-append (PreludeC-45Show-u--show_Show_Nat u--bad) " failure(s) ===")))) "\xa;") ext-0))) ((PreludeC-45Interfaces-when csegen-6 (PreludeC-45Types-u--C-62_Ord_Nat u--bad 0) (lambda () (System-exitFailure (cons (vector csegen-6 (lambda (u--b) (lambda (u--a) (lambda (arg-10411) (lambda (arg-10414) (lambda (world-0) (let ((act-4 (arg-10411 world-0))) ((arg-10414 act-4) world-0))))))) (lambda (u--a) (lambda (arg-10425) (lambda (world-0) (let ((act-4 (arg-10425 world-0))) (act-4 world-0)))))) (lambda (u--a) (lambda (arg-13095) arg-13095)))))) ext-0))))))) -(define PreludeC-45Types-prim__integerToNat (lambda (arg-0) (let ((sc0 (or (and (<= 0 arg-0) 1) 0))) (cond ((equal? sc0 0) 0)(else arg-0))))) -(define PreludeC-45EqOrd-compareInteger (lambda (ext-0 ext-1) (PreludeC-45EqOrd-u--compare_Ord_Integer ext-0 ext-1))) -(define PrimIO-unsafeCreateWorld (lambda (arg-1) (arg-1 #f))) -(define PrimIO-unsafePerformIO (lambda (arg-1) (PrimIO-unsafeCreateWorld (lambda (u--w) (let ((eff-0 (arg-1 u--w))) eff-0))))) -(collect-request-handler (lambda () (collect) (blodwen-run-finalisers))) -(PrimIO-unsafePerformIO (lambda (eta-0) (TestsC-45Main-main eta-0))) - (collect 4) - (blodwen-run-finalisers) - - ) \ No newline at end of file diff --git a/build/exec/anytype-tests_app/compileChez b/build/exec/anytype-tests_app/compileChez deleted file mode 100755 index 814d2ed..0000000 --- a/build/exec/anytype-tests_app/compileChez +++ /dev/null @@ -1 +0,0 @@ -(parameterize ([optimize-level 3] [compile-file-message #f]) (compile-program "/home/hyperpolymath/developer/hyper-repos/_LANGUAGES _SET/anytype/.claude/worktrees/anytype-mvp-kernel/build/exec/anytype-tests_app/anytype-tests.ss")) \ No newline at end of file diff --git a/build/exec/anytype-tests_app/libidris2_support.so b/build/exec/anytype-tests_app/libidris2_support.so deleted file mode 100644 index 8c45d9fb9f1e7d1d52f644f6c20f46ed0bf4ead8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50080 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 bRYx(d>Q}P#8OTuOAOEeC_(%ydHJ1NB$wCl!