proposition: Lemma typing_functional {Gamma P t t'} : typing Gamma P t -> typing Gamma P t' -> t = t'.
proof: Proof. elim: P Gamma t t'. - move=> > /typingE + /typingE. by congruence. - move=> P IHP Q IHQ > /typingE [?] [/IHP {}IHP /IHQ {}IHQ]. move=> /typingE [?] [/IHP {}IHP /IHQ {}IHQ]. by congruence. - move=> > IH > /typingE [?] [-> /IH {}IH]. move=> /typingE [?] [-> /IH]. by congruence. - move=> > IH > /typingE [?] [-> /IH {}IH]. move=> /typingE [?] [-> /IH]. by congruence. - move=> > IH > /typingE [?] [-> /IH {}IH]. move=> /typingE [?] [-> /IH]. by congruence. Qed.
imports: List Lia Undecidability.SystemF.SysF Undecidability.SystemF.Autosubst.syntax Undecidability.SystemF.Autosubst.unscoped Undecidability.SystemF.Util(Facts poly_type_facts term_facts) ssreflect ssrbool ssrfun