proposition: Corollary refine_UnConstrFreshIdx_DecomposeRawQueryStructureSchema_AbsR_Equiv' {m : nat} {qs_schema : RawQueryStructureSchema} (schemaIdx : Fin.t _) (attrIdx : Fin.t _) (a : Vector.t Type m) (a_proj_index : Vector.nth (AttrList (GetNRelSchemaHeading (qschemaSchemas qs_schema) schemaIdx)) attrIdx -> Fin.t m) (a_proj : forall (attr : Vector.nth _ attrIdx), a[@a_proj_index attr]) (a_inj : forall idx, Vector.nth a idx -> Vector.nth (AttrList (GetNRelSchemaHeading (qschemaSchemas qs_schema) schemaIdx)) attrIdx) (r_o : UnConstrQueryStructure qs_schema) (r_n : UnConstrQueryStructure qs_schema * UnConstrQueryStructure (DecomposeRawQueryStructureSchema qs_schema schemaIdx attrIdx a)) : DecomposeRawQueryStructureSchema_AbsR schemaIdx attrIdx a a_proj_index a_proj a_inj r_o r_n -> forall Ridx idx', computes_to {idx : nat | UnConstrFreshIdx (GetUnConstrRelation r_o Ridx) idx} idx' -> UnConstrFreshIdx (GetUnConstrRelation (fst r_n) Ridx) idx'.
proof: Proof. intros. computes_to_inv. rewrite <- UnConstrFreshIdx_Same_Set_Equiv; eauto. apply (proj1 H Ridx). Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.Vectors.Vector Coq.Strings.Ascii Coq.Bool.Bool Coq.Lists.List Fiat.Common.SumType Fiat.Computation.ListComputations Fiat.QueryStructure.Automation.AutoDB Bedrock.Word Bedrock.Memory