fact: Fixpoint args_for_requivT {t1 t2} (e1 : args_for var1' t1) (e2 : args_for var2' t2) : option pointed_Prop := match e1, e2 with | noargs T1, noargs T2 => if SimpleTypeCode_beq T1 T2 then Some trivial else None | noargs _, _ => None | an_arg tx txs x xs, an_arg ty tys y ys => match TypeCode_beq tx ty, f x y, @args_for_requivT _ _ xs ys with | true, Some p, Some q => Some (p /\ q)%pointed_prop | _, _, _ => None end | an_arg _ _ _ _, _ => None end.
imports: Coq.Lists.List Coq.Arith.EqNat Coq.Logic.Eqdep_dec Fiat.Parsers.Reflective.Syntax Fiat.Parsers.Reflective.SyntaxEquality Fiat.Parsers.Reflective.SyntaxEquivalence Fiat.Common.PointedProp Fiat.Common.OptionFacts Fiat.Common.Prod Fiat.Common.Sigma Fiat.Common