[ANN] Logic Expressions v2.1

Daniel Altman daniel.altman at gmail.com
Fri Jun 30 12:31:22 UTC 2006


Hi Alex, may be I wasn't clear but this package IS NOT a functional 
language.
It is just a model of logic expressions that make it posible to use them as 
objects instead of strings, evaluating them and operating with them.

More examples:

If you want to see if  "(p => q)" holds for any combination of true/false 
values, you can do:

    exp := LExpression fromString: '{p => q}'.
    exp value: {'p' -> true. 'q' -> true}.
    ...
    exp value: {'p' -> false. 'q' -> false}.

Then you can for example combine that expression with "or z" to get a new 
expression:

    expOrZ := exp | (LVariable named: #z).

And you will get an object that represents the expression "((p => q) or z)".


Another important feature is the ability to use blocks as predicates of the 
expressions, for example:

    expEven := LExpression fromString: '{[x even]}'.
    expEven valueVariable: 2 --> true
    expEven valueVariable: 1 --> false


Hope this clarify things
Dany




"Alexandre Bergel" <Alexandre.Bergel at cs.tcd.ie> wrote in message 
news:F52750B6-1953-41B5-A3B4-C1DB53D4A828 at cs.tcd.ie...
>> Hi all, after a lot of time, a new version of Logic Expressions is now
>> available on SqueakMap.
>
> How would you write the N-Queens in your Prolog-like language ?
> http://www.sics.se/sicstus/docs/3.12.5/html/sicstus/N-Queens.html
>
> Cheers,
> Alexandre
>
>
>>
>>
>>> From the package description:
>>
>> This is a model of first order logic expressions, allowing you to 
>> manipulate
>> them as objects instead of just strings.
>>
>> Prerequisites:
>>     -Refactoring Browser
>>     -SmaCC Runtime Package
>>     -SmaCC Development Package
>>
>> Inspect the following lines to get the expression corresponding
>> to "(p => q) = (not p or q)":
>>      | p q |
>>      p := LVariable named: 'p'.
>>      q := LVariable named: 'q'.
>>      p => q equiv: (p not | q).
>>
>> Now, the same formula could be created using:
>>      LExpression fromString: '{p=>q = not p or q}'
>>
>> More complex formulas can also be created and evaluated, for  example 
>> try:
>>      | exp |
>>      exp := LExpression fromString: '{V(x)[x even]}'.
>>      exp valueDomains: {'x' -> #(2 4 6 8 10 12 )}.
>>
>> See more examples in the Logic-Tests category.
>>
>> I hope you enjoy it!
>> Dany
>>
>>
>>
>>
>>
>
> -- 
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.cs.tcd.ie/Alexandre.Bergel
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
> 






More information about the Squeak-dev mailing list