I am not completely sure I follow the math here, so I threw together a
crude symbolic version (which builds expressions rather than computes
results).


paren=: ('(', ], ')'"_)^:(1 ~: #@;:)
ident=:2 :0
:
  if. n -: x do. y
  elseif. n -: y do. x
  elseif. 1 do. x u y
  end.
)
zero=:2 :0
:
  if. n -: x do. n
  elseif. n -: y do. n
  elseif. 1 do. x u y
  end.
)
rident=:2 :0
:
  if. n -: y do. x
  else. x u y
  end.
)

add=: (paren@[, '+', ])&": ident 0 &.>
sub=: (paren@[, '-', ])&": rident 0 &.>
mul=: (paren@[, '*', ])&": ident 1 zero 0 &.>
div=: (paren@[, '%', ])&": rident 1 &.>
sqrt=: '%:'&,&":&.>


deduce =: *`%/"2@(,:(%:@*-.))@((,:,1:)%+/@[)
predict=: (deduce~-@>:)~
induce =: (,:0:)+[predict(-+/)~

deduce =: mul`div/"2@(,:(sqrt@mul 1&sub))@((,:,(<1)"_)div add/@[)&(add&0)
predict=: (deduce~ 0&sub@(1&add))~
induce =: (,:(<0)"_)&(0&add)add[predict(sub add/)~

a =: 20 5 0

(I'm doing crude stuff like adding 0 to normalize argument formats,
and using 0-x to represent negation.)

Anyways, I'm still not completely comfortable with this
representation.  I think I am uncomfortable with the way that
probabilities get mixed in with expected values, but I'm not
completely sure.  Mostly, I think it's that I do not have the time to
really think this through.

Still, maybe this is of use to someone else...

-- 
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to