Skip to content

Instantly share code, notes, and snippets.

@Lysxia
Created February 15, 2019 02:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lysxia/ae6cd8e64e9e7c9b03a8088b26e3f270 to your computer and use it in GitHub Desktop.
Save Lysxia/ae6cd8e64e9e7c9b03a8088b26e3f270 to your computer and use it in GitHub Desktop.
Axiom bu : bool = unit.
Definition f : bool -> unit :=
match bu in _ = b return bool -> b with
| eq_refl => fun x => x
end.
Definition g : unit -> bool :=
match bu in _ = b return b -> bool with
| eq_refl => fun x => x
end.
Definition fg (x : bool) : g (f x) = x :=
match bu as bu return (match bu in _ = b return b -> bool with
| eq_refl => fun x => x
end) ((match bu in _ = b return bool -> b with
| eq_refl => fun x => x
end) x) = x with
| eq_refl => eq_refl
end.
Goal False.
pose proof (fg false) as H1.
pose proof (fg true) as H2.
destruct (f _).
destruct (f _).
rewrite H2 in H1.
discriminate.
Qed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment