Mercurial > hg > Members > atton > agda > systemF
view int.agda @ 27:7b0f2025112b
Define Add on Int
author | Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 28 Apr 2014 11:30:09 +0900 |
parents | |
children | 02926d953ef7 |
line wrap: on
line source
module int where open import Relation.Binary.PropositionalEquality open import Level open import systemF -- define values one : {l : Level} {U : Set l} -> Int {l} {U} one = S O two : {l : Level} {U : Set l} -> Int {l} {U} two = S (S O) three : {l : Level} {U : Set l} -> Int {l} {U} three = S (S (S O)) four : {l : Level} {U : Set l} -> Int {l} {U} four = S (S (S (S O))) five : {l : Level} {U : Set l} -> Int {l} {U} five = S (S (S (S (S O)))) six : {l : Level} {U : Set l} -> Int {l} {U} six = S (S (S (S (S (S O))))) seven : {l : Level} {U : Set l} -> Int {l} {U} seven = S (S (S (S (S (S (S O)))))) eight : {l : Level} {U : Set l} -> Int {l} {U} eight = S (S (S (S (S (S (S (S O))))))) nine : {l : Level} {U : Set l} -> Int {l} {U} nine = S (S (S (S (S (S (S (S (S O)))))))) ten : {l : Level} {U : Set l} -> Int {l} {U} ten = S (S (S (S (S (S (S (S (S O)))))))) -- add add : {l : Level} {U : Set l} -> Int -> Int -> Int add {l} {U} a b = \(x : U) -> \(y : (U -> U)) -> a (b x y) y add-r : {l : Level} {U : Set l} -> Int -> Int -> Int add-r {l} {U} a b = R a (\x -> \n -> S x) b lemma-same-add : {l : Level} {U : Set l} -> add ≡ add-r {l} {U} lemma-same-add = refl lemma-add-zero-zero : {l : Level} {U : Set l} -> add O O ≡ O {_} {U} lemma-add-zero-zero = refl lemma-add-one-two : {l : Level} {U : Set l} -> add one two ≡ three {_} {U} lemma-add-one-two = refl --lemma-add-swap : {l : Level} {U : Set l} {a b : Int} -> add a b ≡ add b a --lemma-add-swap = refl