fact: Definition Sharpen_w_Delegates' : forall (DelegateIDs : nat) (AbstractReps : Fin.t DelegateIDs -> Type) (pRepT : (Fin.t DelegateIDs -> Type) -> Type) (n n' : nat) (consSigs : Vector.t consSig n) (methSigs : Vector.t methSig n') (consDefs : ilist consSigs) (methDefs : ilist methSigs) (numDelegateConstructors : Fin.t DelegateIDs -> nat) (DelegateConstructorSigs : forall idx : Fin.t DelegateIDs, Vector.t consSig (numDelegateConstructors idx)) (numDelegateMethods : Fin.t DelegateIDs -> nat) (DelegateMethodSigs : forall idx : Fin.t DelegateIDs, Vector.t methSig (numDelegateMethods idx)) (cConstructors : forall DelegateReps : Fin.t DelegateIDs -> Type, (forall (idx : Fin.t DelegateIDs) (cidx : ConstructorIndex ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx)), constructorType (DelegateReps idx) (ConstructorDom ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx) cidx)) -> (forall (idx : Fin.t DelegateIDs) (midx : MethodIndex ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx)), methodType (DelegateReps idx) (fst (MethodDomCod ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx) midx)) (snd (MethodDomCod ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx) midx))) -> ilist (B := consDef (Rep := pRepT AbstractReps)) consSigs) (cMethods : forall DelegateReps : Fin.t DelegateIDs -> Type, (forall (idx : Fin.t DelegateIDs) (cidx : ConstructorIndex ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx)), constructorType (DelegateReps idx) (ConstructorDom ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx) cidx)) -> (forall (idx : Fin.t DelegateIDs) (midx : MethodIndex ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx)), methodType (DelegateReps idx) (fst (MethodDomCod ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx) midx)) (snd (MethodDomCod ((fun idx0 : Fin.t DelegateIDs => DecADTSig ((fun idx1 : Fin.t DelegateIDs => BuildADTSig (DelegateConstructorSigs idx1) (DelegateMethodSigs idx1)) idx0)) idx) midx))) -> ilist (B := methDef (Rep := pRepT AbstractReps)) methSigs) zeke, refinedUnderDelegates (BuildADT (Rep := pRepT AbstractReps) consDefs methDefs) zeke.
imports: Fiat.QueryStructure.Automation.MasterPlan Bedrock.Memory