proposition: Corollary DecomposeRawQueryStructureSchema_UpdateUnConstrRelationInsertC_eq {m : nat} {qs_schema : QueryStructureSchema} {ResultT} : forall (schemaIdx : Fin.t _) (attrIdx : Fin.t _) a_proj el r_o r_n (k : UnConstrQueryStructure qs_schema -> Comp ResultT) (k' : _ -> Comp ResultT), DecomposeRawQueryStructureSchema_AbsR (qs_schema := qs_schema) (m := m) schemaIdx attrIdx a_proj el r_o r_n -> forall freshIdx tup, UnConstrFreshIdx (GetUnConstrRelation (fst r_n) schemaIdx) freshIdx -> (forall r_o' r_n', DecomposeRawQueryStructureSchema_AbsR schemaIdx attrIdx a_proj el r_o' r_n' -> refine (k r_o') (k' r_n')) -> refine (r_o' <- UpdateUnConstrRelationInsertC r_o schemaIdx {| elementIndex := freshIdx; indexedElement := tup |}; k r_o') (r_n' <- UpdateUnConstrRelationInsertC (fst r_n) schemaIdx {| elementIndex := freshIdx; indexedElement := tup |}; r_n'' <- UpdateUnConstrRelationInsertC (snd r_n) (a_proj (GetAttributeRaw tup attrIdx)) {| elementIndex := freshIdx; indexedElement := Tuple_DecomposeRawQueryStructure_proj _ _ a_proj tup |} ; k' (r_n', r_n'')).
proof: Proof. Local Transparent UpdateUnConstrRelationInsertC. unfold UpdateUnConstrRelationInsertC; intros. repeat rewrite refineEquiv_bind_unit. rewrite H1. reflexivity. simpl; eapply DecomposeRawQueryStructureSchema_Insert_AbsR_eq; eauto. 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