私は Idris と少し作業しており、確率の型を作成しました -とFloat
の間の0.0
s 1.0
:
data Probability : Type where
MkProbability : (x : Float) -> ((x >= 0.0) && (x <= 1.0) = True) -> Probability
それらを乗算できるようにしたい:
multProbability : Probability -> Probability -> Probability
multProbability (MkProbability p1 proof1) (MkProbability p2 proof2) =
MkProbability (p1 * p2) ???
p1 * p2
それが常に確率であることをどのように証明できますか?