proposition: Corollary refine_QueryIn_Where_True {m : nat} {qs_schema : RawQueryStructureSchema} (schemaIdx : Fin.t _) (attrIdx : Fin.t _) a_proj el (r_o : UnConstrQueryStructure qs_schema) (r_n : UnConstrQueryStructure qs_schema * UnConstrQueryStructure (DecomposeRawQueryStructureSchema m qs_schema schemaIdx attrIdx)) (r_o_r_n_AbsR : DecomposeRawQueryStructureSchema_AbsR schemaIdx attrIdx a_proj el r_o r_n) {ResultT : Type} (body : @RawTuple _ -> Comp (list ResultT)) idx : refine (UnConstrQuery_In r_o schemaIdx (fun tup => Where (a_proj (GetAttributeRaw tup attrIdx) = a_proj idx) (body tup))) (UnConstrQuery_In (snd r_n) (a_proj idx) (fun tup => body (Tuple_DecomposeRawQueryStructure_inj _ _ (el (a_proj idx)) _ tup))).
proof: Proof. etransitivity. apply refine_UnConstrQuery_In; intro. apply refine_Query_Where_Cond with (Q := (a_proj (GetAttributeRaw a attrIdx) = a_proj idx) /\ True); intuition. setoid_rewrite refine_QueryIn_Where; eauto. apply refine_UnConstrQuery_In; intro. apply refine_Query_Where_True_Cond; 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