1
0
mirror of https://github.com/nmvdw/HITs-Examples synced 2025-11-03 15:13:51 +01:00

Added Agda code for some HITs

This commit is contained in:
Niels
2017-05-22 16:46:58 +02:00
parent 27d78e1e75
commit b85976a96d
12 changed files with 900 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
{-# OPTIONS --without-K --rewriting #-}
open import HoTT
module Expressions where
private
data Exp' : Set where
value : Nat -> Exp'
addition : Exp' -> Exp' -> Exp'
Exp : Set
Exp = Exp'
val : Nat -> Exp
val = value
plus : Exp -> Exp -> Exp
plus = addition
postulate
add : (n m : Nat) -> plus (val n) (val m) == val (n + m)
trunc : is-set Exp
Exp-ind : (C : Exp -> Set)
-> (vC : (n : Nat) -> C (val n))
-> (pC : (e₁ e₂ : Exp) -> C e₁ -> C e₂ -> C(plus e₁ e₂))
-> (addC : (n m : Nat) -> PathOver C (add n m) (pC (val n) (val m) (vC n) (vC m)) (vC (n + m)))
-> (t : (e : Exp) -> is-set (C e))
-> (x : Exp) -> C x
Exp-ind C vC pC addC t (value n) = vC n
Exp-ind C vC pC addC t (addition e₁ e₂) = pC e₁ e₂ (Exp-ind C vC pC addC t e₁) (Exp-ind C vC pC addC t e₂)
postulate
Exp-ind-βadd : (C : Exp -> Set)
-> (vC : (n : Nat) -> C (val n))
-> (pC : (e₁ e₂ : Exp) -> C e₁ -> C e₂ -> C(plus e₁ e₂))
-> (addC : (n m : Nat) -> PathOver C (add n m) (pC (val n) (val m) (vC n) (vC m)) (vC (n + m)))
-> (t : (e : Exp) -> is-set (C e))
-> (n m : Nat)
-> apd (Exp-ind C vC pC addC t) (add n m) == addC n m
Exp-rec : {C : Set}
-> (vC : Nat -> C)
-> (pC : C -> C -> C)
-> (addC : (n m : Nat) -> pC (vC n) (vC m) == vC (n + m))
-> (t : is-set C)
-> Exp -> C
Exp-rec vC pC addC t (value n) = vC n
Exp-rec vC pC addC t (addition e₁ e₂) = pC (Exp-rec vC pC addC t e₁) (Exp-rec vC pC addC t e₂)
postulate
Exp-rec-βadd : {C : Set}
-> (vC : Nat -> C)
-> (pC : C -> C -> C)
-> (addC : (n m : Nat) -> pC (vC n) (vC m) == vC (n + m))
-> (t : is-set C)
-> (n m : Nat)
-> ap (Exp-rec vC pC addC t) (add n m) == addC n m

View File

@@ -0,0 +1,16 @@
{-# OPTIONS --without-K --rewriting #-}
open import HoTT
open import Expressions
module Thms where
value : (e : Exp) -> Σ Nat (\n -> e == val n)
value = Exp-ind
(\e -> Σ Nat (\n -> e == val n))
(\n -> n , idp)
(\e₁ e₂ v₁ v₂ -> fst v₁ + fst v₂ ,
(ap (\e -> plus e e₂) (snd v₁) ap (plus (val (fst v₁))) (snd v₂)) add (fst v₁) (fst v₂)
)
(\n m -> from-transp! (\e -> Σ Nat (\n -> e == val n)) (add n m) (pair= {!!} {!!}))
(\e -> {!!})