Synopsis: simple probability operations, for use with imprecise information Module: dfmc-probabilities Author: Paul Haahr Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: Functional Objects Library Public License Version 1.0 Dual-license: GNU Lesser General Public License Warranty: Distributed WITHOUT WARRANTY OF ANY KIND define constant = ; define constant $probability-false = as(, 0); define constant $probability-maybe = as(, 0.5); // canonical define constant $probability-true = as(, 1); // TODO: ensure we don't get silent rounding to one define method probability-not (p :: ) => (not-p :: ) $probability-true - p end method probability-not; define method probability-and (p :: , q :: ) => (p-and-q :: ) p * q end method probability-and; define method probability-or (p :: , q :: ) => (p-or-q :: ) p + q - p * q end method probability-or;