ImaginethatCoqhadacceptedourdefinition,andconsiderhowwemightevaluate[approxbad1].Wewouldbetryingtocalculatethefirstelementinthestream[bad].However,itisnothardtoseethatthedefinitionof[bad]"begs the question":unfoldingthedefinitionof[tl],weseethatweessentiallysay"define [bad] to equal itself"!Ofcoursesuchanequationadmitsnosinglewell-definedsolution,whichdoesnotfitwellwiththedeterminismofGallinareduction.
ImaginethatCoqhadacceptedourdefinition,andconsiderhowwemightevaluate[approxbad1].Wewouldbetryingtocalculatethefirstelementinthestream[bad].However,itisnothardtoseethatthedefinitionof[bad]"begs the question":unfoldingthedefinitionof[tl],weseethatweessentiallysay"define [bad] to equal itself"!Ofcoursesuchanequationadmitsnosinglewell-definedsolution,whichdoesnotfitwellwiththedeterminismofGallinareduction.
Hencethedistinctionbetween[bool]and[Prop].Programsoftype[bool]arecomputationalbyconstruction;wecanalwaysrunthemtodeterminetheirresults.Many[Prop]sareundecidable,andsowecanwritemoreexpressiveformulaswith[Prop]sthanwith[bool]s,buttheinevitableconsequenceisthatwecannotsimply"run a [Prop] to determine its truth."
Hencethedistinctionbetween[bool]and[Prop].Programsoftype[bool]arecomputationalbyconstruction;wecanalwaysrunthemtodeterminetheirresults.Many[Prop]sareundecidable,andsowecanwritemoreexpressiveformulaswith[Prop]sthanwith[bool]s,buttheinevitableconsequenceisthatwecannotsimply"run a [Prop] to determine its truth."