Skip to content

Instantly share code, notes, and snippets.

@MarcelineVQ
Created January 16, 2019 19:32
Show Gist options
  • Save MarcelineVQ/f0d26eb03ed0d842f28cb43050a2ac59 to your computer and use it in GitHub Desktop.
Save MarcelineVQ/f0d26eb03ed0d842f28cb43050a2ac59 to your computer and use it in GitHub Desktop.
combine_odd_even' : (podd, peven : Nat -> Type) -> (Nat -> Type)
combine_odd_even' podd peven n with (evenb n)
combine_odd_even' podd peven n | False = podd n
combine_odd_even' podd peven n | True = peven n
combine_odd_even_intro : (n : Nat) ->
(oddb n = True -> podd n) ->
(oddb n = False -> peven n) ->
combine_odd_even' podd peven n
combine_odd_even_intro k f g with (evenb k)
combine_odd_even_intro k f g | False = f Refl
combine_odd_even_intro k f g | True = g Refl
combine_odd_even_elim_odd : (n : Nat) ->
combine_odd_even' podd peven n ->
oddb n = True ->
podd n
combine_odd_even_elim_odd n x prf with (evenb n)
combine_odd_even_elim_odd _ _ Refl | True impossible
combine_odd_even_elim_odd n x prf | False = x
combine_odd_even_elim_even : (n : Nat) ->
combine_odd_even' podd peven n ->
oddb n = False ->
peven n
combine_odd_even_elim_even n x prf with (evenb n)
combine_odd_even_elim_even n x prf | True = x
combine_odd_even_elim_even _ _ Refl | False impossible
@MarcelineVQ
Copy link
Author

combine_odd_even : (podd, peven : Nat -> Type) -> (Nat -> Type)
combine_odd_even podd peven Z = peven Z
combine_odd_even podd peven (S Z) = podd (S Z)
combine_odd_even podd peven (S (S k)) = combine_odd_even podd peven k

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment