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:
59
Agda-HITs/Expressions/Expressions.agda
Normal file
59
Agda-HITs/Expressions/Expressions.agda
Normal 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
|
||||
16
Agda-HITs/Expressions/Thms.agda
Normal file
16
Agda-HITs/Expressions/Thms.agda
Normal 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 -> {!!})
|
||||
Reference in New Issue
Block a user