fact: Definition refinedUnderDelegates (Sig : ADTSig) (spec : ADT Sig) (dadt : DelegationADT Sig) := forall (DelegateReps : Fin.t (DelegateeIDs dadt) -> Type) (DelegateConsImpls : forall idx (cidx : ConstructorIndex (DelegateeSigs dadt idx)), constructorType (DelegateReps idx) (ConstructorDom _ cidx)) (DelegateMethImpls : forall idx (midx : MethodIndex (DelegateeSigs dadt idx)), methodType (DelegateReps idx) (fst (MethodDomCod _ midx)) (snd (MethodDomCod _ midx))) (DelegateImpls := fun idx => {| Rep := DelegateReps idx; Constructors := DelegateConsImpls idx; Methods := DelegateMethImpls idx |}) (ValidImpls : forall idx : Fin.t (DelegateeIDs dadt), refineADT (DelegateeSpecs dadt idx) (DelegateImpls idx)), refineADT spec (DelegatedImplementation dadt DelegateReps DelegateConsImpls DelegateMethImpls).
imports: Fiat.QueryStructure.Automation.MasterPlan Bedrock.Memory